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:
Microsoft.Authorization/roleAssignments/write
autorizzazioni, ad esempio Controllo di accesso Amministrazione istrator basato su ruoli- PowerShell in Azure Cloud Shell o Azure PowerShell
- L'account usato per eseguire il comando di PowerShell deve disporre dell'autorizzazione Microsoft Graph
Directory.Read.All
.
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 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 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