Aggiungere o modificare condizioni di assegnazione di ruolo di Azure usando l'interfaccia della riga di comando di Azure

Una condizione di assegnazione di ruolo di Azure è un controllo aggiuntivo che è possibile aggiungere facoltativamente all'assegnazione di ruolo per fornire un controllo di accesso più granulare. Ad esempio, è possibile aggiungere una condizione che richiede che un oggetto abbia un tag specifico per leggere l'oggetto. Questo articolo descrive come aggiungere, modificare, elencare o eliminare condizioni per le assegnazioni di ruolo usando l'interfaccia della riga di comando di Azure.

Prerequisiti

Per informazioni sui prerequisiti per aggiungere o modificare condizioni di assegnazione di ruolo, vedere Prerequisiti delle condizioni.

Aggiungi una condizione

Per aggiungere una condizione di assegnazione di ruolo, usare az role assignment create. Il comando az role assignment create include i parametri seguenti correlati alle condizioni.

Parametro Tipo Description
condition Stringa Condizione con cui l'utente può essere concessa l'autorizzazione.
condition-version Stringa Versione della sintassi della condizione. Se --condition viene specificato senza --condition-version, la versione viene impostata sul valore predefinito 2.0.

Nell'esempio seguente viene illustrato come assegnare il ruolo lettore dati BLOB di Archiviazione con una condizione. La condizione controlla se il nome del contenitore è uguale a "blobs-example-container".

az role assignment create --role "Storage Blob Data Reader" --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName --assignee "user1@contoso.com" \
--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'))" \
--condition-version "2.0"

Il testo seguente è un esempio di output:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Modificare una condizione

Per modificare una condizione di assegnazione di ruolo esistente, usare az role assignment update e un file JSON come input. Di seguito è illustrato un file JSON di esempio in cui vengono aggiornate le condizioni e la descrizione. È possibile modificare solo le conditionproprietà , conditionVersione description . È necessario specificare tutte le proprietà per aggiornare la condizione di assegnazione di ruolo.

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Usare az role assignment update per aggiornare la condizione per l'assegnazione di ruolo.

az role assignment update --role-assignment "./path/roleassignment.json"

Il testo seguente è un esempio di output:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Elencare una condizione

Per elencare una condizione di assegnazione di ruolo, usare az role assignment list. Per altre informazioni, vedere Elencare le assegnazioni di ruolo di Azure usando l'interfaccia della riga di comando di Azure.

Eliminare una condizione

Per eliminare una condizione di assegnazione di ruolo, modificare la condizione di assegnazione di ruolo e impostare entrambe le condition proprietà e condition-version su una stringa vuota ("") o null.

In alternativa, se si desidera eliminare sia l'assegnazione di ruolo che la condizione, è possibile usare il comando az role assignment delete . Per altre informazioni, vedere Rimuovere le assegnazioni di ruolo di Azure.

Passaggi successivi