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

  1. A Get-AzRoleAssignment használatával lekérheti a meglévő szerepkör-hozzárendelést egy feltétellel objektumkéntPSRoleAssignment.

    $testRa = Get-AzRoleAssignment -Scope $scope -RoleDefinitionName $roleDefinitionName -ObjectId $userObjectId
    
  2. 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'))"
    
  3. 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"
    
  4. 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.

Következő lépések