Usar o controle de acesso baseado em função do Azure para Autorização do Kubernetes
Ao aproveitar a autenticação integrada entre o Microsoft Entra ID e o AKS, você pode usar usuários, grupos ou entidades de serviço do Microsoft Entra como sujeitos no controle de acesso baseado em função do Kubernetes (Kubernetes RBAC). Esse recurso libera você de ter que gerenciar separadamente identidades de usuário e credenciais para o Kubernetes. No entanto, você ainda precisa configurar e gerenciar o RBAC do Azure e o RBAC do Kubernetes separadamente.
Este artigo aborda como usar o RBAC do Azure para Autorização do Kubernetes, que permite o gerenciamento unificado e o controle de acesso entre recursos do Azure, AKS e recursos do Kubernetes. Para obter mais informações, consulte RBAC do Azure para Autorização do Kubernetes.
Antes de começar
- Você precisa da CLI do Azure versão 2.24.0 ou posterior instalada e configurada. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Você precisa de
kubectl
, com uma versão mínima de 1.18.3. - Você precisa da integração gerenciada do Microsoft Entra habilitada em seu cluster antes de poder adicionar o RBAC do Azure para autorização do Kubernetes. Se você precisar habilitar a integração gerenciada do Microsoft Entra, consulte Usar o ID do Microsoft Entra no AKS.
- Se você tem CRDs e está fazendo definições de função personalizadas, a única maneira de cobrir CRDs hoje é usar
Microsoft.ContainerService/managedClusters/*/read
o . Para os objetos restantes, você pode usar os grupos de API específicos, comoMicrosoft.ContainerService/apps/deployments/read
. - Novas atribuições de função podem levar até cinco minutos para serem propagadas e atualizadas pelo servidor de autorização.
- A Autorização do RBAC do Azure para Kubernetes requer que o locatário do Microsoft Entra configurado para autenticação seja o mesmo que o locatário da assinatura que contém seu cluster AKS.
Criar um novo cluster AKS com integração gerenciada do Microsoft Entra e Autorização do Azure RBAC para Kubernetes
Crie um grupo de recursos do Azure usando o az group create
comando.
az group create --name myResourceGroup --location westus2
Crie um cluster AKS com integração gerenciada do Microsoft Entra e RBAC do Azure para Autorização Kubernetes usando o az aks create
comando.
az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac
A saída será semelhante à saída de exemplo a seguir:
"AADProfile": {
"adminGroupObjectIds": null,
"clientAppId": null,
"enableAzureRbac": true,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "****-****-****-****-****"
}
Habilitar o RBAC do Azure em um cluster AKS existente
Adicione o RBAC do Azure para Autorização do Kubernetes em um cluster AKS existente usando o comando com o az aks update
enable-azure-rbac
sinalizador.
az aks update -g myResourceGroup -n myAKSCluster --enable-azure-rbac
Desabilitar a Autorização do RBAC do Azure para Kubernetes de um cluster AKS
Remova o RBAC do Azure para Autorização do Kubernetes de um cluster AKS existente usando o comando com o az aks update
disable-azure-rbac
sinalizador.
az aks update -g myResourceGroup -n myAKSCluster --disable-azure-rbac
Criar atribuições de funções para os utilizadores acederem ao cluster
O AKS fornece as seguintes funções integradas:
Função | Description |
---|---|
Azure Kubernetes Service RBAC Reader | Permite acesso somente leitura para ver a maioria dos objetos em um namespace. Ele não permite a visualização de funções ou associações de funções. Essa função não permite a visualização, uma vez que a Secrets leitura do conteúdo de Secrets permite o acesso às credenciais ServiceAccount no namespace, o que permitiria o acesso à API como qualquer ServiceAccount no namespace (uma forma de escalonamento de privilégios). |
Gravador RBAC do Serviço Kubernetes do Azure | Permite acesso de leitura/gravação à maioria dos objetos em um namespace. Esta função não permite visualizar ou modificar funções ou associações de funções. No entanto, essa função permite acessar Secrets e executar Pods como qualquer ServiceAccount no namespace, para que possa ser usada para obter os níveis de acesso à API de qualquer ServiceAccount no namespace. |
Azure Kubernetes Service RBAC Admin | Permite acesso de administrador, destinado a ser concedido dentro de um namespace. Permite acesso de leitura/gravação à maioria dos recursos em um namespace (ou escopo de cluster), incluindo a capacidade de criar funções e associações de função dentro do namespace. Essa função não permite acesso de gravação à cota de recursos ou ao namespace em si. |
Azure Kubernetes Service RBAC Cluster Admin | Permite o acesso de superusuário para executar qualquer ação em qualquer recurso. Ele dá controle total sobre todos os recursos no cluster e em todos os namespaces. |
As atribuições de funções com escopo para todo o cluster AKS podem ser feitas na folha Controle de Acesso (IAM) do recurso de cluster no portal do Azure ou usando os seguintes comandos da CLI do Azure:
Obtenha o seu ID de recurso AKS usando o az aks show
comando.
AKS_ID=$(az aks show -g myResourceGroup -n myManagedCluster --query id -o tsv)
Crie uma atribuição de função usando o az role assignment create
comando. <AAD-ENTITY-ID>
pode ser um nome de usuário ou a ID do cliente de uma entidade de serviço.
az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Nota
Você pode criar as atribuições de função Leitor RBAC do Serviço Kubernetes do Azure e Gravador RBAC do Serviço do Kubernetes do Azure com escopo para um namespace específico dentro do cluster usando o comando e definindo o escopo para o az role assignment create
namespace desejado.
az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Nota
No portal do Azure, depois de criar atribuições de função com escopo para um namespace desejado, você não poderá ver "atribuições de função" para namespace em um escopo. Você pode encontrá-lo usando o az role assignment list
comando ou listar atribuições de função para um usuário ou grupo, ao qual você atribuiu a função.
az role assignment list --scope $AKS_ID/namespaces/<namespace-name>
Criar definições de funções personalizadas
O exemplo a seguir, a definição de função personalizada permite que um usuário leia apenas implantações e nada mais. Para obter a lista completa de ações possíveis, consulte Operações Microsoft.ContainerService.
Para criar suas próprias definições de função personalizadas, copie o arquivo a seguir, substituindo <YOUR SUBSCRIPTION ID>
por sua própria ID de assinatura, e salve-o como deploy-view.json
.
{
"Name": "AKS Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.ContainerService/managedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Crie a definição de função usando o comando, definindo o para o az role definition create
--role-definition
deploy-view.json
arquivo 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 Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Usar o RBAC do Azure para Autorização do Kubernetes com kubectl
Certifique-se de que tem a função incorporada de Utilizador do Cluster de Serviços do Kubernetes do Azure e, em seguida, obtenha o kubeconfig do seu cluster AKS utilizando o az aks get-credentials
comando.
az aks get-credentials -g myResourceGroup -n myManagedCluster
Agora, você pode usar kubectl
gerenciar seu cluster. Por exemplo, você pode listar os nós em seu cluster usando kubectl get nodes
. Na primeira vez que executá-lo, você precisará entrar, conforme mostrado no exemplo a seguir:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME STATUS ROLES AGE VERSION
aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11
aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11
aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Usar o RBAC do Azure para Autorização do Kubernetes com kubelogin
O AKS criou o kubelogin
plug-in para ajudar a desbloquear cenários adicionais, como logins não interativos, versões mais antigas kubectl
ou aproveitar o SSO em vários clusters sem a necessidade de entrar em um novo cluster.
Você pode usar o plugin executando o kubelogin
seguinte comando:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Semelhante ao kubectl
, você precisa fazer login na primeira vez que executá-lo, conforme mostrado no exemplo a seguir:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME STATUS ROLES AGE VERSION
aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11
aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11
aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Clean up resources (Limpar recursos)
Excluir atribuição de função
# List role assignments
az role assignment list --scope $AKS_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 Deployment Reader"
Excluir grupo de recursos e cluster AKS
az group delete -n myResourceGroup
Próximos passos
Para saber mais sobre autenticação, autorização, RBAC do Kubernetes e RBAC do Azure, consulte: