Saiba como a Identidade de Pods do EKS concede aos pods acesso aos serviços da AWS - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Saiba como a Identidade de Pods do EKS concede aos pods acesso aos serviços da AWS

Os aplicações nos contêineres de um Pod podem usar um SDK AWS ou a CLI AWS para fazer solicitações de API para serviços AWS usando permissões de gerenciamento de identidade e acesso (IAM) AWS. As aplicações devem assinar suas solicitações de API da AWS com as credenciais da AWS.

Os EKS Pod Identities permitem gerenciar credenciais para suas aplicações de forma semelhante a como os perfis de instância do Amazon EC2 fornecem credenciais para instâncias do Amazon EC2. Em vez de criar e distribuir as credenciais da AWS para os contêineres ou usar o perfil da instância do Amazon EC2, você pode associar um perfil do IAM a uma conta de serviço do Kubernetes e configurar os pods para usar a conta de serviço.

Cada associação ao EKS Pod Identity mapeia um perfil a uma conta de serviço em um namespace no cluster especificado. Se você tiver a mesma aplicação em vários clusters, poderá fazer associações idênticas em cada cluster sem modificar a política de confiança do perfil.

Se um pod usa uma conta de serviço que tem uma associação, o Amazon EKS define variáveis de ambiente nos contêineres do pod. As variáveis de ambiente configuram os SDKs da AWS, incluindo a AWS CLI, para usar as credenciais de Identidade de pods do EKS.

Benefícios dos EKS Pod Identities

Os EKS Pod Identities fornecem os seguintes benefícios:

  • Privilégio mínimo: você pode definir o escopo das permissões do IAM para uma conta de serviço, e somente os pods que usarem essa conta de serviço terão acesso a essas permissões. Esse recurso também elimina a necessidade de soluções de terceiros, como o kiam ou o kube2iam.

  • Isolamento de credenciais: quando o acesso ao serviço de metadados de instância (IMDS) do Amazon EC2 estiver restrito, um contêiner de pods só poderá recuperar as credenciais do perfil do IAM que estiver associado à conta de serviço que o contêiner usa. Um contêiner nunca tem acesso a credenciais usadas por outros contêineres em outros pods. Se o IMDS não estiver restrito, os contêineres do pod também terão acesso ao perfil do IAM do nó do Amazon EKS, e os contêineres poderão obter acesso às credenciais dos perfis do IAM de outros pods no mesmo nó. Para obter mais informações, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento.

nota

Os pods configurados com hostNetwork: true sempre terão acesso ao IMDS, mas a CLI e os SDKs da AWS usarão as credenciais da Identidade de Pods quando ativados.

  • Auditabilidade: o log de acesso e de eventos está disponível no AWS CloudTrail para ajudar a facilitar a auditoria retrospectiva.

Importante

Os contêineres não são um limite de segurança, e o uso da Identidade de Pods não muda isso. Os pods atribuídos ao mesmo nó compartilharão um kernel e possivelmente outros recursos, dependendo da configuração do pod. Embora os pods executados em nós separados sejam isolados na camada de computação, existem aplicações de nós que têm permissões adicionais na API do Kubernetes além do escopo de uma instância individual. Alguns exemplos são kubelet, kube-proxy, drivers de armazenamento CSI ou suas próprias aplicações do Kubernetes.

O Identidade de Pods do EKS é um método mais simples do que Perfis do IAM para contas de serviço, pois esse método não usa provedores de identidade OIDC. O EKS Pod Identity oferece os seguintes aprimoramentos:

  • Operações independentes: em muitas organizações, criar provedores de identidade OIDC é responsabilidade de equipes diferentes da administração dos clusters do Kubernetes. O EKS Pod Identity tem uma separação clara dos deveres em que toda a configuração das associações ao EKS Pod Identity é feita no Amazon EKS e toda a configuração das permissões do IAM é feita no IAM.

  • Reutilização: o EKS Pod Identity usa uma única entidade principal do IAM em vez das entidades principais separadas para cada cluster que os perfis do IAM para contas de serviço utilizam. Seu administrador do IAM adiciona a seguinte entidade principal à política de confiança de qualquer perfil para torná-la utilizável pelo EKS Pod Identities.

    "Principal": { "Service": "pods.eks.amazonaws.com" }
  • Escalabilidade: cada conjunto de credenciais temporárias é assumido pelo serviço de autenticação no EKS na Identidade de Pods do EKS, em vez de cada AWS SDK que você executa em cada pod. Em seguida, o Amazon EKS Pod Identity Agent executado em cada nó emite as credenciais para os SDKs. Assim, a carga é reduzida para uma vez para cada nó e não é duplicada em cada pod. Para obter mais detalhes do processo, consulte Como a Identidade de Pods do EKS funciona.

