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.
Ao configurar permissões para diferentes equipes, você pode definir permissões padrão para equipes especificadas e, em seguida, conceder acesso privilegiado a usuários específicos quando necessário. Usar o Azure Kubernetes Service (AKS) com o Microsoft Entra ID permite configurar o Privileged Identity Management (PIM) para solicitações de acesso just-in-time (JIT) ao plano de controle do cluster e acesso SSH aos nós.
Neste artigo, você aprenderá como:
- Defina funções padrão para grupos de exemplo acessarem ou executarem operações em clusters AKS e nós de cluster com base nas associações de grupo do Microsoft Entra.
- Configurar perfis básicos para acessar clusters do AKS e acesso SSH aos nós.
- Ative funções automaticamente para obter acesso imediato a clusters e nós do AKS.
- Defina aprovadores para aprovar ou negar solicitações de aprovação para acesso just-in-time.
Observação
O PIM (Privileged Identity Management) do Microsoft Entra possui funcionalidades do Microsoft Entra ID P2 ou do Microsoft Entra ID Governance, que exigem uma SKU Premium P2. Para obter mais informações, consulte os Fundamentos de licenciamento do Microsoft Entra ID Governance e o guia de preços.
Pré-requisitos
Este artigo pressupõe que você já tenha um cluster AKS com integração do Microsoft Entra ID. Se você não tiver um, consulte Criar um cluster do AKS com a integração do Microsoft Entra ID.
Para acesso SSH aos nós, este artigo pressupõe que você tenha configurado seu cluster AKS com SSH baseado no Entra ID. Caso contrário, consulte Gerenciar SSH para obter acesso seguro aos nós do AKS (Serviço de Kubernetes do Azure).
Crie grupos de demonstração no Microsoft Entra ID
Nesta seção, criamos quatro grupos na ID do Microsoft Entra:
-
Padrão: este grupo tem acesso somente leitura (
Azure Kubernetes Service RBAC Reader) aos recursos no cluster do AKS. -
Administrador: este grupo tem acesso de administrador (
Azure Kubernetes Service RBAC Admin) aos recursos no cluster do AKS. -
Acesso ao nó: esse grupo tem permissões para acessar nós do cluster via SSH usando a autenticação Entra ID (
Virtual Machine User Login). - Aprovador: esse grupo tem permissões para aprovar ou negar solicitações de acesso just-in-time ao cluster e aos nós do AKS.
Você pode usar apenas os grupos padrão e de administrador em vez de criar um grupo de aprovadores separado. No entanto, se você incluir permissões de aprovação no grupo de administradores, o membro que obtém acesso just-in-time poderá aprovar suas próprias solicitações e as solicitações de outras pessoas. Não recomendamos o uso dessa configuração em um ambiente de produção, mas ela é útil para fins de teste.
Crie um grupo padrão
Obtenha o ID do recurso do cluster AKS usando o comando
az aks show.AKS_ID=$(az aks show \ --resource-group <resource-group-name> \ --name <cluster-name> \ --query id \ --output tsv)Obtenha o ID do grupo de recursos do cluster AKS usando o comando
az group show.RG_ID=$(az group show \ --resource-group <resource-group-name> \ --query id \ --output tsv)Crie o grupo padrão usando o comando
az ad group create.DEFAULT_ID=$(az ad group create \ --display-name default \ --mail-nickname default \ --query id \ --output tsv)Crie uma atribuição de função do Azure para o grupo padrão usando o comando
az role assignment create.Há três funções que você pode atribuir ao grupo padrão, dependendo de seus requisitos específicos:
-
Azure Kubernetes Service RBAC Reader: atribuído no escopo do cluster do AKS e fornece acesso básico somente leitura à maioria dos recursos no cluster. -
Reader: atribuído no escopo do grupo de recursos e fornece acesso somente leitura aos recursos no grupo de recursos. -
Azure Kubernetes Service Cluster User Role: atribuído no escopo do cluster do AKS e dá acesso para obter o contexto kubeconfig para o cluster do AKS.
# Assign the Azure Kubernetes Service RBAC Reader role to the default group az role assignment create \ --role "Azure Kubernetes Service RBAC Reader" \ --assignee $DEFAULT_ID \ --scope $AKS_ID # Assign the Reader role to the default group az role assignment create \ --role "Reader" \ --assignee $DEFAULT_ID \ --scope $RG_ID # Assign the Azure Kubernetes Service Cluster User Role to the default group az role assignment create \ --role "Azure Kubernetes Service Cluster User Role" \ --assignee $DEFAULT_ID \ --scope $AKS_ID-
Crie um grupo de administradores
Crie o grupo de administradores usando o comando
az ad group create.ADMIN_ID=$(az ad group create \ --display-name admin \ --mail-nickname admin \ --query id \ --output tsv)Atribua a função
Azure Kubernetes Service RBAC Adminao grupo de administradores usando o comandoaz role assignment create.az role assignment create \ --role "Azure Kubernetes Service RBAC Admin" \ --assignee $ADMIN_ID \ --scope $AKS_ID
Observação
Se você quiser permitir que os usuários no grupo de administradores alterem as configurações do pool de nós, como a escala manual, será necessário criar uma atribuição de função Contributor no pool de nós de cluster usando o seguinte comando:
az role assignment create \
--role "Contributor" \
--assignee $ADMIN_ID \
--scope $AKS_ID/nodepools/<node-pool-name>
Lembre-se de que isso só dá permissão para escalar para dentro ou para fora do recurso AKS. Se você deseja permitir o aumento ou a redução da escala do recurso Conjunto de Dimensionamento de Máquinas Virtuais, precisa criar uma atribuição no nível do Conjunto de Dimensionamento de Máquinas Virtuais.
Crie um grupo aprovador
Crie o grupo aprovador usando o comando
az ad group create.APPROVER_ID=$(az ad group create \ --display-name approver \ --mail-nickname approver \ --query id \ --output tsv)
Criar grupo de acesso a nós
Crie o grupo de acesso ao nó usando o comando
az ad group create.NODEACCESS_ID=$(az ad group create \ --display-name node-access \ --mail-nickname node-access \ --query id \ --output tsv)Obtenha o ID do recurso do grupo de recursos do nó (também conhecido como grupo de recursos de infraestrutura) usando o comando
az aks show.NODE_RG_ID=$(az aks show \ --resource-group <resource-group-name> \ --name <cluster-name> \ --query nodeResourceGroup \ --output tsv) NODE_RG_SCOPE=$(az group show \ --name $NODE_RG_ID \ --query id \ --output tsv)Atribua a
Virtual Machine User Loginfunção ao grupo node-access com o comandoaz role assignment create.az role assignment create \ --role "Virtual Machine User Login" \ --assignee $NODEACCESS_ID \ --scope $NODE_RG_SCOPEObservação
Se você quiser conceder acesso de administrador a nós, use a função
Virtual Machine Administrator Login.
Crie usuários de demonstração no Microsoft Entra ID
Nesta seção, criamos dois usuários no Microsoft Entra ID: um usuário normal com apenas a função padrão, e um usuário privilegiado que pode aprovar ou negar solicitações just-in-time do usuário normal.
Crie o usuário normal usando o comando
az ad user create. Para os comandos de variável de senha, os valores ficam ocultos para que não sejam exibidos no console.DOMAIN=contoso.com read -sp 'Enter password for NUSER_ID: ' NUSERPASSWORD read -sp 'Enter password for PUSER_ID: ' PUSERPASSWORD NUSER_ID=$(az ad user create \ --display-name n01 \ --password ${NUSERPASSWORD} \ --user-principal-name n01@${DOMAIN} \ --query id \ --output tsv)Adicione o usuário normal ao grupo padrão usando o comando
az ad group member add.az ad group member add \ --group $DEFAULT_ID \ --member-id $NUSER_IDCrie o usuário privilegiado usando o comando
az ad user create.PUSER_ID=$(az ad user create \ --display-name p01 \ --password ${PUSERPASSWORD} \ --user-principal-name p01@${DOMAIN} \ --query id \ --output tsv)Adicione o usuário privilegiado ao grupo aprovador usando o comando
az ad group member add.az ad group member add \ --group $APPROVER_ID \ --member-id $PUSER_ID
Habilite o PIM (Privileged Identity Management) para o grupo de administradores
Esta seção mostra como habilitar o PIM para o grupo admin para fornecer acesso just-in-time ao plano de controle do cluster AKS.
- Na Página inicial do portal do Azure, selecione Microsoft Entra ID.
- No menu de serviço, em Gerenciar, selecione Grupos e selecione o grupo de administradores.
- No menu de serviço, em Atividade, selecione Privileged Identity Management e, em seguida, selecione Habilitar PIM para este grupo.
Defina um aprovador para o grupo de administradores
Na Home page do portal do Azure, pesquise e selecione o Privileged Identity Management.
No menu de serviço, em Gerenciar, selecione Grupos e selecione o grupo de administradores.
No menu de serviço, em Gerenciar, selecione Atribuições>Adicionar atribuições.
Na guia Associação da página Adicionar atribuições, selecione Membro como a função selecionada e padrão como o membro selecionado e selecione Avançar.
Na guia Configurações, selecione Qualificado como o tipo de atribuição e selecione Atribuir.
No menu de serviço, em Gerenciar, selecione Configurações>Membro>Editar.
Na página Editar configuração de função – Membro, selecione a caixa de seleção Exigir aprovação para ativar e adicione o grupo de aprovadores como o aprovador selecionado.
Observação
Se você não selecionar a caixa de seleção Exigir aprovação para ativar, os usuários no grupo padrão poderão ativar automaticamente a função para obter acesso just-in-time ao cluster do AKS sem aprovação. O usuário no grupo de aprovadores precisa ser membro do grupo. Mesmo que você defina o usuário como o proprietário, ele ainda não poderá examinar solicitações just-in-time porque o proprietário do grupo só tem direitos administrativos para o grupo, não a atribuição de função. Você pode definir o usuário como o membro e o proprietário do mesmo grupo sem conflitos.
Faça outras alterações necessárias e selecione Atualizar.
Para obter mais informações sobre a configuração do PIM, confira Configurar o PIM para grupos.
Habilitar o Gerenciamento de Identidades Privilegiadas (PIM) para o grupo de acesso aos nós
Esta seção mostra como habilitar o PIM para o grupo node-access para fornecer acesso SSH just-in-time aos nós de cluster.
- Na Página inicial do portal do Azure, selecione Microsoft Entra ID.
- No menu de serviço, em Gerenciar, selecione Grupos e selecione o grupo node-access.
- No menu de serviço, em Atividade, selecione Privileged Identity Management e, em seguida, selecione Habilitar PIM para este grupo.
Defina um aprovador para o grupo de acesso ao nó
- Na Home page do portal do Azure, pesquise e selecione o Privileged Identity Management.
- No menu de serviço, em Gerenciar, selecione Grupos e selecione o grupo node-access.
- No menu de serviço, em Gerenciar, selecione Atribuições>Adicionar atribuições.
- Na guia Associação da página Adicionar atribuições, selecione Membro como a função selecionada e padrão como o membro selecionado e selecione Avançar.
- Na guia Configurações, selecione Qualificado como o tipo de atribuição e selecione Atribuir.
- No menu de serviço, em Gerenciar, selecione Configurações>Membro>Editar.
- Na página Editar configuração de função – Membro, selecione a caixa de seleção Exigir aprovação para ativar e adicione o grupo de aprovadores como o aprovador selecionado.
- Faça outras alterações necessárias e selecione Atualizar.
Interagir com recursos de cluster usando a função padrão
Agora, podemos tentar acessar o cluster do AKS usando o usuário normal, que é membro do grupo padrão.
Faça logon no portal do Azure como o usuário normal usando o comando
az login.az login --username n01@$DOMAIN --password ${NUSERPASSWORD}A Microsoft recomenda que você use o método mais seguro disponível para entrar no Azure. Para obter mais informações, consulte os seguintes artigos:
Obtenha as credenciais de usuário para acessar o cluster usando o comando
az aks get-credentials.az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>Tente acessar os pods de cluster usando o comando
kubectl get.kubectl get pods --namespace kube-systemSua saída deve ser semelhante à seguinte saída de exemplo, que mostra os pods no namespace
kube-system:NAME READY STATUS RESTARTS AGE azure-ip-masq-agent-2rdd9 1/1 Running 0 30h azure-policy-767c9d9d9d-886rf 1/1 Running 0 31h cloud-node-manager-92t6h 1/1 Running 0 30h coredns-789789675-b2dhg 1/1 Running 0 31h coredns-autoscaler-77bbc46446-pgt92 1/1 Running 0 31h csi-azuredisk-node-lnzrf 3/3 Running 0 30h csi-azurefile-node-lhbxr 3/3 Running 0 31h konnectivity-agent-7645d94b-9wqct 1/1 Running 0 30h kube-proxy-lkx4w 1/1 Running 0 31h metrics-server-5955767688-lpbjb 2/2 Running 0 30hTente acessar os segredos do cluster usando o comando
kubectl get.kubectl get secrets --namespace kube-systemO resultado deve ser semelhante ao exemplo a seguir, que mostra uma mensagem de erro porque o usuário não tem permissão para acessar os segredos:
Error from server (Forbidden): secrets is forbidden: User "[email protected]" cannot list resource "secrets" in API group "" in the namespace "kube-system": User does not have access to the resource in Azure. Update role assignment to allow access.A função
Azure Kubernetes Service RBAC Readernão tem permissão para acessar segredos, portanto, esse erro é esperado.
Solicitar acesso just-in-time ao cluster do AKS
Esta seção mostra como solicitar acesso just-in-time como temporário Azure Kubernetes Service RBAC Admin para acesso ao plano de controle do cluster. Siga os passos descritos em Ativar sua associação ou propriedade de grupo em Privileged Identity Management. Para saber como aprovar ou negar solicitações como aprovador, consulte Aprovar solicitações de ativação para membros e proprietários do grupo.
Solicitar acesso SSH just-in-time a nós de cluster
Esta seção mostra como solicitar acesso SSH just-in-time a nós de cluster ativando temporariamente a associação no grupo node-access.
- Na Home page do portal do Azure, pesquise e selecione o Privileged Identity Management.
- No menu de serviço, selecione Minhas funções>Grupos.
- Localize o grupo node-access na lista de atribuições elegíveis e selecione Ativar.
- Forneça uma justificativa para a solicitação de ativação e selecione Ativar.
- Se a aprovação for necessária, aguarde até que o aprovador aprove sua solicitação. Você receberá uma notificação quando sua solicitação for aprovada.
- Depois de ativado, você pode fazer SSH nos nós do cluster usando a autenticação via Entra ID.
SSH nos nós do cluster com acesso just-in-time
Depois que o acesso just-in-time ao grupo node-access for ativado, você poderá fazer SSH nos nós do cluster usando a autenticação pelo Entra ID.
Instale a extensão SSH para a CLI do Azure:
az extension add --name sshObtenha a lista de nós em seu cluster:
kubectl get nodesSSH em um nó usando autenticação com o Entra ID:
az ssh vm --resource-group <resource-group-name> --name <node-name>Durante o fluxo de autenticação, entre com suas credenciais de Entra ID que agora têm acesso temporário ao grupo node-access.
Após a autenticação bem-sucedida, você será conectado ao nó com as permissões que a atribuição de função concede.
Observação
Se você configurou políticas de Acesso Condicional para acesso SSH a nós, precisará atender a esses requisitos durante o fluxo de autenticação.
Interagir com recursos de cluster usando a função de administrador
Depois de adicionar temporariamente a função Azure Kubernetes Service RBAC Admin, você poderá acessar os recursos de cluster que exigem permissões de administrador.
Remova tokens armazenados existentes usando o seguinte comando
kubelogin:kubelogin remove-tokensObservação
Se você encontrar um erro devido à falta de permissões, faça logon para atualizar as permissões usando o comando
az login.Tente acessar os segredos do cluster novamente usando o comando
kubectl get secrets.kubectl get secrets --namespace kube-systemSua saída deve ser semelhante à seguinte saída de exemplo, que mostra os segredos no namespace
kube-system:NAME TYPE DATA AGE bootstrap-token-sw3rck bootstrap.kubernetes.io/token 4 35h konnectivity-certs Opaque 3 35hO usuário agora pode acessar os segredos porque tem a função
Azure Kubernetes Service RBAC Admin.
Considerações sobre o tempo de vida do token
Devido ao design de tempo de vida do token, se você estiver concedendo funções a usuários que usam ferramentas da CLI, como kubectl ou kubelogin, tecnicamente, a duração da ativação não poderá ser inferior a 60 minutos. Mesmo que a duração seja definida para menos de 60 minutos, a duração efetiva real permanece entre 60 e 75 minutos.
Quando kubelogin tenta obter tokens da plataforma de identidade da Microsoft e access_token e refresh_token são retornados para uso adicional. O access_token faz solicitações para a API, e refresh_token é usado para obter um novo access_token quando o atual expira. O access_token não pode ser revogado uma vez que é gerado, mas o refresh_token pode ser revogado. Se o refresh_token for revogado, o usuário precisará se autenticar novamente para obter um novo refresh_token. Para revogar o refresh_token manualmente, você pode usar Revoke-AzureADUserAllRefreshToken.
Próximas etapas
Para obter mais informações, consulte os seguintes artigos:
- Controle o acesso ao cluster usando o Acesso Condicional com a integração do Microsoft Entra
- Visão geral do Privileged Identity Management no Microsoft Entra
- Usar o controle de acesso baseado em função do Kubernetes com o Microsoft Entra ID no AKS
- Use a elevação just-in-time para o login em nós com SSH baseado no Microsoft Entra ID; consulte Gerenciar o acesso SSH nos nós do cluster AKS.