Aggiungere o modificare le condizioni di assegnazione di ruolo di Azure usando l'API REST

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'API REST.

Prerequisiti

È necessario usare le versioni seguenti:

  • 2020-03-01-preview o versioni successive
  • 2020-04-01-preview o versioni successive se si desidera utilizzare la description proprietà per le assegnazioni di ruolo
  • 2022-04-01 è la prima versione stabile

Per altre 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 l'API REST Assegnazioni di ruolo - Crea . Assegnazioni di ruolo: crea include i parametri seguenti correlati alle condizioni.

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

Usare la richiesta e il corpo seguenti:

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}"
    }
}

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".

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"
    }
}

Il testo seguente è un esempio di output:

{
    "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}"
}

Modificare una condizione

Per modificare una condizione di assegnazione di ruolo esistente, usare le stesse assegnazioni di ruolo - Creare l'API REST usata per aggiungere la condizione di assegnazione di ruolo. Di seguito è riportato un esempio json in cui condition e description vengono aggiornati. È possibile modificare solo le conditionproprietà , conditionVersione description . È necessario specificare le altre proprietà in modo che corrispondano all'assegnazione di ruolo esistente.

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"
    }
}

Elencare una condizione

Per elencare una condizione di assegnazione di ruolo, usare l'API REST Get o List Assignments.To list a role assignment condition, use the Role Assignments Get or List REST API. Per altre informazioni, vedere Elencare le assegnazioni di ruolo di Azure usando l'API REST.

Eliminare una condizione

Per eliminare una condizione di assegnazione di ruolo, modificare la condizione di assegnazione del ruolo e impostare sia la condizione che la versione della condizione su una stringa vuota o null.

In alternativa, se si vuole eliminare sia l'assegnazione di ruolo che la condizione, è possibile usare l'API Assegnazioni di ruolo - Eliminazione . Per altre informazioni, vedere Rimuovere le assegnazioni di ruolo di Azure.

Passaggi successivi