Ottenere l'accesso sicuro per le risorse di Azure nel servizio Azure Kubernetes usando Accesso attendibile

Questo articolo illustra come ottenere l'accesso sicuro per i servizi di Azure al server API Kubernetes in servizio Azure Kubernetes (AKS) usando Accesso attendibile.

La funzionalità Accesso affidabile offre ai servizi l'accesso sicuro al server API di AKS usando il back-end di Azure senza richiedere un endpoint privato. Invece di basarsi sulle identità che dispongono di autorizzazioni Microsoft Entra, questa funzionalità può usare l'identità gestita assegnata dal sistema per eseguire l'autenticazione con i servizi gestiti e le applicazioni che si desidera usare con i cluster del servizio Azure Kubernetes.

Nota

L'API Accesso attendibile è ora disponibile per tutti. È disponibile il supporto per l'interfaccia a riga di comando di Azure (CLI) nella sua versione a disponibilità generale (GA), ma l'interfaccia è ancora in anteprima e richiede l'utilizzo dell'estensione aks-preview.

Panoramica della funzionalità Accesso attendibile

Accesso attendibile risolve gli scenari seguenti:

  • Se un intervallo IP autorizzato è impostato o si trova in un cluster privato, i servizi di Azure potrebbero non essere in grado di accedere al server API Kubernetes, a meno che non si implementi un modello di accesso endpoint privato.
  • Concedere a un amministratore del servizio di Azure l'accesso all'API Kubernetes non segue la procedura consigliata per l'accesso con privilegi minimi e può causare l'escalation dei privilegi o il rischio di perdita di credenziali. Ad esempio, potrebbe essere necessario implementare autorizzazioni con privilegi elevati da servizio a servizio, che non sono l'ideale per una verifica di controllo.

È possibile usare l'Accesso Attendibile per concedere il consenso esplicito all'identità gestita assegnata dal sistema delle risorse autorizzate per accedere ai cluster AKS usando una risorsa di Azure denominata associazione di ruoli. Le risorse di Azure accedono ai cluster AKS tramite il gateway regionale AKS tramite autenticazione mediante identità gestita assegnata dal sistema. Le autorizzazioni Kubernetes appropriate vengono assegnate tramite una risorsa di Azure denominata ruolo. Tramite l'accesso attendibile è possibile accedere ai cluster del servizio Azure Kubernetes con configurazioni diverse, tra cui cluster privati, cluster con account locali disattivati, cluster Microsoft Entra e cluster di intervalli IP autorizzati.

Prerequisiti

Connetti al tuo cluster

Configurare kubectl per connettersi al cluster usando il comando az aks get-credentials.

export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"

az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing

Verificare la connessione al cluster usando il comando kubectl get.

kubectl get nodes

Selezionare i ruoli di accesso attendibili necessari

I ruoli che selezioni dipendono dai servizi di Azure ai quali vuoi accedere nel cluster AKS. I servizi di Azure consentono di creare ruoli e associazioni di ruolo che stabiliscono la connessione tra il servizio di Azure e AKS.

Per trovare i ruoli necessari, vedere la documentazione per il servizio Azure a cui si desidera connettersi tramite AKS. È anche possibile usare l'interfaccia della riga di comando di Azure per elencare i ruoli disponibili per il servizio di Azure usando il az aks trustedaccess role list --location <location> comando .

Creare un'assegnazione di ruoli di accesso attendibile

Dopo aver confermato il ruolo da usare, utilizzare l'Azure CLI per creare un'associazione del ruolo di accesso attendibile nel cluster AKS. L'associazione di ruoli associa il ruolo selezionato al servizio di Azure.

export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"

az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}

Risultati:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
  "name": "${ROLE_BINDING_NAME}",
  "provisioningState": "Succeeded",
  "resourceGroup": "${RESOURCE_GROUP_NAME}",
  "roles": [
    "${ROLE_NAME_1}",
    "${ROLE_NAME_2}"
  ],
  "sourceResourceId": "${SOURCE_RESOURCE_ID}",
  "systemData": null,
  "type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}

Nota

È possibile creare fino a 8 associazioni di ruoli Trusted Access in un cluster AKS.

Aggiornare un'associazione di ruoli di accesso attendibile esistente

Per un'associazione di ruoli esistente con un servizio di origine associato, è possibile aggiornare l'associazione di ruoli con i nuovi ruoli usando il az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4 comando . Questo comando aggiorna l'associazione di ruoli con i nuovi ruoli specificati.

Nota

Il gestore componenti aggiuntivi aggiorna i cluster ogni cinque minuti, quindi l'applicazione della nuova associazione di ruoli potrebbe richiedere fino a cinque minuti. Prima che il nuovo vincolo di ruolo entri in vigore, il vincolo di ruolo esistente funziona ancora.

È possibile usare il comando az aks trusted access rolebinding list per controllare l'associazione di ruoli corrente.

Mostra un'associazione di ruoli di accesso attendibile

Visualizzare un'associazione di ruoli di accesso attendibile specifica usando il az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME comando .

Elencare tutte le associazioni di ruoli di accesso attendibili per un cluster

Elenca tutte le associazioni di ruolo di accesso attendibile per un cluster utilizzando il comando az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME.