Opções de acesso e identidade para o AKS habilitadas pelo Azure Arc
Aplica-se a: AKS no Azure Stack HCI 23H2
Você pode autenticar, autorizar, proteger e controlar o acesso aos 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 precisam.
- Com os clusters do AKS habilitados com o RBAC do Azure, você pode aprimorar ainda mais a estrutura de segurança e permissões usando a ID do Microsoft Entra e o RBAC do Azure.
O RBAC do Kubernetes e o RBAC do Azure 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 você a se autenticar e atribuir permissões no AKS.
RBAC do Kubernetes
O RBAC Kubernetes oferece filtragem granular de ações de usuário. Com este mecanismo de controle:
- Você atribui a usuários ou grupos de usuários permissão para criar e modificar recursos ou visualizar logs de cargas de trabalho de aplicativos em execução.
- É possível definir o escopo das permissões como namespace único ou em todo o cluster AKS.
- Você cria funções para definir permissões e, em seguida, atribuir essas funções a usuários com associações de função.
Para obter mais informações, confira Usar a autorização do RBAC para Kubernetes.
Funções e ClusterRoles
Funções
Antes de designar permissões a usuários com o RBAC do Kubernetes, você define as permissões de usuário como uma função. Conceda permissões em um namespace do Kubernetes usando funções.
As funções Kubernetes concedem permissões, elas não negam permissões. Para conceder permissões em todo o cluster ou para agrupar recursos 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 em um namespace específico.
RoleBindings e ClusterRoleBindings
Depois de definir funções para conceder permissões aos recursos, você atribui essas permissões RBAC do Kubernetes com um RoleBinding. Se o cluster do AKS se integrar ao Microsoft Entra ID, o RoleBindings concederá permissões aos usuários do Microsoft Entra para executar ações dentro do cluster. Consulte Controlar o acesso usando a ID do Microsoft Entra e o RBAC do Kubernetes
RoleBindings
Atribuir funções a usuários para um namespace específico usando RoleBindings. Com o RoleBindings, você pode separar logicamente um cluster AKS individual, permitindo apenas que os usuários acessem os recursos do aplicativo em seu namespace atribuído.
Para associar funções em todo o cluster ou para agrupar recursos fora de um determinado namespace, use ClusterRoleBindings.
ClusterRoleBinding
Com um ClusterRoleBinding, você associa funções a usuários e aplica a recursos em todo o cluster, não em um namespace específico. Essa abordagem permite que você conceda ou aos 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 tipos de usuários primários no Kubernetes. A API 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 fornecem um token de autenticação para uma conta de serviço ou uma conta de usuário normal.
Contas de usuário normal permitem o acesso mais tradicional para administradores humanos ou desenvolvedores, não apenas serviços e processos. Embora o Kubernetes não ofereça uma solução de gerenciamento de identidade para armazenar contas de usuário e senhas comuns, você pode integrar ao Kubernetes soluções de identidade externas. Para clusters do AKS, essa 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.
Controle de acesso baseado em função do Azure
O RBAC (Controle de Acesso Baseado em Função) do Azure é um sistema de autorização criado no Azure Resource Manager que fornece gerenciamento de acesso refinado de recursos do Azure.
Sistema RBAC | Description |
---|---|
RBAC de Kubernetes | Projetado para trabalhar em recursos do Kubernetes em seu cluster do AKS. |
RBAC do Azure | Projetado para trabalhar em recursos em sua assinatura do Azure. |
Com o RBAC do Azure, você cria um definição de função que descreve as permissões a serem aplicadas. Em seguida, você atribui essa definição de função a um usuário ou grupo, 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 por toda a assinatura.
Para saber mais, confira O que é o RBAC (controle de acesso baseado em função) do Azure.
Há dois níveis de acesso necessários para operar totalmente um cluster do AKS Arc:
- Acesse o recurso AKS em sua assinatura 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 kubeconfig habilitado para ID do Entra.
- Acesso à API do Kubernetes. Esse acesso é controlado por:
- RBAC do Kubernetes ou
- Integração do RBAC do Azure ao AKS para autorização do Kubernetes.
RBAC do Azure para autorizar o acesso ao recurso do AKS
Com o RBAC do Azure, você pode fornecer seus usuários (ou identidades) com acesso granular aos recursos do AKS em uma ou mais assinaturas. Há três funções disponíveis para essa ação do painel de controle: Função de Administrador de Cluster do Arc do Serviço de Kubernetes do Azure, Função de Usuário de Cluster do Arc do Serviço de Kubernetes do Azure e Função de Colaborador do Arc do Serviço de Kubernetes do Azure. 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 Colaborador do Arc do Serviço de Kubernetes do Azure para criar, dimensionar e atualizar seu cluster. Enquanto isso, outro usuário com a função de Administrador de Cluster do Arc do Serviço de Kubernetes do Azure só tem permissão para efetuar pull do admin kubeconfig.
RBAC do Azure para autorização do Kubernetes
Com a integração do RBAC do Azure, o AKS usa um servidor de webhook de autorização do Kubernetes para que você possa gerenciar permissões e atribuições de recursos de cluster do Kubernetes integrado do Microsoft Entra usando a definição de função do Azure e as atribuições de função.
Conforme mostrado neste diagrama, ao usar a integração do 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 na ID do Microsoft Entra, o Azure se unirá ao RBAC do Kubernetes para autorizar a solicitação. Se a identidade existir fora da ID do Microsoft Entra (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 aos usuários funções internas ou criar funções personalizadas, assim como faria com as funções do Kubernetes.
Com esse recurso, você não só dá aos usuários permissões para o recurso do AKS nas 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 do 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 o RBAC do Azure para autorização do Kubernetes antes de fazer a atribuição de função. Para obter mais detalhes e diretrizes passo a passo, consulte Usar o RBAC do Azure para autorização do Kubernetes.
Funções internas
O AKS habilitado pelo Arc fornece as cinco funções internas a seguir. Eles 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 de cluster do Kubernetes habilitado para Azure Arc | Permite recuperar o arquivo kubeconfig baseado no 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 exibição de segredos, pois 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). |
Gravador do Kubernetes do Azure Arc | 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 valor ServiceAccount no namespace, para que possa ser usada para obter os níveis de acesso à API de qualquer valor ServiceAccount no namespace. |
Administrador do Kubernetes do Azure Arc | Permite o acesso de administrador. Ele deve ser concedido em 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 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 em ClusterRoleBinding, ele fornece controle total sobre todos os recursos no cluster e em todos os namespaces. Quando você o usa em RoleBinding, ele fornece controle total sobre todos os recursos no namespace de associação de função, incluindo o próprio namespace. |
Integração no Microsoft Entra
Aprimore a segurança do cluster do AKS com a integração ao Microsoft Entra. Criado com base na experiência de gerenciamento de identidades corporativas, o Microsoft Entra ID é um serviço de gerenciamento de identidades e diretório 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 do AKS integrados ao Microsoft Entra, você pode conceder aos usuários ou grupos acesso aos recursos do Kubernetes em um namespace ou no cluster.
- Para obter um contexto de configuração kubectl , execute o comando az aksarc get-credentials .
- Quando um usuário interage com o cluster do AKS usando kubectl, ele é solicitado a entrar com suas credenciais do Microsoft Entra.
Essa abordagem fornece uma única fonte para o gerenciamento de contas de usuário e as 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 aos clusters do AKS com o OpenID Connect. O OpenID Connect é uma camada de identidade compilada 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 do Kubernetes, a Autenticação de Token de Webhook é usada para verificar os tokens de autenticação. A autenticação de token do 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 é:
- Executar
az login
para autenticar no Azure. - Execute
az aksarc get-credentials
para baixar as credenciais do cluster do Kubernetes no.kube/config
. - Executar comandos de
kubectl
.- O primeiro comando pode disparar a autenticação baseada em navegador para autenticar no cluster do Kubernetes, conforme descrito na tabela a seguir.
Descrição | Concessão de função necessária | Administrador de cluster Grupos do Microsoft Entra | Quando usar |
---|---|---|---|
Login de administrador usando o certificado do cliente | Função de administrador de cluster do Arc do Serviço de 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 que não seja do 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 cluster. |
ID do Microsoft Entra com RoleBindings manuais (cluster) | Função de usuário de cluster do Arc do Serviço de 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 de Cluster do Serviço de Kubernetes do Azure.) O resultado, em um cluster habilitado para ID do Microsoft Entra, é o download de uma entrada vazia em .kube/config, que dispara 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. As RoleBindings (Cluster) nomeiam usuários do Microsoft Entra ou grupos do Microsoft Entra como seus assuntos. Se nenhuma dessas associações tiver sido configurada, o usuário não poderá executar nenhum comando kubectl . | Se você quiser um controle de acesso refinado e não estiver usando a Autorização do RBAC do Azure para 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 do Microsoft Entra do administrador do cluster (definido usando o --aad-admin-group-object-ids sinalizador na CLI do Azure) |
O mesmo que o anterior. | O usuário é um membro de um dos grupos listados aqui. O AKS gera automaticamente um ClusterRoleBinding que associa todos os grupos listados à função cluster-admin do Kubernetes. Portanto, os usuários nesses grupos podem executar todos os comandos kubectl como cluster-admin . |
Se você quiser conceder aos usuários direitos totais de administrador e não estiver usando o RBAC do Azure para autorização do Kubernetes. |
ID do Microsoft Entra com o RBAC do Azure para autorização do Kubernetes | Duas funções: Função de usuário de cluster do Arc do Serviço de Kubernetes do Azure (conforme descrito anteriormente). Uma das funções do Kubernetes do Azure Arc 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. Esta abordagem oferece um controle refinado, sem a necessidade de configurar RoleBindings ou ClusterRoleBindings. |
Próximas etapas
- Para começar a usar o RBAC do Kubernetes para autorização do Kubernetes, consulte Controlar o acesso usando a ID do Microsoft Entra e o RBAC do Kubernetes
- 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