Azure-szerepkör-hozzárendelési feltételek hozzáadása vagy szerkesztése az Azure PowerShell használatával
Az Azure-szerepkör-hozzárendelési feltétel egy további ellenőrzés, amelyet igény szerint hozzáadhat a szerepkör-hozzárendeléshez, hogy részletesebb hozzáférés-vezérlést biztosítson. Hozzáadhat például egy feltételt, amely megköveteli, hogy egy objektum egy adott címkével rendelkezzen az objektum olvasásához. Ez a cikk bemutatja, hogyan adhat hozzá, szerkeszthet, listázhat vagy törölhet feltételeket a szerepkör-hozzárendelésekhez az Azure PowerShell használatával.
Előfeltételek
A szerepkör-hozzárendelési feltételek hozzáadásának vagy szerkesztésének előfeltételeiről további információt a Feltételek előfeltételei című témakörben talál.
Feltétel hozzáadása
Szerepkör-hozzárendelési feltétel hozzáadásához használja a New-AzRoleAssignment parancsot. A New-AzRoleAssignment parancs a feltételekhez kapcsolódó alábbi paramétereket tartalmazza.
Paraméter | Típus | Description |
---|---|---|
Condition |
Sztring | Az a feltétel, amely alatt a felhasználó engedélyt kaphat. |
ConditionVersion |
Sztring | A feltétel szintaxisának verziója. 2.0-ra kell állítani. Ha Condition meg van adva, ConditionVersion azt is meg kell adni. |
Az alábbi példa bemutatja, hogyan inicializálhatja a változókat a Storage Blob Data Reader szerepkör feltételhez rendeléséhez. A feltétel ellenőrzi, hogy a tároló neve "blob-example-container" értékű-e.
$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"
A New-AzRoleAssignment használatával rendelje hozzá a szerepkört egy feltételhez.
New-AzRoleAssignment -ObjectId $userObjectId -Scope $scope -RoleDefinitionId $roleDefinitionId -Description $description -Condition $condition -ConditionVersion $conditionVersion
A kimenet például a következő lehet:
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'))
A PowerShellben, ha a feltétel dollárjelet ($) tartalmaz, előtaggal (') kell előtaggal rendelkeznie. Az alábbi feltétel például dollárjelekkel tagozza a címkekulcs nevét. Az idézőjelekre vonatkozó szabályokról a PowerShellben az Idéző szabályok című témakörben talál további információt.
$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'))"
Feltétel szerkesztése
Meglévő szerepkör-hozzárendelési feltétel szerkesztéséhez használja a Set-AzRoleAssignment parancsot. Csak a Condition
, ConditionVersion
és Description
a tulajdonságok szerkeszthetők. A -PassThru
paraméter hatására a Set-AzRoleAssignment visszaadja a frissített szerepkör-hozzárendelést, amely lehetővé teszi a változók vizualizációjának vagy tárolásának további használatát.
A feltételek kétféleképpen szerkeszthetők. Használhatja az PSRoleAssignment
objektumot vagy egy JSON-fájlt.
Feltétel szerkesztése a PSRoleAssignment objektummal
A Get-AzRoleAssignment használatával lekérheti a meglévő szerepkör-hozzárendelést egy feltétellel objektumként
PSRoleAssignment
.$testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectId
Módosítsa a feltételt.
$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'))"
Inicializálja a feltételt és a leírást.
$testRa.Condition = $condition $testRa.Description = "Read access if container name equals blobs-example-container or blobs-example-container2"
A Set-AzRoleAssignment használatával frissítse a szerepkör-hozzárendelés feltételét.
Set-AzRoleAssignment -InputObject $testRa -PassThru
A kimenet például a következő lehet:
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'))
Feltétel szerkesztése JSON-fájllal
Egy feltétel szerkesztéséhez egy JSON-fájlt is megadhat bemenetként. Az alábbiakban egy JSON-példafájl látható, ahol Condition
és Description
amelyek frissülnek. Egy feltétel frissítéséhez meg kell adnia a JSON-fájl összes tulajdonságát.
{
"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>"
}
A Set-AzRoleAssignment használatával frissítse a szerepkör-hozzárendelés feltételét.
Set-AzRoleAssignment -InputFile "C:\path\roleassignment.json" -PassThru
A kimenet például a következő lehet:
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'))
Feltétel listázása
Egy szerepkör-hozzárendelési feltétel listázásához használja a Get-AzRoleAssignment parancsot. További információ: Azure-szerepkör-hozzárendelések listázása az Azure PowerShell használatával.
Feltétel törlése
Szerepkör-hozzárendelési feltétel törléséhez szerkessze a szerepkör-hozzárendelés feltételét, és állítsa be a Condition
tulajdonságokat ConditionVersion
üres sztringre (""
) vagy $null
.
Ha a szerepkör-hozzárendelést és a feltételt is törölni szeretné, használhatja a Remove-AzRoleAssignment parancsot. For more information, see Remove Azure role assignments.