Menambahkan atau mengedit kondisi penetapan peran Azure menggunakan REST API

Kondisi penetapan peran Azure adalah pemeriksaan tambahan yang dapat Anda tambahkan secara opsional ke penetapan peran milik Anda untuk memberikan kontrol akses yang lebih terperinci. Misalnya, Anda dapat menambahkan kondisi yang mengharuskan objek memiliki tag tertentu untuk membaca objek. Artikel ini menjelaskan cara menambahkan, mengedit, mencantumkan, atau menghapus kondisi untuk penetapan peran Anda menggunakan REST API.

Prasyarat

Anda harus menggunakan versi berikut:

  • 2020-03-01-preview atau yang lebih baru
  • 2020-04-01-preview atau yang lebih baru jika Anda ingin menggunakan description properti untuk penetapan peran
  • 2022-04-01 adalah versi stabil pertama

Untuk informasi selengkapnya tentang prasyarat untuk menambahkan atau mengedit kondisi penetapan peran, lihat Prasyarat kondisi.

Menambahkan kondisi

Untuk menambahkan kondisi penetapan peran, gunakan Role Assignments - Buat REST API. Penetapan Peran - Buat menyertakan parameter berikut yang terkait dengan kondisi.

Parameter Jenis Deskripsi
condition String Kondisi yang menjadi syarat pengguna dapat diberikan izin.
conditionVersion String Versi sintaks kondisi. Jika condition ditentukan tanpa conditionVersion, versi diatur ke nilai default 2.0.

Gunakan 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}",
        "condition": "{condition}",
        "conditionVersion": "2.0",
        "description": "{description}"
    }
}

Contoh berikut menunjukkan cara menetapkan peran Storage Blob Data Reader dengan kondisi. Kondisi ini memeriksa apakah nama kontainer sama dengan 'blobs-example-container'.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container"
    }
}

Berikut ini menunjukkan contoh output:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "createdOn": "2022-07-20T06:20:44.0205560Z",
        "updatedOn": "2022-07-20T06:20:44.2955371Z",
        "createdBy": null,
        "updatedBy": "{updatedById}",
        "delegatedManagedIdentityResourceId": null,
        "description": "Read access if container name equals blobs-example-container"
    },
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId}"
}

Mengedit kondisi

Untuk mengedit kondisi penetapan peran yang ada, gunakan Role Assignments yang sama - Buat REST API seperti yang Anda gunakan untuk menambahkan kondisi penetapan peran. Berikut ini memperlihatkan contoh JSON ketika condition dan description diperbarui. Hanya properti condition, conditionVersion, dan description saja yang dapat diedit. Anda harus menentukan properti lain agar sesuai dengan penetapan peran yang ada.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container or blobs-example-container2"
    }
}

Mencantumkan kondisi

Untuk mencantumkan kondisi penetapan peran, gunakan Rest API Penetapan Peran atau Daftar. Untuk informasi selengkapnya, lihat Penetapan peran List Azure menggunakan REST API.

Menghapus kondisi

Untuk menghapus kondisi penetapan peran, edit kondisi penetapan peran dan atur kondisi dan versi kondisi ke string kosong atau null.

Atau, jika ingin menghapus role assignment dan kondisi, Anda dapat menggunakan Role Assignments - Delete API. Untuk informasi selengkapnya, lihat Menghapus penetapan peran Azure.

Langkah berikutnya