Para obter mais informações sobre como comparar as duas alternativas, consulte Conceder às workloads do Kubernetes acesso a AWS usando contas de serviço do Kubernetes.

Visão geral da configuração do EKS Pod Identities

Ative o EKS Pod Identities concluindo os seguintes procedimentos:

  1. Configurar o Amazon EKS Pod Identity Agent: esse procedimento é realizado apenas uma vez para cada cluster. Você não precisará concluir esta etapa se o Modo Automático do EKS estiver habilitado no cluster.

  2. Atribuir um perfil do IAM a uma conta de serviço do Kubernetes: conclua esse procedimento para cada conjunto exclusivo de permissões que você deseja que uma aplicação tenha.

  3. Configurar pods para acessar serviços da AWS com contas de serviço: conclua este procedimento para cada pod que precisa de acesso aos serviços da AWS.

  4. Usar identidade de pods com o AWS SDK: confirme que a workload usa um AWS SDK de uma versão compatível e que essa workload usa a cadeia de credenciais padrão.

Limites

  • São suportadas até 5 mil associações de Identidades de Pods do EKS por cluster para mapear perfis do IAM para contas de serviço do Kubernetes.

Considerações

  • Associação de perfil do IAM: cada conta de serviço do Kubernetes em um cluster pode ser associada a um perfil do IAM da mesma conta da AWS que o cluster. Para alterar o perfil, edite a associação de Identidades de Pods do EKS. Para acesso entre contas, delegue o acesso ao perfil usando perfis do IAM. Para obter mais informações, consulte Delegar acesso entre contas da AWS usando perfis do IAM no Guia do usuário do IAM.

  • Agente da Identidade de Pods do EKS: o agente da Identidade de Pods é necessário para usar a Identidade de Pods do EKS. O agente é executado como um DaemonSet do Kubernetes em nós de cluster, fornecendo credenciais somente para pods no mesmo nó. Ele usa a hostNetwork do nó, ocupando a porta 80 e a 2703 no endereço local do link (169.254.170.23 para IPv4, [fd00:ec2::23] para IPv6). Se o IPv6 estiver desabilitado em seu cluster, desabilite o IPv6 para o agente da Identidade de Pods. Para saber mais, consulte Desabilitar o IPv6 no agente da Identidade de Pods do EKS.

  • Consistência eventual: as associações de Identidades de Pods do EKS acabam sendo consistentes, com possíveis atrasos de vários segundos após as chamadas de API. Evite criar ou atualizar associações em caminhos de código críticos e de alta disponibilidade. Em vez disso, execute essas ações em rotinas de inicialização ou configuração separadas e menos frequentes. Para saber mais, consulte Security Groups Per Pod no Guia de práticas recomendadas do EKS.

  • Considerações sobre proxy e grupos de segurança: para pods que usam um proxy, adicione 169.254.170.23 (IPv4) e [fd00:ec2::23] (IPv6) às variáveis de ambiente no_proxy/NO_PROXY para evitar falhas nas solicitações ao agente da Identidade de Pods do EKS. Se estiver usando grupos de segurança para pods com a CNI da AWS VPC, defina a sinalização ENABLE_POD_ENI como “true” e a sinalização POD_SECURITY_GROUP_ENFORCING_MODE como “standard”. Para saber mais, consulte Atribuir grupos de segurança a pods individuais.

Versões de cluster do EKS Pod Identity

Para usar a Identidade de Pods do EKS, o cluster deve ter uma versão da plataforma igual ou posterior à versão listada na tabela a seguir, ou uma versão do Kubernetes posterior às versões listadas na tabela. Para encontrar a versão sugerida do agente da Identidade de Pods do EKS para uma versão do Kubernetes, consulte Verificar a compatibilidade da versão do complemento do Amazon EKS com um cluster.

Versão do Kubernetes Versão da plataforma

Versões do Kubernetes não listadas

Todas as versões compatíveis da plataforma

1.28

eks.4

1.27

eks.8

1.26

eks.9

Restrições do EKS Pod Identity

Os EKS Pod Identities estão disponíveis em:

Os EKS Pod Identities não estão disponíveis em:

  • AWS Outposts.

  • Amazon EKS Anywhere

  • Clusters do Kubernetes que você cria e executa no Amazon EC2. Os componentes do EKS Pod Identity estão disponíveis somente no Amazon EKS.

Não é possível usar o EKS Pod Identities com:

  • Pods executados em qualquer lugar, exceto instâncias do Linux do Amazon EC2. Não há suporte para pods Linux e Windows executados em AWS Fargate (Fargate). Não há suporte a pods executados em instâncias do Windows do Amazon EC2.