Share via


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 senare
  • 2020-04-01-preview eller senare om du vill använda egenskapen description för rolltilldelningar
  • 2022-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 conditionVersionanges 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. conditionEndast egenskaperna , conditionVersionoch 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.

Nästa steg