Creazione di assegnazioni di ruoli Azure
Questa pagina mostra come concedere le autorizzazioni a GKE su Azure in modo che possa accedere alle API di Azure. Devi eseguire questi passaggi quando configuri un nuovo cluster GKE su Azure o quando aggiorni le autorizzazioni per un cluster esistente. Queste autorizzazioni sono necessarie per consentire a GKE su Azure di gestire le risorse Azure per tuo conto, ad esempio macchine virtuali, componenti di rete e archiviazione.
Ottieni gli ID entità servizio e abbonamento
Per concedere le autorizzazioni a GKE su Azure, devi ottenere l'entità servizio e l'ID abbonamento Azure. L'entità servizio Azure e l'ID abbonamento sono associati all'applicazione Azure AD che hai creato per GKE su Azure. Per maggiori dettagli, consulta Creare un'applicazione Azure Active Directory.
Un'entità del servizio è un'identità in Azure Active Directory (AD) che viene utilizzata per autenticarsi in Azure e accedere alle relative risorse. Un abbonamento Azure è un contenuto logico che ti fornisce l'accesso autorizzato ai prodotti e ai servizi Azure. Un ID abbonamento è un identificatore univoco associato al tuo abbonamento Azure.
Per salvare gli ID principale del servizio e dell'abbonamento come riferimento rapido, puoi memorizzarli nelle variabili di shell. Per creare queste variabili di shell, esegui il comando seguente:
APPLICATION_ID=$(az ad app list --all \
--query "[?displayName=='APPLICATION_NAME'].appId" \
--output tsv)
SERVICE_PRINCIPAL_ID=$(az ad sp list --all --output tsv \
--query "[?appId=='$APPLICATION_ID'].id")
SUBSCRIPTION_ID=$(az account show --query "id" --output tsv)
Sostituisci APPLICATION_NAME
con il nome
della tua applicazione Azure AD.
Crea tre ruoli personalizzati
Per concedere a GKE su Azure le autorizzazioni per gestire le risorse Azure, devi creare tre ruoli personalizzati e assegnarli all'entità del servizio. Nelle istruzioni riportate di seguito vengono aggiunte solo le autorizzazioni minime. Se necessario, puoi aggiungere altre autorizzazioni.
Devi creare ruoli personalizzati per i seguenti tipi di accesso:
- Accesso a livello di abbonamento: autorizzazioni che si applicano all'intero abbonamento Azure, consentendo la gestione di tutte le risorse Azure all'interno dell'abbonamento.
- Accesso a livello di gruppo di risorse del cluster: autorizzazioni specifiche per la gestione delle risorse Azure all'interno di un determinato gruppo di risorse contenente i cluster GKE su Azure.
- Accesso a livello di gruppo di risorse della rete virtuale: autorizzazioni specifiche per la gestione delle risorse Azure all'interno di un gruppo di risorse che contiene le risorse di rete virtuale di Azure.
Creare un ruolo per l'accesso a livello di abbonamento
Crea un file denominato
GKEOnAzureAPISubscriptionScopedRole.json
.Apri
GKEOnAzureAPISubscriptionScopedRole.json
in un editor e aggiungi le seguenti autorizzazioni:{ "Name": "GKE on-Azure API Subscription Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in subscription scope.", "Actions": [ "Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write", "Microsoft.Authorization/roleAssignments/delete", "Microsoft.Authorization/roleDefinitions/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] }
Crea il nuovo ruolo personalizzato:
az role definition create --role-definition "GKEOnAzureAPISubscriptionScopedRole.json"
Assegna il ruolo all'entità servizio utilizzando il seguente comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}
Creare un ruolo per l'accesso a livello di gruppo di risorse del cluster
Crea un file denominato
GKEOnAzureClusterResourceGroupScopedRole.json
.Apri
GKEOnAzureClusterResourceGroupScopedRole.json
in un editor e aggiungi le seguenti autorizzazioni:{ "Name": "GKE on-Azure API Cluster Resource Group Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in cluster resource group scope.", "Actions": [ "Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Authorization/roleDefinitions/write", "Microsoft.Authorization/roleDefinitions/delete", "Microsoft.ManagedIdentity/userAssignedIdentities/write", "Microsoft.ManagedIdentity/userAssignedIdentities/read", "Microsoft.ManagedIdentity/userAssignedIdentities/delete", "Microsoft.Network/applicationSecurityGroups/write", "Microsoft.Network/applicationSecurityGroups/read", "Microsoft.Network/applicationSecurityGroups/delete", "Microsoft.Network/applicationSecurityGroups/joinIpConfiguration/action", "Microsoft.Authorization/roleAssignments/write", "Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/delete", "Microsoft.Network/loadBalancers/write", "Microsoft.Network/loadBalancers/read", "Microsoft.Network/loadBalancers/delete", "Microsoft.Network/loadBalancers/backendAddressPools/join/action", "Microsoft.Network/networkSecurityGroups/write", "Microsoft.Network/networkSecurityGroups/read", "Microsoft.Network/networkSecurityGroups/delete", "Microsoft.Network/networkSecurityGroups/join/action", "Microsoft.KeyVault/vaults/write", "Microsoft.KeyVault/vaults/read", "Microsoft.KeyVault/vaults/delete", "Microsoft.Compute/disks/read", "Microsoft.Compute/disks/write", "Microsoft.Compute/disks/delete", "Microsoft.Network/networkInterfaces/read", "Microsoft.Network/networkInterfaces/write", "Microsoft.Network/networkInterfaces/delete", "Microsoft.Network/networkInterfaces/join/action", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/delete", "Microsoft.Compute/virtualMachineScaleSets/write", "Microsoft.Compute/virtualMachineScaleSets/read", "Microsoft.Compute/virtualMachineScaleSets/delete", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.Compute/virtualMachines/retrieveBootDiagnosticsData/action", "Microsoft.Insights/Metrics/Read" ], "NotActions": [], "DataActions": [ "Microsoft.KeyVault/vaults/keys/create/action", "Microsoft.KeyVault/vaults/keys/delete", "Microsoft.KeyVault/vaults/keys/read", "Microsoft.KeyVault/vaults/keys/encrypt/action" ], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] } ```
Crea il nuovo ruolo personalizzato:
az role definition create --role-definition "GKEOnAzureClusterResourceGroupScopedRole.json"
Assegna il ruolo all'entità servizio utilizzando il seguente comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Cluster Resource Group Scoped Role" --scope /subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${CLUSTER_RESOURCE_GROUP_ID}
Creare un ruolo per l'accesso a livello di gruppo di risorse della rete virtuale
Crea un file denominato
GKEOnAzureAPIVNetResourceGroupScopedRole.json
.Apri
GKEOnAzureAPIVNetResourceGroupScopedRole.json
in un editor e aggiungi le seguenti autorizzazioni:{ "Name": "GKE on-Azure API VNet Resource Group Scoped Role", "IsCustom": true, "Description": "Allow GKE on-Azure service manage resources in virtual network resource group scope.", "Actions": [ "Microsoft.Network/virtualNetworks/read", "Microsoft.Network/virtualNetworks/subnets/read", "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Authorization/roleDefinitions/write", "Microsoft.Authorization/roleDefinitions/delete" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": ["/subscriptions/${SUBSCRIPTION_ID}"] }
Crea il nuovo ruolo personalizzato:
az role definition create --role-definition "GKEOnAzureAPIVNetResourceGroupScopedRole.json"
Assegna il ruolo all'entità servizio utilizzando il seguente comando:
az role assignment create --assignee ${SERVICE_PRINCIPAL_ID} --role "GKE on-Azure API Subscription Scoped Role" --scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/VNET_RESOURCE_GROUP_ID"