Menggunakan Azure PIM untuk mengelola akses yang memenuhi syarat dengan REST API

Azure Privileged Identity Management (PIM) memungkinkan Anda membatasi akses administrator yang berdiri ke peran istimewa, menemukan siapa yang memiliki akses, dan meninjau akses istimewa. Artikel ini menjelaskan cara umum untuk mengelola akses menggunakan REST API.

Mencantumkan penugasan yang memenuhi syarat

Untuk mencantumkan penetapan peran yang memenuhi syarat (akses daftar), Anda dapat menggunakan salah satu Instans Jadwal Kelayakan Peran - Daftar Untuk Cakupan atau Jadwal Kelayakan Peran - Daftar Untuk Lingkup REST API. Untuk menyempurnakan hasil, Anda menentukan cakupan dan filter opsional. Untuk memanggil API, Anda harus memiliki akses ke Microsoft.Authorization/roleAssignments/read operasi pada cakupan yang ditentukan. Semua peran bawaan diberikan akses ke operasi ini.

Penting

Perbedaan antara jadwal dan instans jadwal adalah bahwa sementara instans jadwal hanya menyertakan penugasan yang aktif pada waktu saat ini, jadwal juga mencakup penugasan yang akan menjadi aktif di masa mendatang.

  1. Mulai dengan permintaan berikut:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?api-version=2020-10-01&$filter={filter}
    
    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilitySchedules?api-version=2020-10-01&$filter={filter}
    
  2. Di dalam URI, ganti {scope} dengan cakupan yang ingin Anda cantumkan penetapan perannya.

    Cakupan Jenis
    providers/Microsoft.Management/managementGroups/{mg-name} Grup Manajemen
    subscriptions/{subscriptionId} Langganan
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Grup sumber daya
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Sumber daya
  3. Ganti {filter} dengan kondisi yang ingin Anda terapkan untuk memfilter daftar penetapan peran.

    Filter Deskripsi
    $filter=atScope() Cantumkan penetapan peran hanya untuk cakupan yang ditentukan, tidak termasuk penetapan peran pada sub-cakupan.
    $filter=principalId%20eq%20'{objectId}' Mencantumkan penetapan peran untuk pengguna, grup, atau perwakilan layanan tertentu.
    $filter=roleDefinitionId%20eq%20'{roleDefinitionId}' Mencantumkan penetapan peran untuk definisi peran tertentu.
    $filter=assignedTo('{objectId}') Mencantumkan penetapan peran untuk pengguna tertentu, termasuk yang diwarisi dari grup.
    $filter=asTarget() Mencantumkan penetapan peran untuk pengguna atau perwakilan layanan saat ini, termasuk yang diwarisi dari grup.
    $filter=assignedTo('{objectId}')+and+atScope() Mencantumkan penetapan peran untuk pengguna tertentu, termasuk yang diwarisi dari grup hanya untuk cakupan yang ditentukan, tidak termasuk penetapan peran pada sub-cakupan.

Memberikan penugasan yang memenuhi syarat

Untuk membuat penetapan peran yang memenuhi syarat (memberikan akses), Anda menggunakan Permintaan Jadwal Kelayakan Peran - Buat REST API dan tentukan prinsip keamanan, definisi peran, jadwal, requestType = AdminAssign dan cakupan. Untuk memanggil API ini, Anda harus memiliki akses ke Microsoft.Authorization/roleAssignments/write operasi. Dari peran bawaan, hanya Pemilik dan Admin Akses Pengguna yang diberikan akses ke operasi ini.

  1. Gunakan Definisi Peran - Daftar REST API atau lihat Peran bawaan untuk mendapatkan pengidentifikasi untuk definisi peran yang ingin Anda tetapkan.

  2. Gunakan alat GUID untuk menghasilkan pengidentifikasi unik yang akan digunakan untuk pengidentifikasi penetapan peran. Pengidentifikasi memiliki format: 00000000-0000-0000-0000-000000000000

  3. Mulai dengan permintaan dan isi berikut:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
    
    {
      "Properties": {
        "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "PrincipalId": "{principalId}",
        "RequestType": "AdminAssign",
        "ScheduleInfo": {
          "StartDateTime": "2020-09-09T21:31:27.91Z",
          "Expiration": {
            "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration
            "EndDateTime": null,
            "Duration": "P365D" // Use ISO 8601 format
          }
        }
      }
    }
    
  4. Dalam URI, ganti {cakupan} dengan cakupan untuk penetapan peran.

    Cakupan Jenis
    providers/Microsoft.Management/managementGroups/{mg-name} Grup Manajemen
    subscriptions/{subscriptionId} Langganan
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Grup sumber daya
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Sumber daya
  5. Ganti {roleEligibilityScheduleRequestName} dengan pengidentifikasi GUID penetapan peran.

  6. Dalam isi permintaan, ganti {subscriptionId} dengan pengidentifikasi langganan Anda.

  7. Ganti {roleDefinitionId} dengan pengidentifikasi definisi peran.

  8. Ganti {principalId} dengan pengidentifikasi objek pengguna, grup, atau perwakilan layanan yang akan diberi peran.

