Transmissão de parâmetros do Systems Manager por meio de variáveis de ambiente do Amazon ECS
O Amazon ECS permite que você introduza dados confidenciais em contêineres, ao armazená-los nos parâmetros do AWS Systems Manager Parameter Store e, em seguida, referenciá-los na definição do contêiner.
Considere as informações apresentadas a seguir ao usar uma variável de ambiente para introduzir um segredo do Systems Manager em um contêiner.
-
Os dados sigilosos são injetados no contêiner inicialmente quando o contêiner é iniciado. Se o segredo for posteriormente atualizado ou modificado, o contêiner não receberá o valor atualizado automaticamente. Você deve executar uma nova tarefa ou se a tarefa for parte de um serviço, será possível atualizar o serviço e usar a opção Force new deployment (Forçar nova implantação) para forçar o serviço a iniciar uma nova tarefa.
-
Para tarefas do Amazon ECS no AWS Fargate, o seguinte deve ser considerado:
-
Para injetar o conteúdo completo de um segredo como uma variável de ambiente ou em uma configuração de log, você deve usar a versão
1.3.0
ou posterior da plataforma. Para mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS. -
Para injetar uma chave JSON ou uma versão específica de um segredo como uma variável de ambiente ou em uma configuração de log, você deve usar a versão
1.4.0
ou posterior (Linux) ou1.0.0
(windows) da plataforma. Para mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS.
-
-
Para tarefas do Amazon ECS no EC2, é necessário considerar o seguinte:
-
Para injetar um segredo usando uma chave JSON ou uma versão específica de um segredo, sua instância de contêiner deve ter a versão
1.37.0
ou posterior do agente de contêiner. Recomendamos usar a versão mais recente do atendente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.Para injetar o conteúdo completo de um segredo como uma variável de ambiente ou injetar um segredo em uma configuração de log, sua instância de contêiner deve ter a versão
1.22.0
ou posterior do agente de contêiner.
-
-
Use os endpoints da VPC de interface para aprimorar os controles de segurança. Você deve criar os endpoints da VPC de interface para o Systems Manager. Para obter mais informações sobre o endpoint da VPC, consulte Melhorar a segurança das instâncias do EC2 usando endpoints da VPC para o Systems Manager no Guia do usuário do AWS Systems Manager.
-
A definição da tarefa deve usar um perfil de execução de tarefa com as permissões adicionais para o Systems Manager Parameter Store. Para obter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.
-
Para tarefas do Windows configuradas para usar o driver de log
awslogs
, também é necessário definir a variável de ambienteECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE
na instância de contêiner. Use a seguinte sintaxe:<powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>
Criação do parâmetro do Systems Manager
É possível usar o console do Systems Manager para criar um parâmetro do Systems Manager Parameter Store para seus dados confidenciais. Para obter mais informações, consulte Criar um parâmetro do Systems Manager (console) ou Criar um parâmetro do Systems Manager (AWS CLI) no Guia do usuário do AWS Systems Manager.
Adicionar a variável de ambiente à definição de contêiner
Na definição do contêiner na definição da tarefa, especifique secrets
com o nome da variável de ambiente a ser definida no contêiner e o ARN completo do parâmetro Systems Manager Parameter Store contendo os dados sigilosos a serem apresentados. Para obter mais informações, consulte secrets.
Veja a seguir um trecho de uma definição de tarefa mostrando o formato ao fazer referência a um parâmetro do Systems Manager Parameter Store. Se o parâmetro do Systems Manager Parameter Store existir na mesma região da tarefa que está sendo iniciada, será possível usar o ARN completo ou o nome do parâmetro. Se o parâmetro existir em uma região diferente, o ARN completo deverá ser especificado.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:ssm:region
:aws_account_id
:parameter/parameter_name
" }] }] }
Para obter informações sobre como criar uma definição de tarefa com o segredo especificado em uma variável de ambiente, consulte Criar uma definição de tarefa do Amazon ECS usando o console.
Atualizar sua aplicação para recuperar programaticamente segredos do Systems Manager Parameter Store
Para recuperar os dados confidenciais armazenados no parâmetro do Systems Manager Parameter Store, consulte Exemplos de código para Systems Manager usando AWS SDKs na Biblioteca de códigos de exemplos de códigos do AWS SDK.