Menambahkan atau mengedit kondisi penetapan peran Azure menggunakan Azure PowerShell
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 tugas peran Anda menggunakan Azure PowerShell.
Prasyarat
Untuk informasi tentang prasyarat untuk menambah atau mengedit kondisi penetapan peran, lihat Prasyarat kondisi.
Menambahkan kondisi
Untuk menambahkan kondisi penetapan peran, gunakan New-AzRoleAssignment. Perintah New-AzRoleAssignment mencakup parameter berikut yang terkait dengan kondisi.
Parameter | Jenis | Deskripsi |
---|---|---|
Condition |
String | Kondisi yang menjadi syarat pengguna dapat diberikan izin. |
ConditionVersion |
String | Versi sintaks kondisi. Harus ditetapkan ke 2.0. Jika Condition ditentukan, ConditionVersion juga harus ditentukan. |
Contoh berikut menunjukkan cara untuk menginisialisasi variabel untuk menetapkan peran Storage Blob Data Reader dengan suatu kondisi. Kondisi ini memeriksa apakah nama kontainer sama dengan 'blobs-example-container'.
$subscriptionId = "<subscriptionId>"
$resourceGroup = "<resourceGroup>"
$roleDefinitionName = "Storage Blob Data Reader"
$roleDefinitionId = "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1"
$userObjectId = "<userObjectId>"
$scope = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup"
$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'))"
$conditionVersion = "2.0"
Gunakan New-AzRoleAssignment untuk menetapkan peran dengan kondisi.
New-AzRoleAssignment -ObjectId $userObjectId -Scope $scope -RoleDefinitionId $roleDefinitionId -Description $description -Condition $condition -ConditionVersion $conditionVersion
Berikut adalah contoh output-nya:
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
DisplayName : User1
SignInName : user1@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
ObjectId : <userObjectId>
ObjectType : User
CanDelegate : False
Description : Read access if container name equals blobs-example-container
ConditionVersion : 2.0
Condition : ((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))
Di PowerShell, jika kondisi Anda menyertakan tanda dolar ($), Anda harus mengawalinya dengan aksen rendah (`). Misalnya, kondisi berikut menggunakan tanda dolar untuk menguraikan nama kunci tag. Untuk informasi selengkapnya mengenai aturan untuk tanda kutip di PowerShell, lihat Mengenai Aturan Penawaran.
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
Mengedit kondisi
Untuk mengedit kondisi penetapan peran yang ada, gunakan Set-AzRoleAssignment. Hanya properti Condition
, ConditionVersion
, dan Description
saja yang dapat diedit. Parameter -PassThru
menyebabkan Set-AzRoleAssignment mengembalikan penetapan peran yang diperbarui, yang memungkinkan visualisasi atau penyimpanan dalam variabel untuk penggunaan lebih lanjut.
Ada dua cara untuk mengedit kondisi. Anda dapat menggunakan objek PSRoleAssignment
atau file JSON.
Mengedit kondisi menggunakan objek PSRoleAssignment
Gunakan Get-AzRoleAssignment untuk mendapatkan penetapan peran yang ada dengan kondisi sebagai objek
PSRoleAssignment
.$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectId
Edit kondisinya.
$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'))"
Inisialisasi kondisi dan deskripsi.
$testRa.Condition = $condition $testRa.Description = "Read access if container name equals blobs-example-container or blobs-example-container2"
Gunakan Set-AzRoleAssignment untuk memperbarui kondisi penetapan peran.
Set-AzRoleAssignment -InputObject $testRa -PassThru
Berikut adalah contoh output-nya:
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId> Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup> DisplayName : User1 SignInName : user1@contoso.com RoleDefinitionName : Storage Blob Data Reader RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1 ObjectId : <userObjectId> ObjectType : User CanDelegate : False Description : Read access if container name equals blobs-example-container or blobs-example-container2 ConditionVersion : 2.0 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'))
Mengedit kondisi menggunakan file JSON
Untuk mengedit kondisi, Anda juga dapat memberikan file JSON sebagai input. Berikut ini diperlihatkan contoh JSON ketika Condition
dan Description
diperbarui. Anda harus menentukan semua properti dalam berkas JSON untuk memperbarui sebuah kondisi.
{
"RoleDefinitionId": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
"ObjectId": "<userObjectId>",
"ObjectType": "User",
"Scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>",
"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",
"CanDelegate": false,
"Description": "Read access if container name equals blobs-example-container or blobs-example-container2",
"RoleAssignmentId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>"
}
Gunakan Set-AzRoleAssignment untuk memperbarui kondisi penetapan peran.
Set-AzRoleAssignment -InputFile "C:\path\roleassignment.json" -PassThru
Berikut adalah contoh output-nya:
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
DisplayName : User1
SignInName : user1@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
ObjectId : <userObjectId>
ObjectType : User
CanDelegate : False
Description : Read access if container name equals blobs-example-container or blobs-example-container2
ConditionVersion : 2.0
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'))
Mencantumkan kondisi
Untuk mencantumkan kondisi penetapan peran, gunakan New-AzRoleAssignment. Untuk informasi selengkapnya, lihat Mencantumkan penetapan peran Azure menggunakan Azure PowerShell.
Menghapus kondisi
Untuk menghapus kondisi penetapan peran, edit kondisi penetapan peran dan atur properti Condition
dan ConditionVersion
baik ke untai (karakter) kosong (""
) atau $null
.
Atau, jika Anda ingin menghapus baik penetapan peran dan kondisinya, Anda dapat menggunakan perintah Remove-AzRoleAssignment. Untuk informasi selengkapnya, lihat Menghapus penetapan peran Azure.