Configurare le autorizzazioni e il controllo degli accessi basato sui ruoli (RBAC) nel desktop del Servizio Azure Kubernetes (AKS)

Screenshot di un diagramma che mostra le assegnazioni di ruolo RBAC sul desktop del Servizio Azure Kubernetes per i ruoli di operatore del cluster e sviluppatore

A seconda del ruolo di operatore o sviluppatore del cluster, è possibile fornire un ambiente (Project) nel desktop del servizio Azure Kubernetes per gli sviluppatori per distribuire, eseguire la migrazione o gestire applicazioni oppure consentire loro di distribuire e gestire autonomamente le applicazioni in un cluster del servizio Azure Kubernetes dedicato. In alternativa, è possibile concedere a più sviluppatori l'accesso per gestire, osservare e risolvere i problemi delle applicazioni.

Per impostazione predefinita, quando si crea un progetto in AKS desktop, è possibile condividerlo con altri utenti dell'organizzazione, e le autorizzazioni vengono impostate automaticamente. Tuttavia, potrebbe essere necessario mantenere le autorizzazioni nel tempo o automatizzarle o definire un modello operativo impostando le autorizzazioni appropriate.

Questo articolo descrive come gestire le autorizzazioni RBAC per consentire ai membri del team di lavorare con AKS desktop.

Annotazioni

Il desktop di Servizio Azure Kubernetes attualmente non fornisce un'opzione nell'interfaccia utente per modificare le autorizzazioni del progetto dopo la creazione. Per aggiornare le autorizzazioni o concedere l'accesso ad altri utenti dopo la creazione di un progetto, usare il portale di Azure o l'interfaccia della riga di comando di Azure come descritto in questo articolo.

Annotazioni

Quando si creano progetti nel desktop del servizio Azure Kubernetes, gli spazi dei nomi gestiti del servizio Azure Kubernetes vengono creati nello stesso gruppo di risorse del cluster.

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, è possibile creare un account Azure gratuito.
  • interfaccia della riga di comando di Azure versione 2.64.0 o successiva installata e configurata. Verificare la versione usando il comando az --version. Per installare o eseguire l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
  • Estensione CLI di aks-preview Azure. Installarlo usando il az extension add --name aks-preview comando .
  • Una conoscenza di base del controllo degli accessi in base ai ruoli di Azure, vedere Che cos'è Azure RBAC? e Ruoli integrati di Azure.
  • Un gruppo di risorse di Azure che contiene il cluster del servizio Azure Kubernetes e qualsiasi progetto gestito del servizio Azure Kubernetes creato tramite il desktop del servizio Azure Kubernetes.
  • Un cluster del servizio Azure Kubernetes Standard che soddisfa i requisiti desktop del servizio Azure Kubernetes o un cluster automatico del servizio Azure Kubernetes in cui vengono eseguite le applicazioni.
  • Un registro dei contenitori di Azure (ACR) per archiviare immagini di contenitori per la distribuzione.

Responsabilità dell'operatore del cluster

L'operatore del cluster è responsabile del provisioning e della configurazione dell'infrastruttura di base che consente ai team di sviluppo di compilare e distribuire applicazioni. Le responsabilità includono:

  • Creazione dell'infrastruttura di Azure necessaria (gruppo di risorse, cluster AKS, Azure Container Registry).
  • Configurazione dell'integrazione di ACR con il tuo cluster AKS.
  • Assegnazione delle autorizzazioni per gli utenti per la creazione di progetti.
  • Facoltativamente, delegare la gestione delle autorizzazioni ai creatori di Progetti.

Creare risorse dell'infrastruttura

Per creare le risorse dell'infrastruttura, sono necessarie le autorizzazioni per creare risorse in Azure. Se non sei assegnato il ruolo Proprietario RBAC, è necessario il ruolo Collaboratore per creare risorse e il ruolo Amministratore accessi utente per assegnare autorizzazioni ad altri utenti. Assegnare autorizzazioni agli utenti in modo che possano creare risorse nel gruppo di risorse seguendo questa procedura:

  1. Impostare le variabili di ambiente per il gruppo di risorse e il nome del cluster. Assicurarsi di sostituire i segnaposto con i nomi effettivi del gruppo di risorse e del cluster.

    export RESOURCE_GROUP=<infra-resource-group>
    export CLUSTER_NAME=<cluster-name>
    export SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    export ACR_NAME=<acr-name>
    
  2. Assegnare il ruolo necessario per creare risorse nel gruppo di risorse usando il az role assignment create comando . Assicurarsi di sostituire <user-id> con l'ID corretto dell'utente o dell'entità servizio.

    az role assignment create --role "Contributor" \
        --assignee <user-id> \
        --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP
    

Integrare Azure Container Registry con il cluster AKS

Collega il registro dei contenitori di Azure al tuo cluster AKS usando il comando az aks update.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --attach-acr $ACR_NAME

Selezionare un modello di creazione del progetto

