Assegnare i ruoli di Azure usando l'interfaccia della riga di comando di Azure

Il controllo degli accessi in base al ruolo di Azure è il sistema di autorizzazione che si usa per gestire l'accesso alle risorse di Azure. Per concedere l'accesso, assegnare ruoli a utenti, gruppi, entità servizio o identità gestite in un ambito specifico. Questo articolo descrive come assegnare ruoli usando l'interfaccia della riga di comando di Azure.

Prerequisiti

Per assegnare ruoli, è necessario disporre di:

Procedura per assegnare un ruolo di Azure

Per assegnare un ruolo è costituito da tre elementi: entità di sicurezza, definizione del ruolo e ambito.

Passaggio 1: Determinare chi deve accedere

È possibile assegnare un ruolo a un utente, a un gruppo, a un'entità servizio o a un'identità gestita. Per assegnare un ruolo, potrebbe essere necessario specificare l'ID univoco dell'oggetto. Il formato dell'ID è il seguente: 11111111-1111-1111-1111-111111111111. È possibile ottenere l'ID usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Utente

Per un utente di Microsoft Entra, ottenere il nome dell'entità utente, ad esempio patlong@contoso.com o l'ID oggetto utente. Per ottenere l'ID oggetto, è possibile usare az ad user show.

az ad user show --id "{principalName}" --query "id" --output tsv

Raggruppa

Per un gruppo Microsoft Entra, è necessario l'ID oggetto gruppo. Per ottenere l'ID oggetto, è possibile usare az ad group show o az ad group list.

az ad group show --group "{groupName}" --query "id" --output tsv

Entità servizio

Per un'entità servizio Microsoft Entra (identità usata da un'applicazione), è necessario l'ID oggetto entità servizio. Per ottenere l'ID oggetto, è possibile usare az ad sp list. Per un'entità servizio usare l'ID oggetto, non l'ID applicazione.

az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"

Identità gestita

Per un'identità gestita assegnata dal sistema o assegnata dall'utente, è necessario l'ID oggetto. Per ottenere l'ID oggetto, è possibile usare az ad sp list.

az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"

Per elencare solo le identità gestite assegnate dall'utente, è possibile usare az identity list.

az identity list

Passaggio 2: Selezionare il ruolo appropriato

Le autorizzazioni vengono raggruppate in ruoli. È possibile selezionare da un elenco di diversi ruoli predefiniti di Azure oppure è possibile usare ruoli personalizzati. È consigliabile concedere l'accesso con i privilegi minimi necessari, quindi evitare di assegnare un ruolo più ampio.

Per elencare i ruoli e ottenere l'ID ruolo univoco, è possibile usare az role definition list.

az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv

Ecco come elencare i dettagli di un ruolo specifico.

az role definition list --name "{roleName}"

Per altre informazioni, vedere Elencare le definizioni dei ruoli di Azure.

Passaggio 3: Identificare l'ambito necessario

Azure offre quattro livelli di ambito: risorsa, gruppo di risorse, sottoscrizione e gruppo di gestione. È consigliabile concedere l'accesso con i privilegi minimi necessari, quindi evitare di assegnare un ruolo a un ambito più ampio. Per altre informazioni sull'ambito, vedere Informazioni sull'ambito.

Ambito risorsa

Per l'ambito della risorsa, è necessario l'ID risorsa per la risorsa. È possibile trovare l'ID risorsa esaminando le proprietà della risorsa nella portale di Azure. Un ID risorsa ha il formato seguente.

/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}

Ambito del gruppo di risorse

Per l'ambito del gruppo di risorse, è necessario il nome del gruppo di risorse. È possibile trovare il nome nella pagina Gruppi di risorse nella portale di Azure oppure usare az group list.

az group list --query "[].{name:name}" --output tsv

Ambito della sottoscrizione

Per l'ambito della sottoscrizione, è necessario l'ID sottoscrizione. È possibile trovare l'ID nella pagina Sottoscrizioni nel portale di Azure oppure usare az account list.

az account list --query "[].{name:name, id:id}" --output tsv

Ambito del gruppo di gestione

Per l'ambito del gruppo di gestione, è necessario il nome del gruppo di gestione. È possibile trovare il nome nella pagina Gruppi di gestione nella portale di Azure oppure usare az account management-group list.

az account management-group list --query "[].{name:name, id:id}" --output tsv

Passaggio 4: Assegnare il ruolo

Per assegnare un ruolo, usare il comando az role assignment create . A seconda dell'ambito, il comando ha in genere uno dei formati seguenti.

Ambito risorsa

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"

Ambito del gruppo di risorse

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

Ambito della sottoscrizione

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"

Ambito del gruppo di gestione

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"

Di seguito viene illustrato un esempio dell'output quando si assegna il ruolo Collaboratore macchina virtuale a un utente nell'ambito di un gruppo di risorse.

