Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: AKS locale su Azure
Gli amministratori dell'infrastruttura possono usare il controllo degli accessi in base al ruolo di Azure per controllare chi può accedere al file kubeconfig e alle autorizzazioni di cui dispone. Gli operatori Kubernetes possono interagire con i cluster Kubernetes usando lo strumento kubectl in base alle autorizzazioni indicate. Azure CLI offre un modo semplice per ottenere le credenziali di accesso e il file di configurazione kubeconfig per connettersi ai cluster AKS usando kubectl.
Quando si usa l'autenticazione integrata tra Microsoft Entra ID e AKS, è possibile usare utenti, gruppi o entità servizio di Microsoft Entra come soggetti nel controllo degli accessi basato sui ruoli di Kubernetes (Kubernetes RBAC). Questa funzionalità ti libera dalla necessità di gestire separatamente le identità utente e le credenziali per Kubernetes. Tuttavia, è comunque necessario configurare e gestire separatamente Azure RBAC e Kubernetes RBAC.
Questo articolo descrive come utilizzare Azure RBAC per l'autorizzazione del cluster Kubernetes con ID di Microsoft Entra e le assegnazioni di ruolo di Azure.
Per una panoramica, vedere Azure RBAC per l'autorizzazione Kubernetes per AKS con Azure Arc.
Prima di iniziare
Prima di iniziare, verificare di aver soddisfatto i prerequisiti seguenti:
Il servizio AKS su Azure Locale attualmente supporta l'abilitazione del controllo degli accessi in base al ruolo di Azure solo durante la creazione del cluster Kubernetes. Non è possibile abilitare Azure RBAC dopo la creazione del cluster Kubernetes.
È possibile abilitare Azure RBAC usando l'interfaccia della riga di comando di Azure o il portale di Azure. Per usare l'interfaccia della riga di comando di Azure, è necessario installare le versioni più recenti delle estensioni dell'interfaccia della riga di comando di Azure aksarc e connectedk8s . Si noti che è necessaria l'estensione aksarc versione 1.1.1 o successiva per abilitare RBAC di Azure. Eseguire
az --version
per trovare la versione corrente. Se è necessario installare o aggiornare l'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.az extension add --name aksarc az extension add --name connectedk8s
Se l'estensione
aksarc
è già stata installata, aggiornare l'estensione alla versione più recente:az extension update --name aksarc az extension update --name connectedk8s
Per interagire con i cluster Kubernetes, è necessario installare kubectl e kubelogin.
Per abilitare il controllo degli accessi basato sul ruolo di Azure durante la creazione di un cluster Kubernetes, sono necessarie le seguenti autorizzazioni:
Per creare un cluster Kubernetes, è necessario il ruolo Collaboratore Arc del servizio Azure Kubernetes .
Per usare il parametro
--enable-azure-rbac
, è necessario il ruolo Amministratore del controllo degli accessi basato su ruoli per ottenere l'accesso all'autorizzazione Microsoft.Authorization/roleAssignments/write.Per assegnare questi ruoli, usare il comando az role assignment create cli oppure seguire Assegnare i ruoli di Azure usando l'interfaccia della riga di comando di Azure:
az role assignment create --assignee <assignee-object-id> --role <role-name-or-id> --scope $ARM_ID
La propagazione delle nuove assegnazioni di ruolo può richiedere fino a cinque minuti, e possono essere aggiornate dal server di autorizzazione.
Dopo aver abilitato Azure RBAC, è possibile accedere al cluster Kubernetes con le autorizzazioni fornite usando la modalità diretta o la modalità proxy.
- Per accedere al cluster Kubernetes direttamente usando il
az aksarc get-credentials
comando, è necessaria l'autorizzazione Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, inclusa nell'autorizzazione del ruolo utente del cluster Arc del servizio Azure Kubernetes . - Per accedere al cluster Kubernetes da qualsiasi posizione con una modalità proxy usando il
az connectedk8s proxy
comando o dal portale di Azure, è necessaria l'azione Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action , inclusa nell'autorizzazione ruolo utente del cluster Kubernetes con abilitazione di Azure Arc . Nel frattempo, è necessario verificare che gli agenti e il computer che eseguono il processo di onboarding soddisfino i requisiti di rete specificati nei requisiti di rete kubernetes abilitati per Azure Arc.
- Per accedere al cluster Kubernetes direttamente usando il
Per usare kubectl, è possibile accedervi usando Azure RBAC o il Gruppo di amministratori AAD.
- Per usare kubectl con il controllo degli accessi in base al ruolo di Azure, è necessario il ruolo Visualizzatore Kubernetes di Azure Arc con ambito sulla risorsa cluster connessa.
- Per usare kubectl con il gruppo di amministrazione di AAD, non è necessario alcun ruolo specifico, ma è necessario assicurarsi di essere in uno dei gruppi nell'elenco dei gruppi di componenti aggiuntivi amministratore della risorsa cluster connessa.
Passaggio 1: Creare un cluster Kubernetes con RBAC di Azure abilitato
È possibile creare un cluster Kubernetes abilitato per RBAC di Azure per l'autorizzazione e un Microsoft Entra ID per l'autenticazione.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --enable-azure-rbac
Il comando viene completato dopo pochi minuti e vengono restituite informazioni in formato JSON sul cluster.
Passaggio 2: Creare assegnazioni di ruolo per consentire agli utenti di accedere al cluster
AKS Arc fornisce i seguenti cinque ruoli predefiniti. Sono simili ai ruoli predefiniti di Kubernetes, con alcune differenze, ad esempio il supporto dei CRL. Vedere l'elenco completo delle azioni consentite da ogni ruolo predefinito di Azure.
Ruolo | Descrizione |
---|---|
Utente del cluster Kubernetes abilitato per Azure Arc | Consente di recuperare il file kubeconfig basato su Cluster Connect per gestire i cluster da qualsiasi posizione. |
Visualizzatore Kubernetes di Azure Arc | Consente l'accesso in sola lettura per visualizzare la maggior parte degli oggetti in un namespace. Non consente la visualizzazione dei segreti, perché l'autorizzazione di lettura per i segreti consente l'accesso alle credenziali ServiceAccount nello spazio dei nomi. Queste credenziali a loro volta consentono l'accesso all'API tramite tale valore ServiceAccount (una forma di escalation dei privilegi). |
Scrittore Kubernetes di Azure Arc | Consente l'accesso in lettura/scrittura alla maggior parte degli oggetti in uno spazio dei nomi. Non consente la visualizzazione o la modifica di ruoli o associazioni di ruolo. Tuttavia, questo ruolo consente di accedere ai segreti e eseguire pod come qualsiasi valore ServiceAccount nel namespace, così da poter essere utilizzato per ottenere i livelli di accesso API di qualsiasi valore ServiceAccount nel namespace. |
Amministratore di Azure Arc Kubernetes | Consente l'accesso amministratore. Deve essere assegnato all'interno di un namespace tramite RoleBinding. Se viene usato in RoleBinding, consente l'accesso in lettura/scrittura alla maggior parte delle risorse in uno spazio dei nomi, inclusa la possibilità di creare ruoli e associazioni di ruolo all'interno dello spazio dei nomi. Questo ruolo non consente l'accesso in scrittura alla quota di risorse o allo spazio dei nomi stesso. |
Amministratore del cluster Kubernetes Azure Arc | Consente l'accesso "superuser" per eseguire qualsiasi azione su qualsiasi risorsa. Quando viene usato in ClusterRoleBinding, offre il controllo completo su ogni risorsa nel cluster e in tutti gli spazi dei nomi. Quando lo si usa in RoleBinding, fornisce il controllo completo su ogni risorsa nello spazio dei nomi dell'associazione di ruoli, incluso lo spazio dei nomi stesso. |
È possibile usare il az role assignment create
comando per creare assegnazioni di ruolo.
Prima di tutto, ottieni $ARM-ID
per il cluster di destinazione a cui vuoi assegnare un ruolo.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Usare quindi il az role assignment create
comando per assegnare ruoli al cluster Kubernetes. È necessario fornire il $ARM_ID
dal primo passaggio e il assignee-object-id
per questo passaggio.
assignee-object-id
Può essere un ID Microsoft Entra o un ID client dell'entità servizio.
L'esempio seguente assegna il ruolo Visualizzatore Kubernetes di Azure Arc al cluster Kubernetes:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
In questo esempio l'ambito è l'ID di Azure Resource Manager del cluster. Può anche essere il gruppo di risorse che contiene il cluster Kubernetes.
Creare definizioni del ruolo personalizzate
È possibile scegliere di creare una definizione di ruolo personalizzata da usare nelle assegnazioni di ruolo.
L'esempio seguente mostra una definizione di ruolo che consente a un utente di leggere solo le distribuzioni. Per altre informazioni, vedere l'elenco completo delle azioni sui dati che è possibile usare per costruire una definizione del ruolo. Per altre informazioni sulla creazione di un ruolo personalizzato, vedere Passaggi per creare un ruolo personalizzato
Per creare definizioni di ruolo personalizzate, copiare l'oggetto JSON seguente in un file denominato custom-role.json. Sostituire il segnaposto <subscription-id>
con l'ID della sottoscrizione effettivo. Il ruolo personalizzato usa una delle azioni di dati e consente di visualizzare tutte le distribuzioni nell'ambito (cluster o spazio dei nomi) in cui viene creata l'assegnazione di ruolo.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Per informazioni sui ruoli personalizzati e su come crearli, vedere Ruoli personalizzati di Azure.
Creare la definizione del ruolo usando il az role definition create
comando , impostando il --role-definition
parametro sul filedeploy-view.json creato nel passaggio precedente:
az role definition create --role-definition @deploy-view.json
Assegnare la definizione di ruolo a un utente o a un'altra identità usando il az role assignment create
comando :
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Passaggio 3: Accedere al cluster Kubernetes
È ora possibile accedere al cluster Kubernetes con le autorizzazioni fornite, usando la modalità diretta o la modalità proxy.
Accedere al cluster con kubectl (modalità diretta)
Per accedere al cluster Kubernetes con le autorizzazioni fornite, l'operatore Kubernetes necessita di Microsoft Entra kubeconfig, che è possibile ottenere usando il az aksarc get-credentials
comando . Questo comando fornisce l'accesso a kubeconfig basato su amministratore, nonché a kubeconfig basato sull'utente. Il file kubeconfig basato sull'amministratore contiene segreti e deve essere archiviato e ruotato periodicamente in modo sicuro. D'altra parte, il kubeconfig basato sull'utente di Microsoft Entra ID non contiene segreti e può essere distribuito agli utenti che si connettono dalle loro macchine client.
Per eseguire questo comando dell'interfaccia della riga di comando di Azure, hai bisogno dell'autorizzazione Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, inclusa nel permesso del ruolo Utente del Cluster di Azure Kubernetes Arc.
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
È ora possibile usare kubectl per gestire il cluster. Ad esempio, è possibile elencare i nodi nel cluster usando kubectl get nodes
. La prima volta che esegui il programma, è necessario effettuare l'accesso, come illustrato nell'esempio seguente.
kubectl get nodes
Accedere al cluster da un dispositivo client (modalità proxy)
Per accedere al cluster Kubernetes da qualsiasi luogo utilizzando il comando az connectedk8s proxy
in modalità proxy, è necessario il permesso Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, che è incluso nel ruolo Utente del cluster Kubernetes abilitato per Azure Arc.
Eseguire i passaggi seguenti in un altro dispositivo client:
Accedere con l'autenticazione di Microsoft Entra
Ottenere il cluster connect kubeconfig necessario per comunicare con il cluster ovunque (anche dall'esterno del firewall che circonda il cluster):
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Annotazioni
Questo comando apre il proxy e blocca la shell corrente.
In una sessione della shell diversa usare
kubectl
per inviare richieste al cluster:kubectl get pods -A
Dovresti ora vedere una risposta dal cluster contenente l'elenco di tutti i pod nello spazio dei nomi default
.
Per altre informazioni, vedere Accedere al cluster da un dispositivo client.
Pulire le risorse
Elimina assegnazione ruolo
# List role assignments
az role assignment list --scope $ARM_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Eliminare la definizione del ruolo
az role definition delete -n "AKS Arc Deployment Reader"
Passaggi successivi
- Controllo degli accessi in base al ruolo di Azure
- Opzioni di accesso e identità per il servizio Azure Kubernetes abilitato da Azure Arc
- Creare un'entità servizio di Azure con l'interfaccia della riga di comando Azure
- Autorizzazioni di Azure disponibili per Hybrid + Multicloud