Especificar dados confidenciais usando segredos do Secrets Manager no Amazon ECS
O Amazon ECS permite a injeção de dados confidenciais nos contêineres armazenando esses dados confidenciais em segredos do AWS Secrets Manager e depois referenciando-os na definição do contêiner. Para obter mais informações, consulte Transferência de dados confidenciais para um contêiner do Amazon ECS.
Saiba como criar um segredo do Secrets Manager, fazer referência ao segredo em uma definição de tarefa do Amazon ECS e, em seguida, verificar se isso funcionou ao consultar a variável de ambiente dentro de um contêiner que mostra o conteúdo do segredo.
Pré-requisitos
Este tutorial pressupõe que os seguintes pré-requisitos foram concluídos:
-
As etapas em Configuração para usar o Amazon ECS foram concluídas.
-
Seu usuário tem as permissões do IAM necessárias para criar os recursos do Secrets Manager e do Amazon ECS.
Etapa 1: Criar um segredo do Secrets Manager
É possível usar o console do Secrets Manager para criar um segredo para seus dados sigilosos. Neste tutorial, vamos criar um segredo básico para armazenar um nome de usuário e uma senha para consulta posterior em um contêiner. Para obter mais informações, consulte Criar um AWS Secrets Manager segredo no Guia do usuário AWS Secrets Manager.
Os pares de chave/valor a serem armazenados nesse segredo constituem o valor da variável de ambiente no contêiner no final do tutorial.
Salve o Secret ARN (ARN do segredo) para ser referenciado na política do IAM de execução de tarefa e a definição de tarefa em etapas posteriores.
Etapa 2: adicionar as permissões de segredos ao perfil de execução da tarefa
Para que o Amazon ECS recupere os dados sigilosos do seu segredo do Secrets Manager, é necessário ter as permissões de segredo para o perfil de execução da tarefa. Para obter mais informações, consulte Permissões do Secrets Manager ou do Systems Manager.
Etapa 3: criar uma definição de tarefa
Você pode usar o console do Amazon ECS para criar uma definição de tarefa que faça referência a um segredo do Secrets Manager.
Para criar uma definição de tarefa que especifica um segredo
Use o console do IAM para atualizar a função de execução de tarefa com as permissões necessárias.
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, escolha Task definitions (Definições de tarefa).
-
Escolha Create new task definition (Criar nova definição de tarefa), Create new task definition with JSON (Criar nova definição de tarefa com JSON).
-
Na caixa do editor JSON, e insira o texto JSON de definição de tarefa a seguir, garantindo que você especifique o ARN completo do segredo do Secrets Manager criado na etapa 1 e o perfil de execução da tarefa atualizado na etapa 2. Escolha Salvar.
-
{ "executionRoleArn": "
arn:aws:iam::
", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "aws_account_id
:role/ecsTaskExecutionRolearn:aws:secretsmanager:
", "name": "username_value" } ], "memory": 300, "image": "public.ecr.aws/docker/library/httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }region
:aws_account_id
:secret:username_value -
Escolha Criar.
Etapa 4: criar um cluster
É possível usar o console do Amazon ECS para criar um cluster que contém uma instância de contêiner na qual a tarefa será executada. Se você tiver um cluster existente com pelo menos uma instância de contêiner registrada nele com os recursos disponíveis para executar uma instância da definição de tarefa criada para este tutorial, será possível pular para a próxima etapa.
Para este tutorial, vamos criar um cluster com uma instância de contêiner t2.micro
usando a AMI do Amazon Linux 2 otimizada para o Amazon ECS.
Para obter informações sobre como criar um cluster para o tipo de inicialização do EC2, consulte Criar um cluster do Amazon ECS para o tipo de inicialização do Amazon EC2.
Etapa 5: executar uma tarefa
É possível usar o console do Amazon ECS para executar uma tarefa usando a definição de tarefa que você criou. Neste tutorial, executaremos uma tarefa usando o tipo de inicialização do EC2, usando o cluster que criamos na etapa anterior.
Para obter informações sobre como executar uma tarefa, consulte Execução de uma aplicação como uma tarefa do Amazon ECS.
Etapa 6: verificar
É possível verificar se todas as etapas foram concluídas com êxito e a variável de ambiente foi criada corretamente em seu contêiner usando as etapas a seguir.
Para verificar se a variável de ambiente foi criada
-
Encontre o endereço IP público ou DNS para sua instância de contêiner.
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, escolha Clusters e selecione o cluster que você criou.
-
Escolha Infraestrutura e, em seguida, escolha a instância de contêiner.
-
Registre o IP público ou o DNS público para sua instância.
-
Se você estiver usando um computador Linux ou macOS, conecte-se à sua instância com o seguinte comando, substituindo o caminho para sua chave privada e o endereço público para sua instância:
$
ssh -i/path/to/my-key-pair
.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
Para obter mais informações sobre como usar um computador com Windows, consulte Conectar à instância do Linux usando PuTTY no Guia do usuário do Amazon EC2.
Importante
Para obter mais informações sobre problemas ao se conectar à instância, consulte Solução de problemas para conectar-se à sua instância no Manual do usuário do Amazon EC2.
-
Liste os contêineres em execução na instância. Anote o ID do contêiner
ecs-secrets-tutorial
.docker ps
-
Conecte-se ao contêiner
ecs-secrets-tutorial
usando o ID do contêiner da saída da etapa anterior.docker exec -it
container_ID
/bin/bash -
Use o comando
echo
para imprimir o valor da variável de ambiente.echo $username_value
Se o tutorial foi bem-sucedido, você deverá ver a saída a seguir.
password_value
nota
Como alternativa, você pode listar todas as variáveis de ambiente em seu contêiner usando o comando
env
(ouprintenv
).
Etapa 7: limpar
Ao concluir este tutorial, você deve limpar os recursos associados para evitar cobranças por recursos não utilizados.
Limpeza dos recursos
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, escolha Clusters.
-
Na página Clusters, escolha o cluster.
-
Escolha Delete Cluster.
-
Na caixa de confirmação, insira excluir
nome do cluster
e, em seguida, escolha Excluir. Abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação, escolha Perfis.
-
Procure por
ecsTaskExecutionRole
na lista de funções e selecione-a. -
Escolha Permissões e escolha o X ao lado de ECSSecretsTutorial. Escolha Remover.
-
Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/
. -
Selecione o segredo username_value que você criou e escolha Actions (Ações), Delete secret (Excluir segredo).