Opções de acesso e identidade para AKS habilitadas pelo Azure Arc
Aplica-se a: AKS no Azure Local, versão 23H2
Você pode autenticar, autorizar, proteger e controlar o acesso a clusters do Kubernetes de várias maneiras:
- Com o controle de acesso baseado em função do Kubernetes (Kubernetes RBAC), você pode conceder aos usuários, grupos e contas de serviço acesso apenas aos recursos do Kubernetes de que eles precisam.
- Com clusters AKS habilitados com o Azure RBAC, você pode aprimorar ainda mais a estrutura de segurança e permissões usando o Microsoft Entra ID e o Azure RBAC.
O Kubernetes RBAC e o Azure RBAC ajudam você a proteger o acesso ao cluster e fornecem apenas as permissões mínimas necessárias para desenvolvedores e operadores.
Este artigo apresenta os principais conceitos que ajudam a autenticar e atribuir permissões no AKS.
RBAC do Kubernetes
O RBAC do Kubernetes fornece filtragem granular das ações do usuário. Com este mecanismo de controlo:
- Você atribui permissão a usuários ou grupos de usuários para criar e modificar recursos ou exibir logs de cargas de trabalho de aplicativos em execução.
- Você pode definir o escopo de permissões para um único namespace ou em todo o cluster AKS.
- Você cria funções para definir permissões e, em seguida, atribui essas funções a usuários com associações de função.
Para obter mais informações, consulte Usando a autorização RBAC do Kubernetes.
Funções e ClusterRoles
Funções
Antes de atribuir permissões a usuários com o Kubernetes RBAC, você define permissões de usuário como uma função. Conceda permissões dentro de um namespace Kubernetes usando funções.
As funções do Kubernetes concedem permissões; eles não negam permissões. Para conceder permissões em todo o cluster ou para recursos de cluster fora de um determinado namespace, você pode usar ClusterRoles.
ClusterRoles
Um ClusterRole concede e aplica permissões a recursos em todo o cluster, não a um namespace específico.
RoleBindings e ClusterRoleBindings
Depois de definir funções para conceder permissões a recursos, você atribui essas permissões RBAC do Kubernetes com um RoleBinding. Se o cluster AKS se integrar com o ID do Microsoft Entra, os RoleBindings concederão permissões aos usuários do Microsoft Entra para executar ações dentro do cluster. Consulte Controlar o acesso usando o Microsoft Entra ID e o Kubernetes RBAC
Vinculações de Funções
Atribua funções a usuários para um determinado namespace usando RoleBindings. Com RoleBindings, você pode segregar logicamente um único cluster AKS, permitindo apenas que os usuários acessem os recursos do aplicativo em seu namespace atribuído.
Para vincular funções em todo o cluster ou para agrupar recursos fora de um determinado namespace, use ClusterRoleBindings.
ClusterRoleBinding
Com um ClusterRoleBinding, você vincula funções a usuários e aplica a recursos em todo o cluster, não a um namespace específico. Essa abordagem permite que você conceda aos administradores ou engenheiros de suporte acesso a todos os recursos no cluster AKS.
Contas de serviço do Kubernetes
As contas de serviço são um dos principais tipos de usuário no Kubernetes. A API do Kubernetes mantém e gerencia contas de serviço. As credenciais da conta de serviço são armazenadas como segredos do Kubernetes, permitindo que sejam usadas por pods autorizados para se comunicar com o servidor de API. A maioria das solicitações de API fornece um token de autenticação para uma conta de serviço ou uma conta de usuário normal.
Contas de usuário normais permitem acesso mais tradicional para administradores humanos ou desenvolvedores, não apenas serviços e processos. Embora o Kubernetes não forneça uma solução de gerenciamento de identidade para armazenar contas de usuário e senhas regulares, você pode integrar soluções de identidade externas ao Kubernetes. Para clusters AKS, esta solução de identidade integrada é o Microsoft Entra ID.
Para obter mais informações sobre as opções de identidade no Kubernetes, consulte Autenticação do Kubernetes.
Controlo de acesso baseado em funções do Azure
O Controle de Acesso Baseado em Função do Azure (RBAC) é um sistema de autorização criado no Azure Resource Manager que fornece gerenciamento de acesso refinado dos recursos do Azure.
Sistema RBAC | Description |
---|---|
Kubernetes RBAC | Projetado para trabalhar em recursos do Kubernetes dentro do seu cluster AKS. |
RBAC do Azure | Projetado para trabalhar em recursos em sua assinatura do Azure. |
Com o RBAC do Azure, você cria uma definição de função que descreve as permissões a serem aplicadas. Em seguida, você atribui a um usuário ou grupo essa definição de função por meio de uma atribuição de função para um escopo específico. O escopo pode ser um recurso individual, um grupo de recursos ou através da assinatura.
Para obter mais informações, consulte O que é o controle de acesso baseado em função do Azure (Azure RBAC)?
Há dois níveis necessários de acesso para operar totalmente um cluster AKS Arc:
- Aceda ao recurso AKS na sua subscrição do Azure.
- Controle o dimensionamento ou a atualização do cluster usando o AKS habilitado pelas APIs do Azure Arc.
- Puxe seu admin, kubeconfig baseado em certificado.
- Puxe seu Entra ID ativado kubeconfig.
- Acesso à API do Kubernetes. Este acesso é controlado por:
- Kubernetes RBAC, ou
- Integração do RBAC do Azure com o AKS para autorização do Kubernetes.
RBAC do Azure para autorizar o acesso ao recurso AKS
Com o RBAC do Azure, você pode fornecer aos seus usuários (ou identidades) acesso granular aos recursos do AKS em uma ou mais assinaturas. Há três funções disponíveis para essa ação do plano de controle: Função de Administrador do Cluster do Azure Kubernetes Service, Função de Usuário do Cluster do Azure Kubernetes Service Arc e Função de Colaborador do Azure Kubernetes Service Arc. Cada função tem um escopo de permissão diferente, conforme descrito em Funções internas do Azure para Contêineres. Por exemplo, você pode usar a função de Colaborador do Azure Kubernetes Service Arc para criar, dimensionar e atualizar seu cluster. Enquanto isso, outro usuário com a função Azure Kubernetes Service Arc Cluster Admin só tem permissão para puxar o kubeconfig admin.
Autorização do RBAC do Azure para Kubernetes
Com a integração do RBAC do Azure, o AKS usa um servidor webhook de autorização do Kubernetes para que você possa gerenciar permissões e atribuições de recursos de cluster do Kubernetes integrado ao Microsoft Entra usando a definição de função e as atribuições de função do Azure.
Conforme mostrado neste diagrama, ao usar a integração RBAC do Azure, todas as solicitações para a API do Kubernetes seguem o mesmo fluxo de autenticação descrito na integração do Microsoft Entra.
Se a identidade que faz a solicitação existir no Microsoft Entra ID, o Azure se unirá ao Kubernetes RBAC para autorizar a solicitação. Se a identidade existir fora do Microsoft Entra ID (por exemplo, uma conta de serviço do Kubernetes), a autorização será adiada para o RBAC normal do Kubernetes.
Nesse cenário, você usa mecanismos e APIs do RBAC do Azure para atribuir funções internas aos usuários ou criar funções personalizadas, assim como faria com as funções do Kubernetes.
Com esse recurso, você não apenas concede aos usuários permissões para o recurso AKS em todas as assinaturas, mas também configura a função e as permissões para dentro de cada um desses clusters que controlam o acesso à API do Kubernetes. Há quatro funções internas disponíveis para essa ação de plano de dados, cada uma com seu próprio escopo de permissões, conforme descrito na seção de funções internas.
Importante
Você deve habilitar a autorização do RBAC do Azure para Kubernetes antes de fazer a atribuição de função. Para obter mais detalhes e orientação passo a passo, consulte Usar o RBAC do Azure para autorização do Kubernetes.
Funções incorporadas
O AKS habilitado pela Arc fornece as seguintes cinco funções integradas. Eles são semelhantes às funções internas do Kubernetes com algumas diferenças, como o suporte a CRDs. Consulte a lista completa de ações permitidas por cada função interna do Azure.
Função | Description |
---|---|
Usuário do Cluster Kubernetes habilitado para Azure Arc | Permite recuperar o arquivo kubeconfig baseado no Cluster Connect para gerenciar clusters de qualquer lugar. |
Azure Arc Kubernetes Viewer | Permite acesso somente leitura para ver a maioria dos objetos em um namespace. Não permite a visualização de segredos, porque a permissão de leitura em segredos permite o acesso às credenciais ServiceAccount no namespace. Essas credenciais, por sua vez, permitem o acesso à API por meio desse valor ServiceAccount (uma forma de escalonamento de privilégios). |
Azure Arc Kubernetes Writer | Permite acesso de leitura/gravação à maioria dos objetos em um namespace. Não permite visualizar ou modificar funções ou associações de funções. No entanto, essa função permite acessar segredos e executar pods como qualquer valor ServiceAccount no namespace, para que possa ser usada para obter os níveis de acesso à API de qualquer valor ServiceAccount no namespace. |
Azure Arc Kubernetes Admin | Permite acesso de administrador. Destina-se a ser concedido dentro de um namespace por meio de RoleBinding. Se você usá-lo em RoleBinding, ele permitirá acesso de leitura/gravação à maioria dos recursos em um namespace, 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 Arc Kubernetes Cluster Admin | Permite o acesso de "superusuário" para executar qualquer ação em qualquer recurso. Quando você o usa em ClusterRoleBinding, ele dá controle total sobre todos os recursos no cluster e em todos os namespaces. Quando você o usa em RoleBinding, ele dá controle total sobre todos os recursos no namespace de vinculação de função, incluindo o próprio namespace. |
Integração com o Microsoft Entra
Melhore a segurança do seu cluster AKS com a integração do Microsoft Entra. Desenvolvido com base na experiência de gerenciamento de identidades corporativas, o Microsoft Entra ID é um serviço de gerenciamento de identidades e diretórios multilocatário baseado em nuvem que combina serviços de diretório principais, gerenciamento de acesso a aplicativos e proteção de identidade. Com o Microsoft Entra ID, você pode integrar identidades locais em clusters AKS para fornecer uma única fonte de gerenciamento e segurança de contas.
Com clusters AKS integrados ao Microsoft Entra, você pode conceder aos usuários ou grupos acesso aos recursos do Kubernetes dentro de um namespace ou através do cluster.
- Para obter um contexto de configuração kubectl, execute o comando az aksarc get-credentials.
- Quando um usuário interage com o cluster AKS usando kubectl, ele é solicitado a entrar com suas credenciais do Microsoft Entra.
Essa abordagem fornece uma única fonte para gerenciamento de conta de usuário e credenciais de senha. O usuário só pode acessar os recursos conforme definido pelo administrador do cluster do Kubernetes.
A autenticação do Microsoft Entra é fornecida para clusters AKS com OpenID Connect. OpenID Connect é uma camada de identidade construída sobre o protocolo OAuth 2.0. Para obter mais informações sobre o OpenID Connect, consulte a documentação do OpenID Connect. De dentro do cluster Kubernetes, a Autenticação de Token Webhook é usada para verificar tokens de autenticação. A autenticação do token Webhook é configurada e gerenciada como parte do cluster AKS.
Resumo
A tabela a seguir contém um resumo de como os usuários podem se autenticar no Kubernetes quando a integração do Microsoft Entra está habilitada. Em todos os casos, a sequência de comandos é:
- Execute
az login
para autenticar no Azure. - Execute
az aksarc get-credentials
para baixar credenciais para o cluster Kubernetes em.kube/config
. - Executar
kubectl
comandos.- O primeiro comando pode acionar a autenticação baseada em navegador para autenticar no cluster Kubernetes, conforme descrito na tabela a seguir.
Description | Concessão de função necessária | Grupos do Microsoft Entra de administração de cluster | Quando utilizar o |
---|---|---|---|
Login de administrador usando certificado de cliente | Função de Administrador de Cluster do Arco do Serviço Kubernetes do Azure. Essa função permite az aksarc get-credentials ser usada com o --admin sinalizador, que baixa um certificado de administrador de cluster não Microsoft Entra no .kube/config do usuário. Essa é a única finalidade da função de administrador do Kubernetes do Azure. |
n/d | Se você estiver permanentemente bloqueado por não ter acesso a um grupo válido do Microsoft Entra com acesso ao seu cluster. |
ID do Microsoft Entra com RoleBindings manuais (cluster) | Função de Usuário do Cluster do Arco do Serviço Kubernetes do Azure. A função Usuário permite az aksarc get-credentials ser usada sem o --admin sinalizador. Essa é a única finalidade da função Usuário do Cluster de Serviço do Kubernetes do Azure.) O resultado, em um cluster habilitado para ID do Microsoft Entra, é o download de uma entrada vazia em .kube/config, que aciona a autenticação baseada em navegador quando é usada pela primeira vez pelo kubectl. |
Como o usuário não está em nenhum grupo de administradores de cluster, seus direitos são controlados inteiramente por quaisquer RoleBindings ou ClusterRoleBindings configurados por administradores de cluster. Os RoleBindings (Cluster) nomeiam usuários do Microsoft Entra ou grupos do Microsoft Entra como seus assuntos. Se nenhuma dessas ligações foi configurada, o usuário não pode excutar nenhum comando kubectl . | Se você quiser um controle de acesso refinado e não estiver usando o RBAC do Azure para Autorização do Kubernetes. Observe que o usuário que configura as associações deve entrar usando um dos outros métodos listados nesta tabela. |
ID do Microsoft Entra por membro do grupo Microsoft Entra admin do cluster (definido usando --aad-admin-group-object-ids o sinalizador na CLI do Azure) |
O mesmo que o anterior. | O usuário é membro de um dos grupos listados aqui. O AKS gera automaticamente um ClusterRoleBinding que vincula todos os grupos listados à cluster-admin função Kubernetes. Assim, os usuários desses grupos podem executar todos os kubectl comandos como cluster-admin . |
Se você quiser conceder aos usuários direitos de administrador completos e não estiver usando o RBAC do Azure para autorização do Kubernetes. |
Microsoft Entra ID com autorização do Azure RBAC para Kubernetes | Duas funções: Função de usuário do Azure Kubernetes Service Arc Cluster (conforme descrito anteriormente). Uma das funções do Azure Arc Kubernetes descritas anteriormente ou sua própria alternativa personalizada. |
O campo de funções de administrador na guia Configuração é irrelevante quando a autorização do RBAC do Azure para Kubernetes está habilitada. | Você usa o RBAC do Azure para autorização do Kubernetes. Essa abordagem oferece controle refinado, sem a necessidade de configurar RoleBindings ou ClusterRoleBindings. |
Próximos passos
- Para começar a usar o Kubernetes RBAC para autorização do Kubernetes, consulte Controlar o acesso usando o Microsoft Entra ID e o Kubernetes RBAC
- Para começar a usar o RBAC do Azure para autorização do Kubernetes, consulte Usar o RBAC do Azure para autorização do Kubernetes