Lägga till eller redigera villkor för Azure-rolltilldelning med hjälp av REST-API:et
Ett Villkor för Azure-rolltilldelning är ytterligare en kontroll som du kan lägga till i rolltilldelningen för att ge mer detaljerad åtkomstkontroll. Du kan till exempel lägga till ett villkor som kräver att ett objekt har en specifik tagg för att läsa objektet. I den här artikeln beskrivs hur du lägger till, redigerar, listar eller tar bort villkor för dina rolltilldelningar med hjälp av REST-API:et.
Förutsättningar
Du måste använda följande versioner:
2020-03-01-preview
eller senare2020-04-01-preview
eller senare om du vill använda egenskapendescription
för rolltilldelningar2022-04-01
är den första stabila versionen
Mer information om kraven för att lägga till eller redigera rolltilldelningsvillkor finns i Villkorskrav.
Lägg till ett villkor
Om du vill lägga till ett rolltilldelningsvillkor använder du Rolltilldelningar – Skapa REST API. Rolltilldelningar – Skapa innehåller följande parametrar som rör villkor.
Parameter | Typ | Description |
---|---|---|
condition |
String | Villkor under vilket användaren kan beviljas behörighet. |
conditionVersion |
String | Version av villkorssyntaxen. Om condition anges utan conditionVersion anges versionen till standardvärdet 2.0. |
Använd följande begäran och brödtext:
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}"
}
}
I följande exempel visas hur du tilldelar rollen Storage Blob Data Reader med ett villkor. Villkoret kontrollerar om containernamnet är lika med "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"
}
}
Följande visar ett exempel på utdata:
{
"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}"
}
Redigera ett villkor
Om du vill redigera ett befintligt rolltilldelningsvillkor använder du samma rolltilldelningar – Skapa REST API som du använde för att lägga till rolltilldelningsvillkoret. Följande visar ett exempel på JSON där condition
och description
uppdateras. condition
Endast egenskaperna , conditionVersion
och description
kan redigeras. Du måste ange de andra egenskaperna för att matcha den befintliga rolltilldelningen.
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"
}
}
Lista ett villkor
Om du vill visa en lista över ett rolltilldelningsvillkor använder du REST API för rolltilldelningar hämta eller lista. Mer information finns i Lista Azure-rolltilldelningar med hjälp av REST-API:et.
Ta bort ett villkor
Om du vill ta bort ett rolltilldelningsvillkor redigerar du rolltilldelningsvillkoret och anger både villkors- och villkorsversionen till antingen en tom sträng eller null.
Om du vill ta bort både rolltilldelningen och villkoret kan du också använda API:et Rolltilldelningar – Ta bort . Mer information finns i Ta bort Azure-rolltilldelningar.