In qualità di operatore del cluster, hai due opzioni su come gli sviluppatori lavorano con i progetti in AKS desktop.

  • Modello self-service: gli sviluppatori creano e gestiscono i propri progetti. Questo approccio offre agli sviluppatori un'autonomia completa, ma richiede la concessione del ruolo collaboratore dello spazio dei nomi del servizio Azure Kubernetes . Quando gli sviluppatori creano progetti personalizzati, ricevono automaticamente il ruolo Proprietario nello spazio dei nomi gestito e possono iniziare immediatamente a distribuire le applicazioni.
  • Modello gestito: si creano progetti per sviluppatori e si concede loro l'accesso. Attualmente, è possibile configurare questa impostazione durante la creazione del progetto. Questo approccio offre un maggiore controllo sulla creazione del progetto, ma se è necessario assegnare più membri del team alla creazione post-creazione del progetto, è necessario assegnarle le autorizzazioni necessarie usando il portale di Azure o l'interfaccia della riga di comando di Azure, come descritto nelle sezioni successive.

Modello self-service: consente agli sviluppatori di creare progetti personalizzati

Per consentire agli sviluppatori di creare i propri Progetti, assegnare loro il ruolo servizio Azure Kubernetes Namespace Contributor nel cluster AKS. I progetti desktop del servizio Azure Kubernetes creano spazi dei nomi gestiti del servizio Azure Kubernetes in background e questo ruolo concede le autorizzazioni necessarie.

Assegnare agli sviluppatori il ruolo Collaboratore dello spazio dei nomi del servizio Azure Kubernetes usando il az role assignment create comando . Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

az role assignment create \
    --role "Azure Kubernetes Service Namespace Contributor" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Modello gestito: Creare progetti per sviluppatori e assegnare l'accesso

Se si preferisce creare progetti per conto degli sviluppatori, è necessario assegnare tre ruoli essenziali per consentire loro di accedere al cluster e lavorare all'interno dello spazio dei nomi assegnato:

  • Ruolo utente del cluster del servizio Azure Kubernetes: consente agli sviluppatori di scaricare le credenziali del cluster usando il az aks get-credentials comando .
  • Utente dello spazio dei nomi del servizio Azure Kubernetes: concede l'accesso allo spazio dei nomi gestito.
  • Uno dei ruoli RBAC di Kubernetes (Lettore, Writer o Amministratore): controlla le azioni che è possibile eseguire nello spazio dei nomi.

Tutti e tre i ruoli sono necessari per consentire agli sviluppatori di accedere correttamente e lavorare con i propri progetti nel desktop del servizio Azure Kubernetes. Senza il ruolo utente del cluster del servizio Azure Kubernetes, gli sviluppatori non possono scaricare il file kubeconfig necessario per connettersi al cluster.

Assegnare l'accesso al cluster

Assegnare il ruolo utente del cluster del servizio Azure Kubernetes per abilitare il download di kubeconfig usando il az role assignment create comando . Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Assegnare l'accesso agli spazi dei nomi

Assegnare il ruolo Utente dello spazio dei nomi del servizio Azure Kubernetes per lo specifico progetto/spazio dei nomi usando il comando az role assignment create. Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Assegnare il ruolo Controllo degli accessi in base al ruolo di Kubernetes

Assegna il ruolo RBAC di Kubernetes appropriato in base a ciò che lo sviluppatore deve fare.

  • Reader RBAC del servizio Azure Kubernetes per l'accesso in sola lettura.
  • Writer RBAC del servizio Azure Kubernetes per la distribuzione di applicazioni.
  • Amministratore RBAC di servizio Azure Kubernetes per il controllo amministrativo completo.
  1. Ottenere l'ID del cluster AKS usando il comando az aks show.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Assegna il ruolo RBAC appropriato di Kubernetes usando il comando az role assignment create. Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio. L'esempio seguente assegna il ruolo Scritto del controllo degli accessi in base al ruolo del servizio Azure Kubernetes:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Consentire agli autori di project di assegnare autorizzazioni di accesso (facoltativo)

Se si vuole che gli autori di Project siano in grado di assegnare autorizzazioni di accesso ad altri utenti, concedere loro il ruolo Amministratore accesso utenti . Questa autorizzazione consente all'utente di impostare le autorizzazioni per qualsiasi risorsa nel gruppo di risorse dell'infrastruttura.

Assegnare il ruolo Amministratore accesso utenti usando il az role assignment create comando . Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

az role assignment create \
    --role "User Access Administrator" \
    --assignee <user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP

Responsabilità dello sviluppatore

Come sviluppatore, lavori all'interno di un ambiente desktop AKS esistente per distribuire applicazioni, gestire progetti e monitorare i tuoi carichi di lavoro. L'operatore cluster concede le autorizzazioni necessarie per eseguire queste attività. Le responsabilità includono:

  • Distribuzione di applicazioni in progetti.
  • Visualizzazione e gestione delle applicazioni distribuite.
  • Monitoraggio delle metriche e dei log dell'applicazione.
  • Modifica dell'accesso a Project (se necessario).

Ruoli utente obbligatori per gli sviluppatori

