Autenticar usuários para o cluster em um provedor de identidade OpenID Connect - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Autenticar usuários para o cluster em um provedor de identidade OpenID Connect

O Amazon EKS oferece suporte ao uso de provedores de identidade OpenID Connect (OIDC) como um método de autenticação de usuários no cluster. Os provedores de identidade OIDC podem ser usados com, ou como uma alternativa para, o AWS Identity and Access Management (IAM). Para obter mais informações sobre como usar a IAM, consulte Conceder acesso a APIs do Kubernetes. Depois de configurar a autenticação do cluster, você pode criar roles e clusterroles do Kubernetes para atribuir permissões às funções e, em seguida, vincular as funções às identidades usando rolebindings e clusterrolebindings do Kubernetes. Para mais informações, consulte Using RBAC Authorization (Usar autorização RBAC) na documentação do Kubernetes.

Considerações
  • Você pode associar um provedor de identidade OIDC ao cluster.

  • O Kubernetes não fornece um provedor de identidade OIDC. Você pode usar um provedor de identidade OIDC público existente ou executar seu próprio provedor de identidade. Para uma lista de provedores certificados, consulte OpenID Certification (Certificação OpenID) no site OpenID.

  • O URL do emissor do provedor de identidade OIDC deve ser acessível publicamente, para que o Amazon EKS possa descobrir as chaves de assinatura. O Amazon EKS não oferece suporte a provedores de identidade OIDC com certificados autoassinados.

  • Não é possível desabilitar a autenticação IAM em seu cluster, porque ela ainda é necessária para juntar nós a um cluster.

  • Um cluster do Amazon EKS ainda deve ser criado por uma entidade principal do IAM da AWS, em vez de um usuário do provedor de identidade OIDC. Isso ocorre porque o criador do cluster interage com as APIs do Amazon EKS, não com as APIs do Kubernetes.

  • Os usuários autenticados pelo provedor de identidade OIDC serão listados no log de auditoria do cluster se os logs do CloudWatch estiverem ativados para o plano de controle. Para ter mais informações, consulte Habilitar e desabilitar os logs do plano de controle.

  • Não é possível fazer login no AWS Management Console com uma conta de um provedor OIDC. Você só pode visualizar os recursos do Kubernetes no console fazendo login no AWS Management Console com uma conta do AWS Identity and Access Management.

Associe um provedor de identidade OIDC

Antes de associar um provedor de identidade OIDC ao cluster, você precisa das seguintes informações do seu provedor:

URL do emissor

URL do provedor de identidade do OIDC que permite que o servidor de API descubra as chaves de assinatura públicas para verificar tokens. O URL deve começar com https:// e deve corresponder à reivindicação iss nos tokens de ID do OIDC do provedor. De acordo com o padrão OIDC, os componentes de caminho são permitidos, mas os parâmetros de consulta não são. Normalmente, o URL consiste apenas em um nome de host, como https://server.example.org ou https://example.com. Este URL deve apontar para o nível abaixo de .well-known/openid-configuration e deve ser acessível ao público pela Internet.

ID do cliente (também conhecido como público)

O ID da aplicação do cliente que faz solicitações de autenticação ao provedor de identidades OIDC.

Você pode associar um provedor de identidade usando o eksctl ou o AWS Management Console.

eksctl
Para associar um provedor de identidade OIDC ao cluster usando o eksctl
  1. Crie um arquivo denominado associate-identity-provider.yaml com o seguinte conteúdo: Substitua example values pelos seus próprios valores. Os valores na seção identityProviders são obtidos do seu provedor de identidade OIDC. Os valores são necessários apenas para as configurações name, type, issuerUrl e clientId em identityProviders.

    --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: your-region-code identityProviders: - name: my-provider type: oidc issuerUrl: https://example.com clientId: kubernetes usernameClaim: email usernamePrefix: my-username-prefix groupsClaim: my-claim groupsPrefix: my-groups-prefix requiredClaims: string: string tags: env: dev
    Importante

    Não especifique o system:, ou qualquer parte dessa string, para groupsPrefix ou usernamePrefix.

  2. Crie o provedor.

    eksctl associate identityprovider -f associate-identity-provider.yaml
  3. Para usar o kubectl para trabalhar com seu cluster e o provedor de identidade OIDC, consulte Como usar kubectl na documentação do Kubernetes.

