Menetapkan peran Azure menggunakan REST API

Kontrol akses berbasis peran Azure (Azure RBAC) adalah sistem otorisasi yang Anda gunakan untuk mengelola akses ke sumber daya Azure. Untuk memberikan akses, Anda menetapkan peran kepada pengguna, grup, perwakilan layanan, atau identitas terkelola pada cakupan tertentu. Artikel ini menjelaskan cara menetapkan peran menggunakan REST API.

Prasyarat

Untuk menetapkan peran Azure, Anda harus memiliki:

Anda harus menggunakan versi berikut:

  • 2015-07-01 atau yang lebih baru untuk menetapkan peran Azure
  • 2018-09-01-preview atau yang lebih baru untuk menetapkan peran Azure ke perwakilan layanan baru

Untuk informasi selengkapnya, lihat API versi REST API Azure RBAC.

Menetapkan peran Azure

Untuk menetapkan peran, gunakan Penetapan Peran - Buat REST API dan tentukan keamanan utama, definisi peran, dan cakupan. Untuk memanggil API ini, Anda harus memiliki akses ke Microsoft.Authorization/roleAssignments/write tindakan, seperti Administrator Kontrol Akses Berbasis Peran.

  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/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
    
    {
      "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}"
      }
    }
    
  4. Dalam URI, ganti {cakupan} dengan cakupan untuk penetapan peran.

    Cakupan Jenis
    providers/Microsoft.Management/managementGroups/{groupId1} Grup manajemen
    subscriptions/{subscriptionId1} Langganan
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Grup sumber daya
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Sumber Daya

    Dalam contoh sebelumnya, microsoft.web adalah penyedia sumber daya yang merujuk ke instans App Service. Demikian pula, Anda dapat menggunakan penyedia sumber daya lain dan menentukan cakupannya. Untuk mengetahui informasi selengkapnya, lihat Penyedia sumber daya Azure dan jenis serta operasi penyedia sumber daya Azure yang didukung.

  5. Ganti {roleAssignmentId} dengan pengidentifikasi GUID dari penetapan peran.

  6. Dalam isi permintaan, ganti {scope} dengan cakupan yang sama seperti di URI.

  7. Ganti {roleDefinitionId} dengan pengidentifikasi definisi peran.

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

Permintaan dan isi berikut menetapkan peran Pembaca Microsoft Azure Backup kepada pengguna di cakupan langganan:

PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
    "principalId": "{objectId1}"
  }
}

Berikut ini menunjukkan contoh output:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
        "principalId": "{objectId1}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId1}",
        "condition": null,
        "conditionVersion": null,
        "createdOn": "2022-05-06T23:55:23.7679147Z",
        "updatedOn": "2022-05-06T23:55:23.7679147Z",
        "createdBy": null,
        "updatedBy": "{updatedByObjectId1}",
        "delegatedManagedIdentityResourceId": null,
        "description": null
    },
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId1}"
}

Perwakilan layanan baru

Jika Anda membuat perwakilan layanan baru dan ingin segera mencoba menetapkan peran untuk perwakilan layanan tersebut, penetapan peran tersebut dapat gagal pada beberapa kasus. Misalnya, jika Anda membuat identitas terkelola baru lalu mencoba menetapkan peran ke perwakilan layanan tersebut, penetapan peran mungkin gagal. Penyebab kegagalan ini kemungkinan adalah penundaan replikasi. Perwakilan layanan dibuat di satu wilayah; namun, penetapan peran mungkin dilakukan di wilayah lain yang belum mereplikasi perwakilan layanan.

Untuk mengatasi skenario ini, gunakan Penetapan Peran - Buat REST API dan set principalType properti ke ServicePrincipal. Anda juga harus mengeset apiVersion ke 2018-09-01-preview atau nanti. 2022-04-01 adalah versi stabil pertama.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
    "principalId": "{principalId}",
    "principalType": "ServicePrincipal"
  }
}

Langkah berikutnya