Use AWS segredos e o provedor de configuração CSI com o Pod Identity para Amazon EKS - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use AWS segredos e o provedor de configuração CSI com o Pod Identity para Amazon EKS

A integração do AWS Secrets and Configuration Provider com o Pod Identity Agent para o Amazon Elastic Kubernetes Service fornece segurança aprimorada, configuração simplificada e desempenho aprimorado para aplicativos executados no Amazon EKS. O Pod Identity simplifica a autenticação do IAM para o Amazon EKS ao recuperar segredos do Secrets Manager ou AWS Systems Manager parâmetros do Parameter Store.

A Identidade de Pods do Amazon EKS simplifica o processo de configuração de permissões do IAM para aplicações do Kubernetes, possibilitando que as permissões sejam configuradas diretamente por meio das interfaces do Amazon EKS, reduzindo o número de etapas e eliminando a necessidade de alternar entre os serviços do Amazon EKS e do IAM. A Identidade de Pods permite o uso de um único perfil do IAM em vários clusters sem atualizar as políticas de confiança, e oferece suporte a tags de sessão de perfis para um controle de acesso mais granular. Essa abordagem não apenas simplifica o gerenciamento de políticas, permitindo a reutilização de políticas de permissão em todos os perfis, mas também aumenta a segurança ao permitir o acesso a recursos da AWS com base nas tags correspondentes.

Como funciona

  1. A Identidade de Pods atribui um perfil do IAM ao pod.

  2. O ASCP usa essa função para se autenticar com. Serviços da AWS

  3. Se autorizado, o ASCP recupera os segredos solicitados e os disponibiliza para o Pod.

Para obter mais informações, consulte Como a Identidade de Pods do Amazon EKS funciona no Guia do usuário do Amazon EKS.

Pré-requisitos

Importante

A Identidade de Pods é compatível somente com o Amazon EKS na nuvem. Ele não é compatível com o Amazon EKS Anywhere nem com clusters Kubernetes autogerenciados em instâncias da Amazon. Serviço Red Hat OpenShift na AWS EC2

  • Cluster do Amazon EKS (versão 1.24 ou posterior)

  • Acesso a um AWS CLI cluster Amazon EKS via kubectl

  • Acesso a dois Contas da AWS (para acesso entre contas)

Instalar o agente da Identidade de Pods do Amazon EKS

Para usar a Identidade de Pods com o cluster, você deve instalar o complemento do agente da Identidade de Pods do Amazon EKS.

Para instalar o complemento agente da Identidade de Pods
  • Instale o complemento Pod Identity Agent em seu cluster:

    eksctl create addon \ --name eks-pod-identity-agent \ --cluster clusterName \ --region region

Configurar o ASCP com a Identidade de Pods

  1. Crie uma política de permissões que secretsmanager:GetSecretValue conceda secretsmanager:DescribeSecret permissões aos segredos que o pod precisa acessar. Para visualizar um exemplo de política, consulte Exemplo: permissão para ler e descrever segredos individuais.

  2. Crie um perfil do IAM que possa ser assumido pela entidade principal do serviço do Amazon EKS para a Identidade de Pods:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

    Anexe a política do IAM à função:

    aws iam attach-role-policy \ --role-name MY_ROLE \ --policy-arn POLICY_ARN
  3. Crie uma associação de Identidade de Pods. Para obter um exemplo, consulte Criar uma associação de Identidade de Pods no Guia do usuário do Amazon EKS

  4. Crie o SecretProviderClass que especifica quais segredos montar no pod:

    kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml

    A principal diferença SecretProviderClass entre o IRSA e o Pod Identity é o parâmetro usePodIdentity opcional. É um campo opcional que determina a abordagem de autenticação. Quando não especificado, o padrão é usar os perfis do IAM para contas de serviço (IRSA).

    • Para usar a Identidade de Pods do EKS, use qualquer um destes valores: "true", "True", "TRUE", "t", "T".

    • Para usar explicitamente o IRSA, defina para qualquer um destes valores: "false", "False", "FALSE", "f", or "F".

  5. Implante o pod que monta os segredos em/mnt/secrets-store:

    kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
  6. Se você usa um cluster privado do Amazon EKS, certifique-se de que a VPC na qual o cluster está tenha um AWS STS endpoint. Para obter informações sobre a criação de um endpoint, consulte Endpoints da VPC da interface no Guia do usuário do AWS Identity and Access Management .

Verificar a montagem do segredo

Para verificar se o segredo está montado corretamente, execute o seguinte comando:

kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MySecret
Para configurar o Amazon EKS Pod Identity para acessar segredos no Secrets Manager
  1. Crie uma política de permissões que secretsmanager:GetSecretValue conceda secretsmanager:DescribeSecret permissões aos segredos que o pod precisa acessar. Para visualizar um exemplo de política, consulte Exemplo: permissão para ler e descrever segredos individuais.

  2. Crie um segredo no Secrets Manager, se você ainda não tiver um.

Solução de problemas

É possível visualizar a maioria dos erros ao descrever a implantação do pod.

Para ver mensagens de erro para o contêiner
  1. Obtenha uma lista de nomes de pods com o comando a seguir. Se você não estiver usando o namespace padrão, use -n NAMESPACE.

    kubectl get pods
  2. Para descrever o pod, no comando a seguir, PODID use o ID do pod dos pods que você encontrou na etapa anterior. Se você não estiver usando o namespace padrão, use -n NAMESPACE.

    kubectl describe pod/PODID
Para ver erros para o ASCP
  • Para encontrar mais informações nos registros do provedor, no comando a seguir, PODID use o ID do csi-secrets-store-provider-aws Pod.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/PODID