Configurar permissões e controlo de acesso baseado em funções (RBAC) no desktop AKS

Captura de ecrã de um diagrama que mostra as atribuições de funções RBAC no ambiente de trabalho AKS para funções de operador de cluster e programador

Dependendo do seu papel como operador de cluster ou programador, pode fornecer um ambiente (Project) no desktop AKS para que os programadores possam implementar, migrar ou gerir aplicações, ou permitir que se auto-sirvam a implementar e gerir aplicações num cluster dedicado do AKS. Em alternativa, pode querer conceder a mais programadores acesso para gerir, observar e resolver problemas de aplicações.

Por defeito, quando crias um Projeto no ambiente de trabalho AKS podes partilhá-lo com outras pessoas da tua organização, e isso define as permissões para ti. No entanto, pode ser necessário manter permissões ao longo do tempo, automatizá-las ou definir um modelo operativo definindo as permissões apropriadas.

Este artigo descreve como gerir permissões RBAC para permitir que os membros da equipa trabalhem com o desktop AKS.

Observação

Atualmente, o ambiente de trabalho do AKS não oferece uma opção de interface para modificar permissões de projeto após a criação. Para atualizar permissões ou conceder acesso a utilizadores adicionais após a criação de um Projeto, utilize o portal Azure ou CLI do Azure conforme descrito neste artigo.

Observação

Quando cria Projetos no desktop do AKS, os namespaces geridos pelo AKS são criados no mesmo grupo de recursos do seu cluster.

Pré-requisitos

  • Uma assinatura do Azure. Se não tiver subscrição Azure, pode criar uma conta Azure gratuita.
  • CLI do Azure versão 2.64.0 ou posterior instalada e configurada. Verifique sua versão usando o az --version comando. Para instalar ou atualizar, consulte Instalar a CLI do Azure.
  • A aks-preview extensão CLI do Azure. Instala-o usando o az extension add --name aks-preview comando.
  • Uma compreensão básica do controlo de acesso baseado em funções (RBAC) do Azure, veja O que é o Azure RBAC? e funções incorporadas no Azure.
  • Um grupo de recursos Azure que contém o seu cluster AKS e quaisquer Projetos geridos por AKS criados através do desktop AKS.
  • Um cluster AKS Standard que cumpra os requisitos do ambiente de trabalho AKS ou um cluster AKS Automatic, que é o cluster Kubernetes onde as suas aplicações correm.
  • Um Azure Container Registry (ACR) para armazenar as imagens dos seus contentores para implementação.

Responsabilidades do operador do cluster

Como operador de cluster, é responsável por provisionar e configurar a infraestrutura fundamental que permite às equipas de desenvolvimento construir e implementar aplicações. As suas responsabilidades incluem:

  • Criar a infraestrutura Azure necessária (grupo de recursos, cluster AKS, ACR).
  • Configurar a integração ACR com o teu cluster AKS.
  • Atribuir permissões aos utilizadores para criar Projetos.
  • Opcionalmente, delegar a gestão de permissões aos criadores do projeto.

Criar recursos de infraestrutura

Para criar os recursos de infraestrutura, precisas de permissões para criar recursos no Azure. Se não lhe for atribuída a função Owner RBAC, precisa da função Contribuidor para criar recursos e da função Administrador de Acesso ao Utilizador para atribuir permissões a outros utilizadores. Atribua permissões aos utilizadores para que possam criar recursos no grupo de recursos usando os seguintes passos:

  1. Defina variáveis de ambiente para o seu grupo de recursos e nome do cluster. Certifica-te de substituir os marcadores de lugar pelos nomes reais do teu grupo de recursos e clusters.

    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. Atribuir o papel necessário para criar recursos no grupo de recursos usando o az role assignment create comando. Certifique-se de substituir <user-id> pelo ID de utilizador ou principal de serviço apropriado.

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

Integre o ACR com o seu cluster AKS

Anexe o seu registo de contentores Azure ao seu cluster AKS usando o az aks update comando.

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

Selecione um modelo de criação de projeto

