Assegnare ruoli di Azure usando Azure PowerShell

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 Azure PowerShell.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

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 Azure PowerShell.

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 Get-AzADUser.

Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id

Raggruppa

Per un gruppo Microsoft Entra, è necessario l'ID oggetto gruppo. Per ottenere l'ID oggetto, è possibile usare Get-AzADGroup.

Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id

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 Get-AzADServicePrincipal. Per un'entità servizio usare l'ID oggetto, non l'ID applicazione.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

Identità gestita

Per un'identità gestita assegnata dal sistema o assegnata dall'utente, è necessario l'ID oggetto. Per ottenere l'ID oggetto, è possibile usare Get-AzADServicePrincipal.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

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 Get-AzRoleDefinition.

Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id

Ecco come elencare i dettagli di un ruolo specifico.

Get-AzRoleDefinition -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 Get-AzResourceGroup.

Get-AzResourceGroup

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 Get-AzSubscription.

Get-AzSubscription

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 Get-AzManagementGroup.

Get-AzManagementGroup

Passaggio 4: Assegnare il ruolo

Per assegnare un ruolo, usare il comando New-AzRoleAssignment . A seconda dell'ambito, il comando ha in genere uno dei formati seguenti.

Ambito risorsa

New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>

Ambito del gruppo di risorse

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>

Ambito della sottoscrizione

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>

Ambito del gruppo di gestione

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>

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-5555555555 e ID applicazione 6666666-6666-6666-6666-666666666 in un ambito di risorsa per un account di archiviazione denominato storage12345.

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

Assegnare un ruolo per un ambito di risorsa contenitore BLOB specifico

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

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "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"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
                     ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

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

Assegna il ruolo Collaboratore macchina virtuale al gruppo Pharma Sales Amministrazione s con ID aaa-aaaa-aa-a-aaa in un ambito di risorsa per una rete virtuale denominata pharma-sales-project-network.

PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
                     ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
DisplayName        : Pharma Sales Admins
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType         : Group
CanDelegate        : False

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 .

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
                     oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

In alternativa, è possibile specificare il gruppo di risorse completo con il -Scope parametro :

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

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 .

PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 `
-RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

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 7777777-7777-7777-7777-777777777777 nell'ambito del gruppo di risorse pharma-sales.

PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : MyApp1
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

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.

PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName        : Ann M
SignInName         : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

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.

PS C:\> New-AzRoleAssignment -SignInName alain@example.com `
-RoleDefinitionName "Billing Reader" `
-Scope "/providers/Microsoft.Management/managementGroups/marketing-group"

RoleAssignmentId   : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId   : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Passaggi successivi