Usare il controllo degli accessi in base al ruolo di Azure per definire l'accesso al file di configurazione di Kubernetes nel servizio Azure Kubernetes
È possibile interagire con i cluster Kubernetes tramite lo strumento kubectl
. L'interfaccia della riga di comando di Azure offre un modo semplice per ottenere le credenziali di accesso e il file di configurazione kubeconfigper la connessione ai cluster del servizio Azure Kubernetes tramite kubectl
. È possibile usare il controllo degli accessi in base al ruolo di Azure per limitare gli utenti autorizzati ad accedere al file kubeconfig e alle autorizzazioni di cui dispongono.
Questo articolo illustra come assegnare ruoli di controllo degli accessi in base al ruolo che limitano gli utenti in grado di ottenere le informazioni di configurazione per un cluster del servizio Azure Kubernetes.
Operazioni preliminari
- Questo articolo presuppone che si disponga di un cluster del servizio Azure Kubernetes esistente. Se è necessario un cluster del servizio Azure Kubernetes, crearne uno usando l'interfaccia della riga di comando di Azure, Azure PowerShell o il portale di Azure.
- Questo articolo richiede anche che sia in esecuzione l'interfaccia della riga di comando di Azure versione 2.0.65 o successive. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Autorizzazioni disponibili per i ruoli del cluster
Quando si interagisce con un cluster del servizio Azure Kubernetes tramite lo strumento kubectl
, viene usato un file di configurazione chiamato kubeconfig che definisce le informazioni di connessione del cluster. Questo file di configurazione è in genere archiviato in ~/.kube/config. In questo file kubeconfig possono essere definiti più cluster. È possibile passare da un cluster all'altro usando il comando kubectl config use-context
.
Il comando az aks get-credentials
consente di ottenere le credenziali di accesso per un cluster del servizio Azure Kubernetes e di unirle nel file kubeconfig. È possibile usare il controllo degli accessi in base al ruolo di Azure per controllare l'accesso a queste credenziali. Questi ruoli Azure consentono di definire chi può recuperare il file kubeconfig e le autorizzazioni disponibili all'interno del cluster.
Esistono due ruoli di Azure che è possibile applicare a un utente o a un gruppo di Microsoft Entra:
Ruolo di amministratore del cluster del servizio Azure Kubernetes
- Consente l'accesso alla
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
chiamata API. Questa chiamata API elenca le credenziali di amministratore del cluster. - Scarica kubeconfig per il ruolo clusterAdmin.
- Consente l'accesso alla
Ruolo di utente del cluster del servizio Azure Kubernetes
- Consente l'accesso alla
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
chiamata API. Questa chiamata API elenca le credenziali di utente del cluster. - Scarica kubeconfig per il ruolo clusterUser.
- Consente l'accesso alla
Nota
Nei cluster che usano l'ID Microsoft Entra, gli utenti con il ruolo clusterUser hanno un file kubeconfig vuoto che richiede un account di accesso. Dopo l'accesso, gli utenti hanno accesso in base alle impostazioni utente o gruppo di Microsoft Entra. Gli utenti con il ruolo clusterAdmin hanno accesso amministratore.
Nei cluster che non usano Microsoft Entra ID, il ruolo clusterUser ha lo stesso effetto del ruolo clusterAdmin.
Assegnare le autorizzazioni del ruolo a un utente o a un gruppo
Per assegnare uno dei ruoli disponibili, è necessario ottenere l'ID risorsa del cluster del servizio Azure Kubernetes e l'ID dell'account utente o del gruppo Microsoft Entra seguendo questa procedura:
- Ottenere l'ID della risorsa del cluster tramite il comando
az aks show
per il cluster denominato myAKSCluster nel gruppo di risorse myResourceGroup. Specificare il nome del cluster e del gruppo di risorse in base alle esigenze. - Usare i comandi
az account show
eaz ad user show
per ottenere l'ID utente. - Assegnare un ruolo usando il comando
az role assignment create
.
L'esempio seguente assegna il ruolo di amministratore del cluster del servizio Azure Kubernetes a un singolo account utente:
# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)
# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)
# Assign the 'Cluster Admin' role to the user
az role assignment create \
--assignee $ACCOUNT_ID \
--scope $AKS_CLUSTER \
--role "Azure Kubernetes Service Cluster Admin Role"
Se si desidera assegnare autorizzazioni a un gruppo di Microsoft Entra, aggiornare il --assignee
parametro mostrato nell'esempio precedente con l'ID oggetto per il gruppo anziché l'utente .
Per ottenere l'ID oggetto per un gruppo, usare il az ad group show
comando. Il comando seguente ottiene l'ID oggetto per il gruppo Microsoft Entra denominato appdev:
az ad group show --group appdev --query objectId -o tsv
Importante
In alcuni casi, ad esempio gli utenti guest di Microsoft Entra, il user.name nell'account è diverso da userPrincipalName.
$ az account show --query user.name -o tsv
user@contoso.com
$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com
In questo caso, impostare il valore di ACCOUNT_UPN su userPrincipalName dall'utente di Microsoft Entra. Ad esempio, se l'account user.name è user@contoso.com, questa azione sarà simile all'esempio seguente:
ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)
Ottenere e verificare le informazioni di configurazione
Dopo aver assegnato i ruoli, usare il comando az aks get-credentials
per ottenere la definizione kubeconfig per il cluster del servizio Azure Kubernetes. L'esempio seguente ottiene le credenziali --admin, che funzionano correttamente se all'utente è stato assegnato il Ruolo amministratore del cluster:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
È quindi possibile usare il comando kubectl config view
per verificare che context per il cluster indichino che sono state applicate le informazioni di configurazione per l'amministratore.
$ kubectl config view
L'output dovrebbe essere simile all'esempio di output seguente:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
name: myAKSCluster
contexts:
- context:
cluster: myAKSCluster
user: clusterAdmin_myResourceGroup_myAKSCluster
name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: e9f2f819a4496538b02cefff94e61d35
Rimuovere le autorizzazioni per i ruoli
Per rimuovere le assegnazioni di ruolo, usare il comando az role assignment delete
. Specificare l'ID dell'account e l'ID della risorsa del cluster ottenuti nei passaggi precedenti. Se il ruolo è stato assegnato a un gruppo anziché a un utente, specificare l'ID oggetto gruppo appropriato anziché l'ID oggetto account per il parametro --assignee
.
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER
Passaggi successivi
Per una maggiore sicurezza sull'accesso ai cluster del servizio Azure Kubernetes, integrare l'autenticazione di Microsoft Entra .
Azure Kubernetes Service