AWS Management Console
Para associar um provedor de identidade OIDC ao cluster usando o AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Selecione seu cluster e, em seguida, selecione a guia Acesso.

  3. Na seção Provedores de identidade OIDC, selecione Provedor de identidade do associado.

  4. Na página Provedor de identidade OIDC do associado, insira ou selecione as opções a seguir e escolha Associar.

    • Em Name (Nome), insira um nome exclusivo para o provedor.

    • Para Issuer URL (URL do emissor), insira a URL do seu provedor. Este URL deve ser acessado pela Internet.

    • Para o ID do cliente, insira o ID do cliente do provedor de identidade OIDC (também conhecido como público).

    • Para o Username claim (Reivindicação do usuário), insira a reivindicação a ser usada como nome de usuário.

    • Para o Username claim (Reivindicação do usuário), insira a reivindicação a ser usada como grupo de usuários.

    • (Opcional) Selecione Advanced options (Opções avançadas) e insira ou selecione as informações a seguir.

      • Username prefix (Prefixo do usuário): insira um prefixo para preceder as reivindicações de nome de usuário. O prefixo precede as reivindicações de nome de usuário para evitar conflitos com nomes existentes. Se você não fornecer um valor e o nome de usuário for um valor diferente de email, o prefixo assume como padrão o valor para a URL do emissor. Você pode usar o valor - para desativar todos os prefixos. Não especifique o system:, ou qualquer parte dessa string.

      • Groups prefix (Prefixo de grupos): insira um prefixo para preceder as reivindicações de grupos. O prefixo precede as reivindicações de nome de usuário para evitar conflitos com nomes existentes (como system: groups). Por exemplo, o valor oidc: cria nomes de grupos como oidc:engineering e oidc:infra. Não especifique o system:, ou qualquer parte dessa string.

      • Required claims (Reivindicações necessárias): selecione Add claim (adicionar reivindicação) e insira um ou mais pares de valor de chave que descrevam as reivindicações necessárias no token de ID do cliente. Os pares descrevem as reivindicações obrigatórias no token de ID. Se definido, cada reivindicação é verificada para estar presente no token de ID com um valor correspondente.

  5. Para usar o kubectl para trabalhar com seu cluster e o provedor de identidade OIDC, consulte Como usar kubectl na documentação do Kubernetes.

Desassociar um provedor de identidade OIDC do cluster

Se você desassociar um provedor de identidade OIDC do cluster, os usuários incluídos no provedor não poderão mais acessar o cluster. No entanto, você ainda pode acessar o cluster com as entidades principais do IAM.

Para desassociar um provedor de identidade OIDC do cluster usando o AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Na seção Provedores de identidade OIDC, selecione Desassociar, insira o nome do provedor de identidade e selecione Disassociate.

Exemplo de política do IAM

Se você quiser impedir que um provedor de identidade OIDC seja associado a um cluster, crie e associe a política do IAM a seguir às contas do IAM dos seus administradores do Amazon EKS. Para obter mais informações, consulte Creating IAM policies (Criar políticas do IAM) e Adding IAM identity permissions (Adicionar permissões de identidade do IAM) no Manual do usuário do IAM e também Actions, resources, and condition keys for Amazon Elastic Kubernetes Service (Ações, recursos e chaves de condição para o Amazon Elastic Kubernetes Service) na Referência da autorização de serviço.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2.amazonaws.com:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }

A política de exemplo a seguir permite a associação do provedor de identidade OIDC se o clientID for kubernetes e issuerUrl for https://cognito-idp.us-west-2amazonaws.com/*.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }

Provedores de identidade OIDC validados por parceiros

O Amazon EKS mantém um relacionamento com uma rede de parceiros que oferecem suporte para provedores compatíveis de identidade OIDC. Consulte a documentação dos parceiros a seguir para obter detalhes sobre como integrar o provedor de identidade ao Amazon EKS.

Parceiro

Produto

Documentação

PingIdentity

PingOne for Enterprise

Instruções de instalação

O Amazon EKS tem como objetivo oferecer uma ampla variedade de opções para cobrir todos os casos de uso. Se você desenvolver um provedor de identidade compatível com OIDC e comercialmente disponível que não esteja listado aqui, entre em contato com nossa equipe de parceiros em aws-container-partners@amazon.com para obter mais informações.