Usar o controle de acesso baseado em função do Azure para definir o acesso ao arquivo de configuração do Kubernetes no Serviço Kubernetes do Azure (AKS)
Você pode interagir com clusters Kubernetes usando a kubectl
ferramenta. 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 seus clusters AKS usando kubectl
o . Você pode usar o controle de acesso baseado em função do Azure (Azure RBAC) para limitar quem pode obter acesso ao arquivo kubeconfig e as permissões que eles têm.
Este artigo mostra como atribuir funções do Azure que limitam quem pode obter as informações de configuração para um cluster AKS.
Antes de começar
- Este artigo pressupõe que você tenha um cluster AKS existente. Se você precisar de um cluster AKS, crie um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
- Este artigo também requer que você esteja executando a CLI do Azure versão 2.0.65 ou posterior. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Permissões disponíveis para funções de cluster
Quando você interage com um cluster AKS usando a ferramenta, um arquivo de configuração, chamado kubeconfig, define as kubectl
informações de conexão do cluster. Este ficheiro de configuração é normalmente armazenado em ~/.kube/config. Vários clusters podem ser definidos neste arquivo kubeconfig . Você pode alternar entre clusters usando o kubectl config use-context
comando.
O az aks get-credentials
comando permite obter as credenciais de acesso para um cluster AKS e mescla essas credenciais no arquivo kubeconfig . Você pode usar o RBAC do Azure para controlar o acesso a essas credenciais. Essas funções do Azure permitem definir quem pode recuperar o arquivo kubeconfig e quais permissões eles têm dentro do cluster.
Há duas funções do Azure que você pode aplicar a um usuário ou grupo do Microsoft Entra:
Função de Administrador do Cluster de Serviço do Kubernetes do Azure
- Permite o acesso à chamada da
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
API. Esta chamada de API lista as credenciais de administrador do cluster. - Downloads kubeconfig para a função clusterAdmin .
- Permite o acesso à chamada da
Função de Usuário do Cluster de Serviço do Kubernetes do Azure
- Permite o acesso à chamada da
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
API. Esta chamada de API lista as credenciais de usuário do cluster. - Downloads kubeconfig para clusterUser role.
- Permite o acesso à chamada da
Nota
Em clusters que usam o Microsoft Entra ID, os usuários com a função clusterUser têm um arquivo kubeconfig vazio que solicita um login. Uma vez conectados, os usuários têm acesso com base em suas configurações de usuário ou grupo do Microsoft Entra. Os usuários com a função clusterAdmin têm acesso de administrador.
Em clusters que não usam o Microsoft Entra ID, a função clusterUser tem o mesmo efeito da função clusterAdmin.
Atribuir permissões de função a um usuário ou grupo
Para atribuir uma das funções disponíveis, você precisa obter a ID de recurso do cluster AKS e a ID da conta de usuário ou grupo do Microsoft Entra usando as seguintes etapas:
- Obtenha o ID do recurso do cluster usando o
az aks show
comando para o cluster chamado myAKSCluster no grupo de recursos myResourceGroup . Forneça seu próprio nome de cluster e grupo de recursos conforme necessário. - Use os comandos e
az ad user show
para obter seu ID deaz account show
usuário. - Atribua uma função usando o
az role assignment create
comando.
O exemplo a seguir atribui a Função de Administração do Cluster de Serviço do Kubernetes do Azure a uma conta de usuário individual:
# 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 você quiser atribuir permissões a um grupo do Microsoft Entra, atualize o --assignee
parâmetro mostrado no exemplo anterior com a ID do objeto para o grupo em vez do usuário.
Para obter a ID do objeto para um grupo, use o az ad group show
comando. O comando a seguir obtém a ID do objeto para o grupo do Microsoft Entra chamado appdev:
az ad group show --group appdev --query objectId -o tsv
Importante
Em alguns casos, como usuários convidados do Microsoft Entra, o user.name na conta é diferente do 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
Nesse caso, defina o valor de ACCOUNT_UPN para userPrincipalName do usuário do Microsoft Entra. Por exemplo, se o user.name da sua conta for user@contoso.com, esta ação será semelhante ao exemplo a seguir:
ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)
Obter e verificar as informações de configuração
Depois que as funções forem atribuídas, use o az aks get-credentials
comando para obter a definição kubeconfig para seu cluster AKS. O exemplo a seguir obtém as credenciais --admin , que funcionam corretamente se o usuário tiver recebido a Função de Administrador de Cluster:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
Em seguida, você pode usar o kubectl config view
comando para verificar se o contexto do cluster mostra que as informações de configuração de administrador foram aplicadas.
$ kubectl config view
Sua saída deve ser semelhante à saída de exemplo a seguir:
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
Remover permissões de função
Para remover atribuições de função, use o az role assignment delete
comando. Especifique o ID da conta e o ID do recurso de cluster que você obteve nas etapas anteriores. Se você atribuiu a função a um grupo em vez de um usuário, especifique o ID de objeto de grupo apropriado em vez do ID de objeto de conta para o --assignee
parâmetro.
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER
Próximos passos
Para maior segurança no acesso a clusters AKS, integre a autenticação Microsoft Entra.
Azure Kubernetes Service