Usar provedores de identidade externos com autenticação estruturada do AKS (versão prévia)

O AKS (Serviço de Kubernetes do Azure) dá suporte à autenticação estruturada, o que permite configurar provedores de identidade externos para autenticar usuários no servidor de API do Kubernetes. Esse recurso é baseado na configuração de autenticação estruturada do Kubernetes upstream. O AKS implementa essa funcionalidade por meio de autenticadores JWT (Token Web JSON) que validam tokens de provedores de identidade externos de acordo com sua configuração. Com a autenticação estruturada, as organizações podem integrar o AKS à infraestrutura de identidade existente além da ID do Microsoft Entra.

Este artigo fornece uma visão geral de como usar provedores de identidade externos com autenticação estruturada do AKS, incluindo conceitos importantes, considerações de segurança e próximas etapas para a configuração.

Importante

As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

Benefícios da autenticação do provedor de identidade externo

A autenticação estruturada estende o AKS além da integração tradicional com o Microsoft Entra ID, ao oferecer suporte a provedores de identidade padrão do setor OpenID Connect (OIDC). Este recurso permite:

  • Autenticar usuários com provedores de identidade externos, como Google, GitHub ou qualquer provedor compatível com OIDC.
  • Mantenha o gerenciamento de identidade centralizado em toda a sua organização.
  • Implementar regras personalizadas de validação de declaração e mapeamento de usuário.
  • Dê suporte a vários provedores de identidade simultaneamente em um único cluster.

Fluxo de autenticação do provedor de identidade externo

Quando um usuário tenta acessar o servidor de API do Kubernetes usando a autenticação estruturada com um provedor de identidade externo, o fluxo de autenticação e autorização é o seguinte:

  • Autenticação: as seguintes etapas validam a identidade do usuário:
    • Apresentação de token: o usuário apresenta um token JWT do provedor de identidade configurado.
    • Validação de token: o servidor de API valida a assinatura, o emissor, o público-alvo e a expiração do token.
    • Processamento de reivindicações: as regras de validação de reivindicações personalizadas são aplicadas para garantir que o token atenda aos seus requisitos.
    • Mapeamento de usuário: as declarações são mapeadas para a identidade do usuário do Kubernetes (nome de usuário, grupos e atributos extras).
  • Autorização: O Controle de Acesso Baseado em Funções (RBAC) padrão do Kubernetes determina quais ações o usuário autenticado pode executar.

Diagrama conceitual mostrando como a autenticação baseada em provedor de identidade externa funciona com clusters do AKS.

Provedores de identidade suportados

Embora a autenticação estruturada do AKS permita qualquer provedor de identidade compatível com OIDC, os provedores comuns incluem:

  • GitHub: autenticar usando identidades do GitHub ou GitHub Actions.
  • Google OAuth 2.0: use contas do Google para autenticação.
  • Provedores OIDC genéricos: qualquer provedor que implemente padrões OIDC.
  • Soluções de identidade personalizadas: implementações OIDC específicas da organização.

Observação

Não há suporte para a ID do Microsoft Entra como um provedor de identidade externo por meio da autenticação estruturada. Use a integração existente do Microsoft Entra para autenticação de ID do Microsoft Entra.

Requisitos para provedores de identidade externos

Os provedores de identidade externos devem atender aos seguintes requisitos para trabalhar com a autenticação estruturada do AKS:

  • Suporte aos padrões OIDC.
  • Disponibilize pontos de extremidade de descoberta OIDC acessíveis publicamente.
  • Emita tokens JWT com declarações apropriadas.
  • O acesso deve ser feito a partir dos nós do cluster do AKS para validação de tokens.

Autenticadores JWT para autenticação estruturada do AKS

Um autenticador JWT é um objeto de configuração que define como o AKS valida e processa tokens de um provedor de identidade externo. Por exemplo, o AKS espera um token de ID (JWT) cuja reivindicação (público-alvo) aud corresponda ao valor de público-alvo que você configurou para o autenticador, como "my-api" ou um ID de cliente OAuth. Cada autenticador JWT inclui os seguintes componentes:

  • Configuração do emissor: especifica a URL do emissor OIDC e os valores de audiência esperados para tokens.
  • Regras de validação de declaração: usa expressões CEL (Common Expression Language) para impor a lógica de validação personalizada em declarações de token.
  • Mapeamentos de declaração: define como as declarações JWT são mapeadas para atributos de usuário do Kubernetes, como nome de usuário, grupos e campos extras.
  • Regras de validação do usuário: aplica lógica de validação extra após o mapeamento de declarações para restringir ou permitir o acesso.

Expressões CEL para validação e mapeamento de reivindicações

A autenticação estruturada usa expressões CEL para validação e mapeamento de declaração flexíveis. O CEL fornece um ambiente de área restrita seguro para avaliar a lógica personalizada em relação a declarações JWT.

Exemplo de expressões CEL:

// Validate that the 'sub' claim exists
has(claims.sub)

// Map username with AKS prefix
'aks:jwt:' + claims.sub

// Map groups from comma-separated string
claims.groups.split(',').map(g, 'aks:jwt:' + g)

// Conditional mapping based on claim verification
'aks:jwt:' + (claims.email_verified ? claims.email : claims.sub)

Melhores práticas de segurança

Tenha em mente as seguintes práticas recomendadas de segurança ao usar provedores de identidade externos com autenticação estruturada do AKS:

  • Use uma validação de declaração forte: implemente regras de validação abrangentes para garantir que apenas tokens autorizados sejam aceitos.
  • Limite o escopo do token: configure seu provedor de identidade para emitir tokens com declarações mínimas necessárias.
  • Rotação regular: rotacione os segredos de cliente e certificados regularmente.
  • Monitorar acesso: habilite os registros de recursos e ative os logs kube-apiserver para inspecionar possíveis problemas com os autenticadores JWT configurados e rastrear eventos de autenticação.
  • Configurações de teste: valide a configuração do autenticador JWT em um ambiente de não produção primeiro.

Considerações de segurança

Tenha em mente as seguintes considerações de segurança ao usar provedores de identidade externos com autenticação estruturada do AKS:

  • Requisitos de prefixo: todos os nomes de usuário e grupos mapeados por meio da autenticação estruturada devem ser prefixados aks:jwt: para evitar conflitos com outros métodos de autenticação e contas do sistema.
  • Acesso à rede: os pontos de extremidade do provedor de identidade devem estar acessíveis de:
    • Nós do cluster do AKS para validação de tokens.
    • Sistemas cliente para aquisição de token.
    • Todos os caminhos de rede envolvidos no fluxo de autenticação.
  • Camadas de validação: a autenticação estruturada fornece várias camadas de validação:
    • A validação de assinatura de token garante a autenticidade do token.
    • A validação de declaração padrão verifica o emissor, o público-alvo e a expiração.
    • A validação de declaração personalizada aplica os requisitos específicos da sua organização.
    • Validação final do usuário após o mapeamento de reivindicações.

Para obter mais informações sobre autenticação estruturada e recursos relacionados, consulte os seguintes recursos: