Saiba como a EKS Pod Identity 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 suas credenciais da AWS aos contêineres ou de 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:
-
Menor privilégio: é possível definir o escopo de 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 okube2iam
. -
Isolamento de credenciais: um contêiner de Pod’s só pode recuperar credenciais para o perfil do IAM que esteja associada à conta de serviço que o contêiner use. Um contêiner nunca tem acesso a credenciais usadas por outros contêineres em outros Pods. Ao usar identidades de pod, os contêineres Pod’s também têm as permissões atribuídas a Perfil do IAM em nós do Amazon EKS, a menos que você bloqueie o acesso de Pod ao IMDS (Amazon EC2 Instance Metadata Service). Para obter mais informações, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento
. -
Auditabilidade: o log de acesso e de eventos está disponível no AWS CloudTrail para ajudar a facilitar a auditoria retrospectiva.
O EKS Pod Identity é 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 EKS Auth no EKS Pod Identity, em vez de cada SDK AWS 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 Entender como a EKS Pod Identity 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:
-
Configurar o Amazon EKS Pod Identity Agent: esse procedimento é realizado apenas uma vez para cada cluster.
-
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.
-
Configurar pods para acessar serviços da AWS com contas de serviço: conclua esse procedimento para cada Pod que precisa de acesso aos serviços da AWS.
-
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.
Considerações sobre o EKS Pod Identity
-
É possível associar um perfil do IAM a cada conta de serviço do Kubernetes em cada cluster. É possível alterar qual perfil é mapeado na conta de serviço editando a associação ao EKS Pod Identity.
-
Você só pode associar perfis que estejam na mesma conta AWS que o cluster. É possível delegar o acesso de outra conta ao perfil nessa conta configurada por você para o EKS Pod Identities usar. Para ver um tutorial sobre como delegar acesso e
AssumeRole
, consulte o Delegar acesso em contas da AWS usando perfis do IAM no Guia do usuário do IAM. -
O EKS Pod Identity Agent é necessário. Ele é executado como um
DaemonSet
do Kubernetes em seus nós e fornece credenciais somente para os pods no nó em que for executado. Para obter mais informações sobre a compatibilidade do EKS Pod Identity Agent, consulte a seção Restrições do EKS Pod Identity a seguir. -
Se você estiver usando o grupo de segurança para pods junto com o agente de Identidade de Pods, talvez seja necessário definir o sinalizador
POD_SECURITY_GROUP_ENFORCING_MODE
para a CNI da VPC AWS. Para obter mais informações sobre considerações de grupos de segurança para pods, consulte Atribuir grupos de segurança a pods individuais. -
O EKS Pod Identity Agent usa o
hostNetwork
do nó e usa a porta80
e a porta2703
em um endereço link-local no nó. Esse endereço é169.254.170.23
para clusters IPv4 e[fd00:ec2::23]
para clusters IPv6.Se você desabilitar endereços
IPv6
ou de alguma forma impedir endereços IPIPv6
do localhost, o agente não poderá iniciar. Para iniciar o agente em nós que não podem usarIPv6
, siga as etapas em Desabilitar o IPv6 no EKS Pod Identity Agent para desabilitar a configuração deIPv6
.
Versões de cluster do EKS Pod Identity
Para usar o EKS Pod Identities, o cluster deve ter uma versão da plataforma igual ou posterior à versão listada na tabela a seguir ou uma versão de Kubernetes posterior às versões listadas na tabela.
Versão do Kubernetes | Versão da plataforma |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Restrições do EKS Pod Identity
Os EKS Pod Identities estão disponíveis em:
-
Versões de cluster do Amazon EKS listadas no tópico Versões de cluster do EKS Pod Identity anterior.
-
Nós de processamento no cluster que são instâncias do Linux do Amazon EC2.
Os EKS Pod Identities não estão disponíveis em:
-
AWS Outposts.
-
Amazon EKS Anywhere
-
Clusters do Kubernetes que criados e executados 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.
-
Complementos do Amazon EKS que precisam de credenciais do IAM. Em vez disso, os complementos do EKS só podem usar perfis do IAM para contas de serviço. A lista de complementos do EKS que usam credenciais do IAM inclui:
-
Os drivers de armazenamento do CSI: CSI do EBS, CSI do EFS, driver da CSI do Amazon FSx para Lustre, driver da CSI do Amazon FSx para NetApp ONTAP, driver da CSI do Amazon FSx para OpenZFS, driver da CSI do Amazon File Cache, AWS Secrets and Configuration Provider (ASCP) para o driver da CSI do Kubernetes Secrets Store
nota
Se esses controladores, drivers e plug-ins forem instalados como complementos autogerenciados em vez de complementos do EKS, eles serão compatíveis com o EKS Pod Identities, desde que sejam atualizados para usar os SDKs da AWS mais recentes.
-