CloudTroop Newsletter

Protegendo Secrets no Kubernetes: O Novo Add-on da AWS para o EKS

Uma nova forma de gerenciar secrets no Kubernetes

A AWS anunciou um novo provedor para o Secrets Store CSI Driver destinado ao Amazon EKS (Elastic Kubernetes Service), que funciona como um add-on gerenciado para a plataforma. Esse novo componente permite que as equipes de desenvolvimento recuperem secrets do AWS Secrets Manager e parâmetros do AWS Systems Manager Parameter Store, montando-os como arquivos nos pods do Kubernetes. A solução é clara em sua proposta: oferecer uma forma segura, confiável e gerenciada de acessar credenciais dentro de ambientes containerizados.

O novo add-on simplifica significativamente o processo de instalação e configuração, funciona tanto em instâncias de Amazon Elastic Compute Cloud (EC2) quanto em nós híbridos, e é mantido com as correções de segurança e atualizações mais recentes. Para equipes brasileiras que trabalham com Kubernetes em ambientes AWS, isso representa uma redução considerável no tempo necessário para implementar práticas seguras de gestão de credenciais.

Por que isso importa para a segurança

Historicamente, um dos maiores desafios em ambientes Kubernetes é evitar o uso de credenciais hardcoded no código-fonte das aplicações. O Secrets Manager já resolve essa questão no contexto geral da AWS, mas integrá-lo nativamente com Kubernetes exigia passos complexos de instalação e manutenção.

O novo provedor funciona como um DaemonSet do Kubernetes de código aberto, trabalhando em conjunto com o Secrets Store CSI Driver mantido pela comunidade Kubernetes. Essa arquitetura permite que o driver de armazenamento de secrets funcione de forma nativa no cluster, sem necessidade de integração customizada.

Benefícios do add-on gerenciado

Os add-ons do EKS da AWS proporcionam instalação e gerenciamento de um conjunto curado de componentes para clusters EKS. Em vez de depender de métodos legados como Helm ou kubectl, o novo add-on reduz significativamente o tempo de setup e aumenta a estabilidade geral dos clusters. Além disso, o gerenciamento centralizado pela AWS garante que patches de segurança e correções de bugs sejam aplicados de forma automática e consistente.

Considerações de segurança

Como em qualquer solução que envolve gestão de credenciais, a segurança é uma preocupação central. A AWS recomenda armazenar secrets em cache na memória quando possível, reduzindo a frequência de acesso ao Secrets Manager. Para equipes que preferem uma experiência totalmente nativa do Kubernetes, o AWS Secrets Manager Agent oferece uma alternativa complementar.

Do ponto de vista de controle de acesso, qualquer entidade IAM (Identity and Access Management) que precise acessar os secrets deve ter permissões explícitas no Secrets Manager. Se usar Parameter Store, também precisa de permissões específicas para ler parâmetros. As políticas de recurso funcionam como mecanismo adicional de controle de acesso, e é especialmente importante quando se acessa secrets de contas AWS diferentes.

O add-on inclui suporte a endpoints FIPS, alinhando-se com exigências de conformidade em ambientes altamente regulados. A AWS fornece uma política IAM gerenciada chamada AWSSecretsManagerClientReadOnlyAccess, que é a recomendação padrão para uso com esse add-on. Para implementar o princípio do menor privilégio, é possível criar políticas customizadas direcionadas apenas aos secrets específicos que cada aplicação precisa acessar.

Guia prático de implementação

Para equipes que desejam começar, a AWS disponibiliza um fluxo de trabalho completo desde a criação do cluster até a recuperação efetiva de um secret. Abaixo, apresentamos um resumo dos passos principais.

Pré-requisitos

Antes de iniciar, certifique-se de ter:

  • Credenciais AWS configuradas no seu ambiente para permitir chamadas à API
  • AWS CLI v2 ou superior
  • A região preferida configurada no seu ambiente via comando: aws configure set default.region
  • As ferramentas de linha de comando kubectl e eksctl instaladas
  • Um arquivo de deployment Kubernetes disponível no repositório do provedor

Criando o cluster EKS

Comece criando uma variável de shell com o nome do seu cluster:

CLUSTER_NAME="my-test-cluster"

Depois, crie o cluster:

eksctl create cluster $CLUSTER_NAME

