Menambahkan atau mengedit kondisi penetapan peran Azure menggunakan Azure CLI

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 Azure CLI.

Prasyarat

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

Menambahkan kondisi

Untuk menambahkan kondisi penetapan peran, gunakan az role assignment create. Perintah az role assignment create mencakup parameter berikut yang terkait dengan kondisi.

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

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

az role assignment create --role "Storage Blob Data Reader" --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName --assignee "user1@contoso.com" \
--description "Read access if container name equals blobs-example-container" \
--condition "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))" \
--condition-version "2.0"

Berikut ini menunjukkan contoh output:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Mengedit kondisi

Untuk mengedit kondisi penetapan peran yang ada, gunakan az role assignment update dan file JSON sebagai input. Berikut ini memperlihatkan contoh file JSON tempat kondisi dan deskripsi diperbarui. Hanya properti condition, conditionVersion, dan description saja yang dapat diedit. Anda harus menentukan semua properti untuk memperbarui kondisi penetapan peran.

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Gunakan az role assignment update untuk memperbarui kondisi penetapan peran.

az role assignment update --role-assignment "./path/roleassignment.json"

Berikut ini menunjukkan contoh output:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Mencantumkan kondisi

Untuk mencantumkan kondisi penetapan peran, gunakan az role assignment list. Untuk informasi selengkapnya, lihat Mencantumkan penetapan peran menggunakan Azure RBAC dan Azure CLI.

Menghapus kondisi

Untuk menghapus kondisi penetapan peran, edit kondisi penetapan peran dan atur properti condition dan condition-version baik ke untai (karakter) kosong ("") atau null.

Atau, jika Anda ingin menghapus penetapan peran dan kondisi, Anda dapat menggunakan perintah az role assignment delete. Untuk informasi selengkapnya, lihat Menghapus penetapan peran Azure.

Langkah berikutnya