Che cosa sono i ruoli personalizzati in Azure?
A volte i ruoli predefiniti non garantiscono l'esatto livello di accesso necessario. I ruoli personalizzati consentono di definire ruoli che soddisfano le esigenze specifiche dell'organizzazione. È possibile assegnare i ruoli personalizzati di Azure creati a utenti, gruppi ed entità servizio nell'ambito della sottoscrizione, del gruppo di risorse o della risorsa.
In questa unità vengono illustrati i ruoli personalizzati nel controllo degli accessi in base al ruolo di Azure.
Ruoli di Microsoft Entra e Azure
I ruoli di Microsoft Entra e i ruoli di Azure vengono spesso confusi quando si lavora con Azure per la prima volta. I ruoli di Microsoft Entra forniscono il meccanismo per la gestione delle autorizzazioni per le risorse di Microsoft Entra y, come gli account utente e le password. I ruoli di Azure offrono un'ampia gamma di funzionalità per la gestione delle risorse di Azure, come le macchine virtuali (VM), a livello granulare.
La tabella seguente mostra le sottili differenze tra le possibili modalità di configurazione e gestione dei due tipi di ruoli:
Ruoli Azure | Ruoli di Microsoft Entra |
---|---|
Gestione dell'accesso a risorse di Azure come macchine virtuali, spazio di archiviazione, reti e altro | Gestisci l'accesso alle risorse di Microsoft Entra, ad esempio account utente e password |
Più livelli di ambito (gruppo di gestione, sottoscrizione, gruppo di risorse, risorsa) | Ambito limitato al livello di tenant |
Informazioni sui ruoli accessibili tramite il portale di Azure, l'interfaccia della riga di comando di Azure, Azure PowerShell, i modelli di Azure Resource Manager, l'API REST | Informazioni sui ruoli accessibili nel portale di amministrazione di Azure, nell'interfaccia di amministrazione di Microsoft 365, in Microsoft Graph, in Microsoft Graph PowerShell |
Per questo scenario è necessario un ruolo personalizzato per gestire le macchine virtuali di Azure nell'ambito della sottoscrizione, quindi è necessario usare i ruoli personalizzati nel controllo degli accessi in base al ruolo di Azure.
Assegnazione e ambito dei ruoli personalizzati
Gli utenti con il ruolo User Access Administrator (Amministratore Accesso utenti) o Owner (Proprietario) possono creare o assegnare ruoli personalizzati nel controllo degli accessi in base al ruolo di Azure.
È possibile assegnare ruoli personalizzati a:
Entità di sicurezza principale | Riepilogo |
---|---|
Utente | Persona che ha un profilo nell’ID Microsoft Entra |
Raggruppa | Gruppo di utenti creati nell’ID Microsoft Entra |
Entità servizio | Identità di sicurezza usata da applicazioni o servizi per accedere a risorse di Azure specifiche |
Identità gestita | Identità nell’ID Microsoft Entra gestita automaticamente da Azure |
È possibile definire l'ambito dell'assegnazione e delle autorizzazioni correlate a livelli diversi all'interno di Azure. I diversi ambiti sono:
- Subscription
- Resource group
- Singola risorsa
Definizione e struttura del ruolo
La definizione di un ruolo personalizzato si suddivide in una raccolta di autorizzazioni diverse. Ogni definizione descrive in dettaglio le operazioni consentite, ad esempio lettura, scrittura ed eliminazione. La definizione viene creata usando queste strutture:
{
"Name": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}
L'esempio seguente illustra la definizione del ruolo per il ruolo di Collaboratore:
{
"Name": "Contributor",
"Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"IsCustom": false,
"Description": "Lets you manage everything except access to resources.",
"Actions": [
"*"
],
"NotActions": [
"Microsoft.Authorization/*/Delete",
"Microsoft.Authorization/*/Write",
"Microsoft.Authorization/elevateAccess/Action",
"Microsoft.Blueprint/blueprintAssignments/write",
"Microsoft.Blueprint/blueprintAssignments/delete"
],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/"
]
}
Qualsiasi definizione di ruolo viene dichiarata mediante il formato seguente:
{Company}.{ProviderName}/{resourceType}/{action}
La parte "action" è in genere una delle azioni seguenti:
- *
- lettura
- write
- action
- eliminare
Definire un ruolo personalizzato per la gestione delle VM
Per identificare le autorizzazioni da includere in una definizione del ruolo, usare l'elenco delle operazioni dei provider di risorse di Azure Resource Manager ed esaminare i ruoli di Azure predefiniti che dispongono di autorizzazioni simili a quelle di cui si ha bisogno.
Esaminare i ruoli predefiniti
Per questo scenario, il ruolo predefinito Virtual Machine Contributor (Collaboratore Macchina virtuale) ha più autorizzazioni di quelle che servono ai dipendenti, mentre il ruolo Virtual Machine Administrator Login (Accesso amministratore alle macchine virtuali) non ne ha a sufficienza.
Il comando seguente dell'interfaccia della riga di comando di Azure restituisce le autorizzazioni per il ruolo predefinito di Collaboratore Macchina virtuale:
az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'
L'elenco seguente contiene le autorizzazioni per il ruolo predefinito di Collaboratore Macchina virtuale:
[
"Microsoft.Authorization/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Network/applicationGateways/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatRules/join/action",
"Microsoft.Network/loadBalancers/probes/join/action",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/locations/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.RecoveryServices/locations/*",
"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
"Microsoft.RecoveryServices/Vaults/backupPolicies/read",
"Microsoft.RecoveryServices/Vaults/backupPolicies/write",
"Microsoft.RecoveryServices/Vaults/read",
"Microsoft.RecoveryServices/Vaults/usages/read",
"Microsoft.RecoveryServices/Vaults/write",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.SqlVirtualMachine/*",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Support/*"
]
Per ottenere questo elenco in PowerShell, eseguire il comando seguente:
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json
Per questo scenario è necessario un ruolo personalizzato che consenta di monitorare e riavviare le macchine virtuali per una sottoscrizione specifica, quindi si vogliono includere le azioni seguenti con ambito a livello di sottoscrizione:
- Accesso in lettura alle risorse di calcolo, rete e archiviazione
- Possibilità di avviare e riavviare le macchine virtuali
- Accesso ai gruppi di risorse nella sottoscrizione
- Accesso alle risorse di monitoraggio
Esistono alcune operazioni nella definizione del ruolo Collaboratore macchina virtuale che è possibile usare, ad esempio "Microsoft.Insights/alertRules/*"
per il monitoraggio, ma il riavvio e altri non sono elencati come azioni nella definizione del ruolo.
Trovare le operazioni dei provider di risorse
È possibile trovare l'azione di riavvio delle VM nell'elenco delle operazioni dei provider di risorse di Azure Resource Manager o eseguendo il comando seguente di PowerShell per restituire le operazioni per le macchine virtuali:
Get-AzProviderOperation */virtualMachines/*
Nell'elenco viene restituita la seguente operazione per il riavvio:
Operation : Microsoft.Compute/virtualMachines/restart/action
OperationName : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName : Virtual Machines
Description : Restarts the virtual machine
IsDataAction : False
È possibile usare il cmdlet di Azure PowerShell Get-AzProviderOperation
per ottenere l'elenco più aggiornato delle operazioni dei provider di risorse. Nell'interfaccia della riga di comando di Azure usare il comando az provider operation show
. È possibile trovare un elenco pubblicato di provider di risorse e operazioni nei contenuti relativi al Controllo degli accessi in base al ruolo di Azure in Microsoft Docs.
Creare la definizione del ruolo Virtual Machine Operator (Operatore macchina virtuale)
Supponiamo di aver individuato i ruoli necessari esaminando le definizioni dei ruoli predefiniti correlati e l'elenco delle operazioni dei provider di risorse. È stata quindi creata la definizione del ruolo seguente per il ruolo personalizzato. Si userà questa definizione del ruolo per il ruolo personalizzato.
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}