Perfis do IAM para contas de serviço
As aplicações nos contêineres Pod’s podem usar um AWS SDK ou a AWS CLI para fazer solicitações de API para serviços da AWS usando permissões de gerenciamento de identidade e acesso (IAM) da AWS. As aplicações devem assinar suas solicitações de API da AWS com as credenciais da AWS. As funções do IAM para contas de serviço fornecem a capacidade de gerenciar credenciais para suas aplicações, semelhante à maneira 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. Não é possível usar perfis IAM para contas de serviço com clusters locais Crie clusters locais do Amazon EKS em AWS Outposts para alta disponibilidadepara o Amazon EKS em AWS Outposts.
Os perfis do IAM para contas de serviço oferecem as seguintes vantagens:
-
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 perfis do IAM para contas de serviço, os contêineres Pod’s também têm as permissões atribuídas ao perfil do IAM do nó do Perfil do IAM em nós do Amazon EKSAmazon EKS, a menos que você bloqueie o acesso do Pod ao Serviço de metadados de instância do Amazon EC2 (IMDS). 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 garantir a auditoria retrospectiva.
Habilite perfis do IAM para contas de serviço concluindo os seguintes procedimentos:
-
Criar um provedor OIDC do IAM para o clusterCrie um provedor IAM OIDC para o seu cluster - Você só deve concluir esse procedimento uma vez para cada cluster.
nota
Se você habilitou o endpoint da VPC do EKS, o endpoint de serviço de OIDC do EKS não poderá ser acessado de dentro dessa VPC. Consequentemente, suas operações, como a criação de um provedor de OIDC
eksctl
dentro da VPC, não funcionarão e resultarão em um tempo limite ao tentar solicitarhttps://oidc.eks
. Segue um exemplo de mensagem de erro:. region
.amazonaws.com
server cant find oidc.eks.region.amazonaws.com: NXDOMAIN
Para concluir essa etapa, você pode executar o comando fora da VPC, por exemplo, no AWS CloudShell ou em um computador conectado à Internet. Como alternativa, você pode criar um resolvedor condicional de horizonte segmentado na VPC, como o Route 53 Resolver, para usar um resolvedor diferente para o URL do emissor do OIDC e não usar o DNS da VPC para ela. Para ver um exemplo de encaminhamento condicional em CoreDNS, consulte a Solicitação de recurso do Amazon EKS
Informações básicas do IAM, Kubernetes e OpenID Connect (OIDC)
Em 2014, o AWS Identity and Access Management adicionou suporte para identidades federadas usando o OpenID Connect (OIDC). Esse recurso permite que você autentique chamadas de API da AWS com provedores de identidade compatíveis e receba um token de Web JSON OIDC válido (JWT). Você pode passar esse token para a operação da API AWS STS AssumeRoleWithWebIdentity
e receber credenciais de perfil temporária do IAM. Você pode usar essas credenciais para interagir com qualquer serviço do AWS, inclusive o Amazon S3 e o DynamoDB.
Cada token JWT é assinado por um par de chaves de assinatura. As chaves são servidas no provedor OIDC gerenciado pelo Amazon EKS e a chave privada é trocada a cada 7 dias. O Amazon EKS mantém as chaves públicas até a sua expiração. Se você conectar clientes OIDC externos, esteja ciente de que precisará atualizar as chaves de assinatura antes que a chave pública expire. Saiba como Obter as chaves de assinatura para validar os tokens OIDCBuscar chaves de assinatura para validar tokens OIDC.
O Kubernetes há muito tempo usa contas de serviço como seu próprio sistema de identidade interno. Os Pods podem se autenticar com o servidor de API do Kubernetes usando um token montado automaticamente (que não era OIDC JWT) que apenas o servidor de API do Kubernetes pode validar. Esses tokens de conta de serviço legados não expiram, e a rotação da chave de assinatura é um processo difícil. Na versão 1.12
do Kubernetes, foi adicionado suporte para um novo recurso ProjectedServiceAccountToken
. Esse recurso é um token da Web JSON OIDC que também contém a identidade da conta de serviço e oferece suporte a um público configurável.
O Amazon EKS hospeda um endpoint público de descoberta de OIDC em cada cluster que contém as chaves de assinatura para os tokens de Web JSON ProjectedServiceAccountToken
, de modo que sistemas externos, como o IAM, possam validar e aceitar os tokens de OIDC emitidos pelo Kubernetes.