Menghapus penugasan yang memenuhi syarat

Untuk menghapus penetapan peran yang memenuhi syarat (menghapus akses), gunakan Permintaan Jadwal Kelayakan Peran - Buat REST API untuk membuat permintaan baru untuk mencabut penugasan dan menentukan prinsip keamanan, definisi peran, requestType = AdminRemove dan cakupan. Untuk memanggil API ini, Anda harus memiliki akses ke Microsoft.Authorization/roleAssignments/write operasi. Dari peran bawaan, hanya Pemilik dan Admin Akses Pengguna yang diberikan akses ke operasi ini.

  1. Gunakan alat GUID untuk menghasilkan pengidentifikasi unik yang akan digunakan untuk pengidentifikasi penetapan peran. Pengidentifikasi memiliki format: 00000000-0000-0000-0000-000000000000

  2. Mulai dengan permintaan berikut:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
    
    {
      "Properties": {
        "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "PrincipalId": "{principalId}",
        "RequestType": "AdminRemove"
        }
    }
    
  3. Dalam URI, ganti {scope} dengan cakupan untuk penetapan peran.

    Cakupan Jenis
    providers/Microsoft.Management/managementGroups/{mg-name} Grup Manajemen
    subscriptions/{subscriptionId} Langganan
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Grup sumber daya
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 Sumber daya
  4. Ganti {roleEligibilityScheduleRequestName} dengan pengidentifikasi GUID penetapan peran.

Kesalahan umum yang dikembalikan untuk permintaan baru

Berikut ini adalah daftar kesalahan umum yang mungkin Anda temui saat membuat permintaan baru dan cara menguranginya.

Pesan kesalahan Penjelasan Mitigasi
code: RoleAssignmentExists
message: Penetapan Peran sudah ada.
Penetapan peran serupa sudah ada Anda dapat GET menetapkan peran ini dan memverifikasi jadwalnya.
code: RoleAssignmentRequestPolicyValidationFailed
message: Aturan kebijakan berikut gagal: ["ExpirationRule"]
yang ScheduleInfo ditentukan dalam permintaan melebihi durasi maksimum yang diizinkan Anda dapat GETRoleManagementPolicy untuk ini RoleDefinitionId dan memeriksa RoleManagementPolicyExpirationRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Aturan kebijakan berikut gagal: ["JustificationRule"]
Anda perlu menentukan Justification dalam isi permintaan Anda dapat GETRoleManagementPolicy untuk ini RoleDefinitionId dan memeriksa RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Aturan kebijakan berikut gagal: ["EligibilityRule"]
RoleEligibilityScheduleInstance Valid tidak ada untuk mengaktifkan peran ini Admin sumber daya perlu membuat RoleEligibilityScheduleRequest untuk prinsipal ini
code: RoleAssignmentRequestPolicyValidationFailed
message: Aturan kebijakan berikut gagal: ["TicketingRule"]
Anda perlu menentukan TicketInfo dalam isi permintaan Anda dapat GETRoleManagementPolicy untuk ini RoleDefinitionId dan memeriksa RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Aturan kebijakan berikut gagal: ["MfaRule"]
Anda perlu menyelesaikan Azure Multi-Factor Authentication untuk mengirimkan permintaan ini Anda dapat GETRoleManagementPolicy untuk ini RoleDefinitionId dan memeriksa RoleManagementPolicyEnablementRule