Como operador de cluster, tens duas opções para a forma como os programadores trabalham com os Projetos no ambiente de trabalho AKS:

  • Modelo de autoatendimento: Os desenvolvedores criam e gerem os seus próprios projetos. Esta abordagem dá aos programadores total autonomia, mas exige a atribuição do papel de Contribuidor do Namespace do Serviço Azure Kubernetes . Quando os programadores criam os seus próprios Projetos, recebem automaticamente o papel de Proprietário no namespace gerido e podem imediatamente começar a implementar aplicações.
  • Modelo gerido: Cria-se Projetos para programadores e concede-lhes acesso. Atualmente, pode configurar isto durante a criação do projeto. Esta abordagem oferece mais controlo sobre a criação do Projeto, mas se precisar de atribuir mais membros da equipa ao Projeto após a criação, deve atribuir-lhes as permissões necessárias usando o portal Azure ou CLI do Azure, conforme descrito nas secções seguintes.

Modelo de autoatendimento: Permitir que os programadores criem os seus próprios projetos

Para permitir que os programadores criem os seus próprios Projetos, atribui-lhes o papel de Contribuidor do Namespace do Serviço Azure Kubernetes no cluster AKS. AKS desktop Os projetos criam namespaces geridos pelo AKS nos bastidores, e este papel concede as permissões necessárias.

Atribuir aos programadores o papel Azure Kubernetes Service Namespace Contributor usando o comando az role assignment create. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Modelo gerido: Criar projetos para programadores e atribuir acesso

Se preferir criar Projetos em nome dos programadores, deve atribuir três funções essenciais para lhes permitir aceder ao cluster e trabalhar dentro do espaço de nomes atribuído:

  • Papel de Utilizador do Azure Kubernetes Service Cluster: Permite aos programadores descarregar as credenciais do cluster usando o az aks get-credentials comando.
  • Azure Kubernetes Service Namespace User: Concede acesso ao namespace gerido.
  • Um dos papéis RBAC do Kubernetes (Leitor, Escritor ou Administrador): Controla que ações podem realizar no namespace.

Os três papéis são obrigatórios para que os programadores possam aceder e trabalhar com sucesso com os seus Projetos no ambiente de trabalho AKS. Sem o Azure Kubernetes Service Cluster User Role, os programadores não podem descarregar o ficheiro kubeconfig necessário para se ligar ao cluster.

Atribuir acesso ao cluster

Atribua o Azure Kubernetes Service Cluster User Role para permitir o download do kubeconfig com o comando az role assignment create. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Atribuir acesso ao espaço de nomes

Atribuir o papel de Utilizador do Namespace do Serviço Azure Kubernetes para o Projeto/namespace específico usando o az role assignment create comando. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Atribuir a Kubernetes papel RBAC

Atribuir a função RBAC do Kubernetes apropriada com base no que o desenvolvedor precisa fazer:

  • Azure Kubernetes Service RBAC Reader para acesso apenas de leitura.
  • Azure Kubernetes Service RBAC Writer para a implementação de aplicações.
  • Azure Kubernetes Service RBAC Admin para controlo administrativo total.
  1. Obtenha o ID do cluster AKS usando o az aks show comando.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Atribua a função RBAC apropriada no Kubernetes usando o comando az role assignment create. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado. O exemplo seguinte atribui a função de Escritor de RBAC do Azure Kubernetes Service:

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

Permitir que criadores de projetos atribuam permissões de acesso (opcional)

Se quiser que os criadores do Projeto possam atribuir permissões de acesso a outros utilizadores, conceda-lhes o papel de Administrador de Acesso ao Utilizador . Esta permissão permite ao utilizador definir permissões sobre quaisquer recursos do grupo de recursos de infraestrutura.

Atribuir o papel de Administrador de Acesso ao Utilizador usando o az role assignment create comando. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Responsabilidades do programador

Como programador, trabalha num ambiente de trabalho AKS existente para implementar aplicações, gerir Projetos e monitorizar as suas cargas de trabalho. O operador do cluster concede-lhe as permissões necessárias para realizar estas tarefas. As suas responsabilidades incluem:

  • Implementar aplicações em Projetos.
  • Visualizar e gerir aplicações implementadas.
  • Monitorizar métricas e registos de aplicações.
  • Modificar o acesso ao projeto (se necessário).

Funções de utilizador obrigatórias para programadores