Per usare il desktop di AKS come sviluppatore, l'operatore del cluster deve assegnarti tre ruoli essenziali.

  • Ruolo utente del cluster del servizio Azure Kubernetes: consente di scaricare le credenziali del cluster usando il az aks get-credentials comando , che è un requisito per connettersi al cluster dal computer locale o tramite il desktop del servizio Azure Kubernetes.

  • Utente dello spazio dei nomi del servizio Azure Kubernetes: concede l'accesso allo spazio dei nomi/progetto gestito assegnato.

  • Uno dei ruoli RBAC di Kubernetes (Lettore, Scrittore o Amministratore): determina le azioni che è possibile eseguire nel namespace.

    • Reader RBAC del servizio Azure Kubernetes per l'accesso in sola lettura.
    • Writer RBAC del servizio Azure Kubernetes per la distribuzione di applicazioni.
    • Amministratore RBAC di servizio Azure Kubernetes per il controllo amministrativo completo.

Modalità di assegnazione delle autorizzazioni

Le autorizzazioni vengono assegnate in base a come i progetti vengono creati nel desktop AKS.

  • Autore del progetto: riceve automaticamente il ruolo Proprietario nello spazio dei nomi gestito e tutte le autorizzazioni necessarie per distribuire le applicazioni.

  • Altri utenti: deve essere concesso l'accesso dall'operatore del cluster o dall'autore di Project. Ricevono:

    • Ruolo utente del cluster del servizio Azure Kubernetes nel cluster.
    • Ruolo utente del namespace nel servizio Azure Kubernetes.
    • Uno dei ruoli RBAC di Kubernetes (Lettore, Writer o Amministratore).

Per distribuire le applicazioni, è necessario il ruolo Writer o Admin . Per altre informazioni, vedere Ruoli predefiniti degli spazi dei nomi gestiti.

Visualizzare le metriche dell'applicazione

Annotazioni

La compilazione delle metriche può richiedere fino a 10 minuti dopo la distribuzione di un'applicazione.

Nella schermata iniziale del progetto è possibile visualizzare le metriche per l'applicazione, ad esempio CPU, memoria e utilizzo della rete. Queste metriche vengono generate dall'endpoint Prometheus gestito supportato da un'area di lavoro di Monitoraggio di Azure.

Per visualizzare le metriche, è necessario il ruolo Lettore dati di monitoraggio nell'area di lavoro Monitoraggio di Azure. Questo ruolo concede l'accesso a tutte le metriche per il cluster, non solo ai progetti specifici.

L'operatore del cluster può assegnare questa autorizzazione seguendo questa procedura:

  1. Identificare l'area di lavoro di Monitoraggio di Azure usata dal cluster usando il az alerts-management prometheus-rule-group list comando .

    export WORKSPACE_ACC_FOR_PROM_RULES=$(az alerts-management prometheus-rule-group list \
        --resource-group "$RESOURCE_GROUP" \
        --query "[?clusterName=='$CLUSTER_NAME'] | [0].scopes[0]" \
        --output tsv)
    
  2. Assegnare il ruolo Lettore dati di monitoraggio usando il az role assignment create comando . Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

    az role assignment create \
        --role "Monitoring Data Reader" \
        --assignee <user-id> \
        --scope $WORKSPACE_ACC_FOR_PROM_RULES
    

Modificare le autorizzazioni di accesso al progetto

Attualmente, il desktop di AKS non fornisce un'opzione dell'interfaccia utente per modificare le autorizzazioni di progetto dopo la creazione. Se è necessario aggiornare le autorizzazioni o concedere l'accesso ad altri utenti, collaborare con l'operatore del cluster per aggiornare le autorizzazioni usando il portale di Azure o l'interfaccia della riga di comando di Azure. I passaggi seguenti illustrano come assegnare i ruoli necessari usando l'interfaccia della riga di comando di Azure:

Assegnare l'accesso al cluster

Assegnare il ruolo utente del cluster del servizio Azure Kubernetes per abilitare il download di kubeconfig usando il az role assignment create comando . Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Assegnare l'accesso agli spazi dei nomi

Assegnare il ruolo Utente dello spazio dei nomi del servizio Azure Kubernetes per lo specifico progetto/spazio dei nomi usando il comando az role assignment create. Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Assegnare il ruolo Controllo degli accessi in base al ruolo di Kubernetes

Assegna il ruolo RBAC di Kubernetes appropriato in base a ciò che lo sviluppatore deve fare.

  • Reader RBAC del servizio Azure Kubernetes per l'accesso in sola lettura.
  • Writer RBAC del servizio Azure Kubernetes per la distribuzione di applicazioni.
  • Amministratore RBAC di servizio Azure Kubernetes per il controllo amministrativo completo.
  1. Ottenere l'ID del cluster AKS usando il comando az aks show.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Assegna il ruolo RBAC appropriato di Kubernetes usando il comando az role assignment create. Assicurarsi di sostituire il segnaposto con l'ID corretto dell'utente o dell'entità servizio. L'esempio seguente assegna il ruolo Scritto del controllo degli accessi in base al ruolo del servizio Azure Kubernetes:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Concedere le autorizzazioni per la visualizzazione delle metriche (facoltativo)

Per concedere le autorizzazioni per visualizzare le metriche, seguire la procedura descritta nella sezione Visualizzare le metriche dell'applicazione .