{
  "canDelegate": null,
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
  "name": "{roleAssignmentId}",
  "principalId": "{principalId}",
  "principalType": "User",
  "resourceGroup": "{resourceGroupName}",
  "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
  "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "type": "Microsoft.Authorization/roleAssignments"
}

Assegnare esempi di ruolo

Assegnare un ruolo per tutti i contenitori BLOB nell'ambito di una risorsa dell'account di archiviazione

Assegna il ruolo Collaboratore dati BLOB Archiviazione a un'entità servizio con ID oggetto 55555555-5555-5555-5555-555555555 in un ambito di risorsa per un account di archiviazione denominato storage12345.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

Assegnare un ruolo per un ambito di risorsa contenitore BLOB specifico

Assegna il ruolo Collaboratore dati BLOB Archiviazione a un'entità servizio con ID oggetto 55555555-5555-5555-5555-555555555 in un ambito di risorsa per un contenitore BLOB denominato blob-container-01.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"

Assegnare un ruolo per un gruppo in un ambito di risorse di rete virtuale specifico

Assegna il ruolo Collaboratore macchina virtuale al gruppo Ann Mack Team con ID 222222222-2222-2222-2222-22222222222222 in un ambito di risorsa per una rete virtuale denominata pharma-sales-project-network.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"

Assegnare un ruolo per un utente nell'ambito di un gruppo di risorse

Assegna il ruolo Collaboratore macchina virtuale all'utente patlong@contoso.com nell'ambito del gruppo di risorse pharma-sales .

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Assegnare un ruolo per un utente usando l'ID ruolo univoco in un ambito del gruppo di risorse

Esistono un paio di volte in cui un nome di ruolo può cambiare, ad esempio:

  • Si sta usando il proprio ruolo personalizzato e si decide di modificare il nome.
  • Si usa un ruolo di anteprima con (anteprima) nel nome. Quando il ruolo viene rilasciato, il ruolo viene rinominato.

Anche se un ruolo viene rinominato, l'ID ruolo non cambia. Se si usano script o automazione per creare le assegnazioni di ruolo, è consigliabile usare l'ID ruolo univoco anziché il nome del ruolo. Pertanto, se un ruolo viene rinominato, è più probabile che gli script funzionino.

Nell'esempio seguente viene assegnato il ruolo Collaboratore macchina virtuale all'utente patlong@contoso.com nell'ambito del gruppo di risorse pharma-sales .

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Assegnare un ruolo per tutti i contenitori BLOB nell'ambito di un gruppo di risorse

Assegna il ruolo Collaboratore dati BLOB Archiviazione a un'entità servizio con ID oggetto 55555555-5555-5555-5555-555555555 nell'ambito del gruppo di risorse Example-Archiviazione-rg.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"

Assegnare un ruolo per un'applicazione nell'ambito di un gruppo di risorse

Assegna il ruolo Collaboratore macchina virtuale a un'applicazione con ID oggetto entità servizio 44444444-4444-4444-4444-444444444444444 nell'ambito del gruppo di risorse pharma-sales .

az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Assegnare un ruolo per una nuova entità servizio nell'ambito di un gruppo di risorse

Se si crea una nuova entità servizio e si prova ad assegnare subito un ruolo a tale entità, in alcuni casi l'assegnazione di ruolo può avere esito negativo. Ad esempio, se si usa uno script per creare una nuova identità gestita e quindi si tenta di assegnare un ruolo a tale entità servizio, l'assegnazione di ruolo potrebbe non riuscire. Il motivo di questo errore è probabilmente un ritardo di replica. L'entità servizio viene creata in un'area. L'assegnazione di ruolo potrebbe tuttavia verificarsi in un'area diversa che non ha ancora replicato l'entità servizio. Per risolvere questo scenario, è necessario specificare il tipo di entità durante la creazione dell'assegnazione di ruolo.

Per assegnare un ruolo, usare az role assignment create, specificare un valore per --assignee-object-ide quindi impostare su ServicePrincipal--assignee-principal-type .

az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

L'esempio seguente assegna il ruolo Collaboratore macchina virtuale all'identità gestita msi-test nell'ambito del gruppo di risorse pharma-sales :

az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"

Assegnare un ruolo per un utente nell'ambito di una sottoscrizione

Assegna il ruolo Lettore all'utente annm@example.com in un ambito di sottoscrizione.

az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Assegnare un ruolo per un gruppo in un ambito di sottoscrizione

Assegna il ruolo Lettore al gruppo Ann Mack Team con ID 222222222-2222-2222-2222-2222222222222 in un ambito di sottoscrizione.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Assegnare un ruolo per tutti i contenitori BLOB in un ambito di sottoscrizione

Assegna il ruolo lettore dati BLOB Archiviazione all'utente alain@example.com in un ambito di sottoscrizione.

az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Assegnare un ruolo per un utente nell'ambito di un gruppo di gestione

Assegna il ruolo Lettore fatturazione all'utente nell'ambito alain@example.com di un gruppo di gestione.

az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Passaggi successivi