Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: AKS no Azure Local
Os administradores de infraestrutura podem usar o RBAC (controle de acesso baseado em função) do Azure para controlar quem pode acessar o arquivo kubeconfig e as permissões que eles têm. Os operadores do Kubernetes podem interagir com clusters do Kubernetes usando a ferramenta kubectl com base nas permissões fornecidas. A CLI do Azure fornece uma maneira fácil de obter as credenciais de acesso e o arquivo de configuração kubeconfig para se conectar aos clusters do AKS usando kubectl.
Ao usar a autenticação integrada entre a ID do Microsoft Entra e o AKS, você pode usar usuários, grupos ou entidades de serviço do Microsoft Entra como entidades no RBAC (controle de acesso baseado em função) do Kubernetes. Esse recurso libera você de ter que gerenciar separadamente as identidades e credenciais do usuário para o Kubernetes. No entanto, você ainda deve configurar e gerenciar o RBAC do Azure e o RBAC do Kubernetes separadamente.
Este artigo descreve como utilizar o RBAC do Azure para a autorização de clusters Kubernetes com o Microsoft Entra ID e as atribuições de função do Azure.
Para obter uma visão geral conceitual, consulte a Autorização do RBAC do Azure para Kubernetes para AKS habilitada pelo Azure Arc.
Antes de começar
Antes de começar, verifique se você tem os seguintes pré-requisitos:
Atualmente, o AKS no Azure Local dá suporte à habilitação do RBAC do Azure somente durante a criação do cluster do Kubernetes. Você não pode habilitar o RBAC do Azure depois que o cluster kubernetes é criado.
Você pode habilitar o RBAC do Azure usando a CLI do Azure ou o portal do Azure. Para usar a CLI do Azure, você deve instalar as versões mais recentes das extensões da CLI do Azure aksarc e connectedk8s . Observe que você precisa da extensão aksarc versão 1.1.1 ou posterior para habilitar o RBAC do Azure. Execute
az --version
para encontrar a versão atual. Se você precisar instalar ou atualizar o CLI do Azure, veja Instalar o CLI do Azure.az extension add --name aksarc az extension add --name connectedk8s
Se você já tiver instalado a
aksarc
extensão, atualize a extensão para a versão mais recente:az extension update --name aksarc az extension update --name connectedk8s
Para interagir com clusters do Kubernetes, você deve instalar o kubectl e o kubelogin.
As seguintes permissões são necessárias para habilitar o RBAC do Azure ao criar um cluster do Kubernetes:
Para criar um cluster do Kubernetes, a função colaborador do Azure Kubernetes Service Arc é necessária.
Para usar o parâmetro
--enable-azure-rbac
, é necessário o papel de Administrador de Controle de Acesso Baseado em Função para acessar a permissão Microsoft.Authorization/roleAssignments/write.Para atribuir essas funções, use o comando az role assignment create CLI ou siga Atribuir funções do Azure usando a CLI do Azure:
az role assignment create --assignee <assignee-object-id> --role <role-name-or-id> --scope $ARM_ID
Novas atribuições de função podem levar até cinco minutos para serem propagadas e atualizadas pelo servidor de autorização.
Depois que o RBAC do Azure estiver habilitado, você poderá acessar o cluster do Kubernetes com as permissões fornecidas usando o modo direto ou o modo proxy.
- Para acessar o cluster do Kubernetes diretamente usando o comando
az aksarc get-credentials
, você precisa do Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, que está incluído na permissão da função Usuário do cluster de arco do serviço do Kubernetes do Azure. - Para acessar o cluster do Kubernetes de qualquer lugar com um modo proxy usando o comando
az connectedk8s proxy
, ou do portal do Azure, você precisa da ação Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, que está incluído na permissão da função Usuário do cluster Kubernetes habilitado para o Azure Arc. Enquanto isso, você precisa verificar se os agentes e o computador que executa o processo de integração atendem aos requisitos de rede nos Requisitos de rede do Kubernetes habilitados para Azure Arc especificados.
- Para acessar o cluster do Kubernetes diretamente usando o comando
Para usar o kubectl, você pode acessá-lo usando o RBAC do Azure ou o Grupo de Administradores do AAD.
- Para usar o kubectl com o RBAC do Azure, você precisa da função Visualizador do Kubernetes do Azure Arc com escopo para o recurso de cluster conectado.
- Para usar o kubectl com o Grupo de Administradores do AAD, você não precisa de nenhuma função específica, mas deve garantir que está em um dos grupos na lista de grupos de administradores adicionais do recurso de cluster conectado.
Etapa 1: Criar um cluster do Kubernetes com RBAC habilitado no Azure
Você pode criar um cluster Kubernetes habilitado para RBAC do Azure para autorização e um Microsoft Entra ID para autenticação.
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
Após alguns minutos, o comando será concluído e retornará informações no formato JSON sobre o cluster.
Etapa 2: Criar atribuições de função para os usuários acessarem o cluster
O AKS habilitado pelo Arc fornece as cinco funções internas a seguir. Elas são semelhantes às funções internas do Kubernetes com algumas diferenças, como suporte a CRDs. Veja a lista completa de ações permitidas por cada função interna do Azure.
Função | Descrição |
---|---|
Usuário do cluster Kubernetes habilitado para Azure Arc | Permite que você recupere o arquivo kubeconfig baseado em Cluster Connect para gerenciar clusters de qualquer lugar. |
Visualizador do Kubernetes do Azure Arc | Permite acesso somente leitura para ver a maioria dos objetos em um namespace. Não permite a visualização de segredos, pois a permissão de leitura em segredos viabiliza o acesso às credenciais do ServiceAccount no namespace. Essas credenciais, por sua vez, permitem acesso à API por meio desse valor ServiceAccount (uma forma de escalonamento de privilégios). |
Gravador do Azure Arc Kubernetes | Permite acesso de leitura/gravação à maioria dos objetos em um namespace. Não permite exibir ou modificar funções ou associações de função. No entanto, essa função permite acessar segredos e executar pods como qualquer outro valor ServiceAccount no namespace, para que possa ser usado para obter os níveis de acesso à API de qualquer valor do tipo ServiceAccount no namespace. |
Administrador do Kubernetes do Azure Arc | Permite o acesso de administrador. Pretende-se que ele seja concedido dentro de um namespace por meio do RoleBinding. Se usado em RoleBinding, permitirá acesso de leitura/gravação para a maioria dos recursos em um namespace, incluindo a capacidade de criar funções e associações de função no namespace. Essa função não permite acesso de gravação à cota de recursos ou ao próprio namespace. |
Administrador do Cluster do Kubernetes do Azure Arc | Permite o acesso de "superusuário" para executar qualquer ação em qualquer recurso. Quando você o usa no ClusterRoleBinding, ele fornece controle total sobre todos os recursos no cluster e em todos os namespaces. Quando você o usa no RoleBinding, ele fornece controle total sobre todos os recursos no namespace de associação de função, incluindo o namespace em si. |
Você pode usar o az role assignment create
comando para criar atribuições de função.
Primeiro, obtenha o $ARM-ID
para o cluster de destino ao qual você deseja atribuir uma função.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Em seguida, use o az role assignment create
comando para atribuir funções ao cluster do Kubernetes. Você deve fornecer o $ARM_ID
da primeira etapa e o assignee-object-id
para esta etapa. O assignee-object-id
pode ser um ID do Microsoft Entra ou um ID do cliente da entidade de serviço.
O exemplo a seguir atribui a função de Visualizador de Kubernetes do Azure Arc ao cluster do Kubernetes:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
Neste exemplo, o escopo é a ID do Azure Resource Manager do cluster. Ele também pode ser o grupo de recursos que contém o cluster do Kubernetes.
Criar definições de função personalizada
Você pode optar por criar sua própria definição de função para uso em atribuições de função.
O exemplo a seguir mostra uma definição de função que permite que um usuário leia apenas as implantações. Para saber mais, confira a lista completa de ações de dados que você pode usar para criar uma definição de função. Para obter mais informações sobre como criar uma função personalizada, consulte Etapas para criar uma função personalizada
Para criar suas próprias definições de função personalizadas, copie o seguinte objeto JSON em um arquivo chamado custom-role.json. Substitua o espaço reservado <subscription-id>
pela ID da assinatura real. A função personalizada usa uma das ações de dados e permite exibir todas as implantações no escopo (cluster ou namespace) em que a atribuição de função é criada.
{
"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>"
]
}
Para obter informações sobre funções personalizadas e como criar, consulte as funções personalizadas do Azure.
Crie a definição de função usando o az role definition create
comando, definindo o --role-definition
parâmetro para o arquivo deploy-view.json que você criou na etapa anterior:
az role definition create --role-definition @deploy-view.json
Atribua a definição de função a um usuário ou outra identidade usando o az role assignment create
comando:
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Etapa 3: Acessar o cluster do Kubernetes
Agora você pode acessar o cluster do Kubernetes com as permissões fornecidas usando o modo direto ou o modo proxy.
Acessar seu cluster com kubectl (modo direto)
Para acessar o cluster kubernetes com as permissões fornecidas, o operador Kubernetes precisa do kubeconfig do Microsoft Entra, que você pode obter usando o az aksarc get-credentials
comando. Esse comando fornece acesso ao kubeconfig baseado em administrador, bem como a um kubeconfig baseado no usuário. O arquivo kubeconfig gerenciado por administrador contém segredos e deve ser armazenado com segurança e rotacionado periodicamente. Por outro lado, o kubeconfig do Microsoft Entra ID baseado no usuário não contém segredos e pode ser distribuído aos usuários que se conectam a partir de suas máquinas clientes.
Para executar este comando da CLI do Azure, você precisa do Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, que está incluído na permissão de função de usuário do Cluster do Azure Kubernetes Service Arc :
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
Agora você pode usar o kubectl para gerenciar seu cluster. Por exemplo, você pode listar os nós no cluster usando kubectl get nodes
. Na primeira vez que executá-lo, você deve fazer login, como mostrado no exemplo abaixo:
kubectl get nodes
Acessar o cluster de um dispositivo cliente (modo proxy)
Para acessar o cluster do Kubernetes de qualquer lugar com um modo proxy usando o comando az connectedk8s proxy
, você precisa do Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, que está incluído na permissão de função Usuário do cluster Kubernetes habilitado para o Azure Arc.
Execute as seguintes etapas em outro dispositivo cliente:
Entrar usando a autenticação do Microsoft Entra
Obtenha o kubeconfig necessário para conexão ao cluster e comunicação a partir de qualquer lugar, até mesmo fora do firewall que circunda o cluster.
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Observação
Esse comando abre o proxy e bloqueia o shell atual.
Em uma sessão de shell diferente, use
kubectl
para enviar solicitações ao cluster:kubectl get pods -A
Agora você deve ver uma resposta do cluster que contém a lista de todos os pods no namespace default
.
Para obter mais informações, consulte Acessar seu cluster de um dispositivo cliente.
Limpar os recursos
Excluir atribuição de função
# 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>
Excluir definição de função
az role definition delete -n "AKS Arc Deployment Reader"
Próximas etapas
- RBAC do Azure (controle de acesso baseado em função do Azure)
- Opções de acesso e identidade para AKS habilitados pelo Azure Arc
- Criar uma entidade de serviço do Azure com a CLI do Azure 2.0
- Permissões disponíveis do Azure para Híbrido + Multicloud