Práticas recomendadas para o gerenciamento de segredos no Amazon ECS - Amazon Elastic Container Service

Práticas recomendadas para o gerenciamento de segredos no Amazon ECS

Os segredos, como as chaves de API e as credenciais de banco de dados, são frequentemente usados por aplicações para obter acesso a outros sistemas. Eles geralmente consistem em um nome de usuário e senha, um certificado ou uma chave de API. O acesso a esses segredos deve ser restrito a entidades principais específicas do IAM que estejam usando o IAM, e injetados em contêineres no runtime.

Os segredos podem ser injetados perfeitamente nos contêineres a partir do AWS Secrets Manager e do Systems Manager Parameter Store do Amazon ECS. Esses segredos podem ser referenciados em sua tarefa como qualquer um dos seguintes.

  1. Eles são referenciadas como variáveis de ambiente que usam o parâmetro de definição de contêiner secrets.

  2. Eles são referenciados como secretOptions se sua plataforma de registro em log exigir autenticação. Para obter mais informações, consulte opções de configuração de logs.

  3. Eles são referenciados como segredos extraídos por imagens que usam o parâmetro de definição do contêiner repositoryCredentials se o registro de onde o contêiner está sendo retirado exigir autenticação. Use esse método ao extrair imagens da Galeria Pública do Amazon ECR. Para obter mais informações, consulte Autenticação de registro privado para tarefas.

Recomendações para os segredos

Recomendamos fazer o seguinte ao configurar o gerenciamento de segredos.

Usar o AWS Secrets Manager ou o Systems Manager Parameter Store do Amazon EC2 para armazenar materiais secretos

Você deve armazenar com segurança chaves de API, credenciais de banco de dados e outros materiais secretos no AWS Secrets Manager ou como um parâmetro criptografado no Systems Manager Parameter Store do Amazon EC2. Esses serviços são semelhantes porque ambos são armazenamentos gerenciados de chave-valor que usam AWS KMS para criptografar dados confidenciais. O AWS Secrets Manager, contudo, também inclui a capacidade de alternar segredos automaticamente, gerar segredos aleatórios e compartilhar segredos entre contas da AWS. Se você considerar esses recursos importantes, use AWS Secrets Manager, caso contrário, use parâmetros criptografados.

nota

As tarefas que fazem referência a um segredo do AWS Secrets Manager ou do Systems Manager Parameter Store do Amazon EC2 exigem um Perfil de execução de tarefas com uma política que conceda ao Amazon ECS acesso ao segredo desejado e, se aplicável, a chave do AWS KMS usada para criptografar e descriptografar esse segredo.

Importante

Os segredos referenciados nas tarefas não são alternados automaticamente. Se seu segredo mudar, você deverá forçar uma nova implantação ou iniciar uma nova tarefa para recuperar o valor secreto mais recente. Para obter mais informações, consulte os tópicos a seguir.

Recuperação de dados de um bucket criptografado do Amazon S3

Como o valor das variáveis de ambiente pode vazar inadvertidamente nos logs e ser revelado durante a execução do docker inspect, você deve armazenar segredos em um bucket criptografado do Amazon S3 e usar funções de tarefas para restringir o acesso a esses segredos. Ao fazer isso, sua aplicação deve ser gravada para ler o segredo do bucket do Amazon S3. Para obter instruções, consulte Definição do comportamento padrão da criptografia do lado do servidor para buckets do Amazon S3.

Monte o segredo em um volume usando um contêiner auxiliar

Como há um risco elevado de vazamento de dados com variáveis de ambiente, você deve usar um contêiner auxiliar que leia seus segredos do AWS Secrets Manager e os grave em um volume compartilhado. Esse contêiner pode ser executado e sair antes do contêiner da aplicação usando o pedido de contêineres do Amazon ECS. Quando você faz isso, o contêiner da aplicação monta posteriormente o volume em que o segredo foi gravado. Assim como o método de bucket do Amazon S3, sua aplicação deve ser gravada para ler o segredo do volume compartilhado. Como o volume tem como escopo a tarefa, o volume será excluído automaticamente após a interrupção da tarefa. Para ver um exemplo de contêiner auxiliar, consulte o projeto aws-secret-sidecar-injector.

nota

No Amazon EC2, o volume no qual o segredo é gravado pode ser criptografado com uma chave gerenciada pelo cliente AWS KMS. No AWS Fargate, o armazenamento em volume é criptografado automaticamente usando uma chave gerenciada pelo serviço.

Recursos adicionais do