Especificar dados confidenciais usando segredos do Secrets Manager no Amazon ECS - Amazon Elastic Container Service

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:

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.

  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. No painel de navegação, escolha Task definitions (Definições de tarefa).

  3. 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).

  4. 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.

  5. { "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "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": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value", "name": "username_value" } ], "memory": 300, "image": "public.ecr.aws/docker/library/httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  6. 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
  1. Encontre o endereço IP público ou DNS para sua instância de contêiner.

    1. Abra o console em https://console.aws.amazon.com/ecs/v2.

    2. No painel de navegação, escolha Clusters e selecione o cluster que você criou.

    3. Escolha Infraestrutura e, em seguida, escolha a instância de contêiner.

    4. Registre o IP público ou o DNS público para sua instância.

  2. 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.

  3. Liste os contêineres em execução na instância. Anote o ID do contêiner ecs-secrets-tutorial.

    docker ps
  4. 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
  5. 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 (ou printenv).

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
  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. No painel de navegação, escolha Clusters.

  3. Na página Clusters, escolha o cluster.

  4. Escolha Delete Cluster.

  5. Na caixa de confirmação, insira excluir nome do cluster e, em seguida, escolha Excluir.

  6. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  7. No painel de navegação, escolha Perfis.

  8. Procure por ecsTaskExecutionRole na lista de funções e selecione-a.

  9. Escolha Permissões e escolha o X ao lado de ECSSecretsTutorial. Escolha Remover.

  10. Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/.

  11. Selecione o segredo username_value que você criou e escolha Actions (Ações), Delete secret (Excluir segredo).