O eksctl usará automaticamente uma versão recente do Kubernetes e criará todos os recursos necessários para o funcionamento do cluster. Esse comando geralmente leva cerca de 15 minutos.

Criando um secret de teste

Crie um secret chamado addon_secret no Secrets Manager:

aws secretsmanager create-secret \
--name addon_secret \
--secret-string "super secret!"

Instalando o add-on do Secrets Store CSI Driver

Use o eksctl para instalar o add-on:

eksctl create addon \
--cluster $CLUSTER_NAME \
--name aws-secrets-store-csi-driver-provider

Configurando autenticação com IAM e Pod Identity

Crie uma role IAM que o serviço de Pod Identity do EKS possa assumir (substitua pela sua região AWS):

ROLE_ARN=$(aws --region  --query Role.Arn --output text iam create-role --role-name nginx-deployment-role --assume-role-policy-document '{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}')

Anexe a política gerenciada à role que você acabou de criar:

aws iam attach-role-policy \
--role-name nginx-deployment-role \
--policy-arn arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

Instalando o EKS Pod Identity Agent

O add-on oferece dois métodos de autenticação: IAM roles para service accounts (IRSA) e EKS Pod Identity. Neste exemplo, usaremos Pod Identity. Instale o agent:

eksctl create addon \
--cluster $CLUSTER_NAME \
--name eks-pod-identity-agent

Depois, crie a associação de Pod Identity para o cluster (substituindo pela sua região):

eksctl create podidentityassociation \
--cluster $CLUSTER_NAME \
--namespace default \
--region  \
--service-account-name nginx-pod-identity-deployment-sa \
--role-arn $ROLE_ARN \
--create-service-account true

Configurando a SecretProviderClass

A SecretProviderClass é um arquivo YAML que define quais secrets e parâmetros devem ser montados como arquivos no seu cluster. Crie um arquivo chamado spc.yaml com o seguinte conteúdo:

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: nginx-pod-identity-deployment-aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "addon_secret"
        objectType: "secretsmanager"
        usePodIdentity: "true"

Aplique a configuração:

kubectl apply -f spc.yaml

Para detalhes adicionais sobre a SecretProviderClass, consulte a documentação no GitHub do provedor.

Implantando o pod no cluster

Use o arquivo de deployment disponível no repositório para implantar o pod:

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

Isso montará o addon_secret no caminho /mnt/secrets-store dentro do seu cluster.

Recuperando e verificando o secret

Para confirmar que o secret foi montado com sucesso, execute:

kubectl exec -it $(kubectl get pods | awk '/nginx-pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/addon_secret

Você deverá ver a saída:

super secret!

Parabéns! Você recuperou com sucesso um secret do Secrets Manager e o montou como arquivo no seu cluster Kubernetes usando o novo add-on da AWS.

Limpeza de recursos

Quando terminar a implementação de testes, limpe os recursos criados:

aws secretsmanager delete-secret \
--secret-id addon_secret \
--force-delete-without-recovery

aws iam delete-role --role-name nginx-deployment-role

eksctl delete cluster $CLUSTER_NAME

Alternativas de instalação

Embora o add-on gerenciado seja a forma recomendada, a AWS também oferece opções alternativas de instalação usando AWS CloudFormation, AWS Command Line Interface (AWS CLI), console de gerenciamento ou a própria API do EKS.

Conclusão

O novo add-on do Secrets Store CSI Driver para EKS representa um avanço significativo na forma como as equipes podem gerenciar credenciais em ambientes Kubernetes hospedados na AWS. Ao oferecer instalação simplificada, gerenciamento centralizado, atualizações de segurança automáticas e integração estreita com o EKS, a solução reduz tanto a complexidade operacional quanto o risco de segurança associado ao armazenamento inadequado de secrets.

Para organizações brasileiras que trabalham com Kubernetes em escala, esse add-on se posiciona como uma alternativa muito mais prática do que métodos legados de instalação, mantendo a flexibilidade e a conformidade com padrões de segurança internacionais. A documentação técnica completa está disponível para equipes que desejam explorar cenários mais avançados e configurações específicas.

Saiba mais

Fonte

How to use the Secrets Store CSI Driver provider Amazon EKS add-on with Secrets Manager (https://aws.amazon.com/blogs/security/how-to-use-the-secrets-store-csi-driver-provider-amazon-eks-add-on-with-secrets-manager/)