Para trabalhar com desktop AKS como programador, o seu operador de cluster deve atribuir-lhe três funções essenciais:

  • Papel de Utilizador do Azure Kubernetes Service Cluster: Permite descarregar credenciais do cluster usando o az aks get-credentials comando, que é necessário para se ligar ao cluster a partir da sua máquina local ou através do desktop AKS.

  • Azure Kubernetes Service Namespace User: Concede acesso ao seu namespace/projeto gerido atribuído.

  • Um dos papéis RBAC do Kubernetes (Leitor, Escritor ou Administrador): Controla que ações pode realizar no namespace.

    • Azure Kubernetes Service RBAC Reader para acesso apenas de leitura.
    • Azure Kubernetes Service RBAC Writer para a implementação de aplicações.
    • Azure Kubernetes Service RBAC Admin para controlo administrativo total.

Como são atribuídas as permissões

As permissões são atribuídas com base na forma como os projetos são criados no ambiente de trabalho AKS:

  • Criador do projeto: Recebe automaticamente o papel de Proprietário no namespace gerido e todas as permissões necessárias para implementar aplicações.

  • Outros utilizadores: Deve ser concedido acesso pelo operador do cluster ou pelo criador do projeto. Recebem:

    • Função de Utilizador do Cluster do Serviço Azure Kubernetes no cluster.
    • Azure Kubernetes Service Namespace User função no namespace.
    • Um dos papéis RBAC do Kubernetes (Leitor, Escritor ou Administrador).

Para implementar aplicações, precisas do papel de Escritor ou Administrador . Para obter mais informações, consulte Funções internas de namespaces gerenciados.

Ver métricas de aplicação

Observação

Pode demorar até 10 minutos para as métricas aparecerem depois de uma aplicação ser implementada.

No ecrã inicial do Projeto, pode visualizar métricas para a sua aplicação, como CPU, memória e utilização de rede. Estas métricas são obtidas a partir do endpoint Managed Prometheus, apoiado por um espaço de trabalho Azure Monitor.

Para visualizar métricas, precisa do papel de Leitor de Dados de Monitorização no espaço de trabalho Azure Monitor. Esta função concede acesso a todas as métricas do cluster, não apenas aos seus Projetos específicos.

O seu operador de cluster pode atribuir esta permissão usando os seguintes passos:

  1. Identifique o espaço de trabalho Azure Monitor usado pelo seu cluster usando o 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. Atribui o papel de Leitor de Dados de Monitorização usando o az role assignment create comando. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Modificar permissões de acesso ao projeto

Atualmente, o desktop do AKS não oferece uma opção de interface para modificar permissões de projeto após a criação. Se precisares de atualizar as tuas permissões ou conceder acesso a outros, trabalha com o teu operador de cluster para atualizar permissões usando o portal Azure ou a CLI do Azure. Os passos seguintes descrevem como atribuir os papéis necessários usando o CLI do Azure:

Atribuir acesso ao cluster

Atribua o Azure Kubernetes Service Cluster User Role para permitir o download do kubeconfig com o comando az role assignment create. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Atribuir acesso ao espaço de nomes

Atribuir o papel de Utilizador do Namespace do Serviço Azure Kubernetes para o Projeto/namespace específico usando o az role assignment create comando. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado.

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

Atribuir a Kubernetes papel RBAC

Atribuir a função RBAC do Kubernetes apropriada com base no que o desenvolvedor precisa fazer:

  • Azure Kubernetes Service RBAC Reader para acesso apenas de leitura.
  • Azure Kubernetes Service RBAC Writer para a implementação de aplicações.
  • Azure Kubernetes Service RBAC Admin para controlo administrativo total.
  1. Obtenha o ID do cluster AKS usando o az aks show comando.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Atribua a função RBAC apropriada no Kubernetes usando o comando az role assignment create. Certifique-se de substituir o marcador pelo ID de utilizador ou principal de serviço apropriado. O exemplo seguinte atribui a função de Escritor de RBAC do Azure Kubernetes Service:

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

Conceder permissões para visualização de métricas (opcional)

Para conceder permissões para visualizar métricas, siga os passos na secção Visualizar métricas de aplicação .