Autenticação de registro privado para tarefas - Serviço Amazon Elastic Container

Autenticação de registro privado para tarefas

A autenticação de registro privado para tarefas usando o AWS Secrets Manager permite armazenar suas credenciais de forma segura e, então, referenciá-las em sua definição de tarefa. Isso fornece uma maneira de fazer referência a imagens de contêiner que existem em registros privados fora da AWS que exijam autenticação em suas definições de tarefa. Há suporte para esse recurso em tarefas hospedadas no Fargate, instâncias do Amazon EC2 e instâncias externas usando o Amazon ECS Anywhere.

Importante

Se a definição de tarefa faz referência a uma imagem armazenada no Amazon ECR, este tópico não se aplica. Para obter mais informações, consulte Usar imagens do Amazon ECR com o Amazon ECS no Guia do usuário do Amazon Elastic Container Registry.

Para tarefas hospedadas em instâncias do Amazon EC2, esse recurso exige a versão 1.19.0 ou posterior do agente de contêiner; no entanto, recomendamos usar a versão mais recente do agente 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 tarefas hospedadas no Fargate, esse recurso requer a versão da plataforma 1.2.0 ou posterior. Para obter mais informações, consulte Versões da plataforma AWS Fargate.

Em sua definição do contêiner, especifique o objeto repositoryCredentials com os detalhes do segredo que você criou. O segredo que você referencia não precisa ser da mesma região ou conta da tarefa que o está usando.

nota

Quando você usar a API do Amazon ECS, a AWS CLI ou a AWS SDK, se o segredo existir na mesma região da tarefa que estiver sendo inicializada, você poderá usar o ARN completo ou o nome do segredo. Se o segredo existir em outra conta, o ARN completo do segredo deve ser especificado. Ao usar o AWS Management Console, o ARN completo do segredo deve ser sempre especificado.

Veja a seguir um trecho de uma definição de tarefa que mostra os parâmetros necessários:

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
nota

Outro método para habilitar a autenticação de registro privado usa variáveis de ambiente do agente de contêiner do Amazon ECS para autenticar registros privados. Só há suporte para esse método para tarefas hospedadas em instâncias do Amazon EC2. Para mais informações, consulte Autenticação de registro privado para instâncias de contêiner.

Permissões do IAM necessárias para a autenticação de registro privado

É necessária a função de execução da tarefa do Amazon ECS para usar esse recurso. Isso permite que o agente de contêiner obtenha a imagem do contêiner. Para mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.

Para fornecer acesso aos segredos do criados por você, adicione manualmente as permissões a seguir como uma política em linha à função de execução da tarefa. Para obter mais informações, consulte Adicionar e remover políticas do IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt: exigido somente se a chave usar uma chave do KMS personalizada e não a chave padrão. O ARN da chave personalizada deve ser adicionado como um recurso.

Veja abaixo um exemplo de política em linha adicionando as permissões.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Habilitar a autenticação de registro privado

Para criar um segredo básico

Use o AWS Secrets Manager para criar um segredo para suas credenciais de registro privado.

  1. Abra o console do AWS Secrets Manager emhttps://console.aws.amazon.com/secretsmanager/.

  2. Selecione Store a new secret (Armazenar um novo segredo).

  3. Em Select secret type (Selecionar tipo de segredo), selecione Other type of secrets (Outro tipo de segredos).

  4. Selecione Plaintext (Texto simples) e insira suas credenciais de registro privado usando o seguinte formato:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. Escolha Next (Próximo).

  6. Em Secret name (Nome de segredo), digite um nome e caminho opcionais, como production/MyAwesomeAppSecret ou development/TestSecret e escolha Next (Avançar). Se preferir, adicione uma descrição para ajudá-lo a lembrar a finalidade desse segredo mais tarde.

    O nome do segredo deve ter somente letras ASCII, números ou qualquer um dos seguintes caracteres: /_+=.@-

  7. (Opcional) Nesse momento, você poderá configurar a rotação para o segredo. Para esse procedimento, deixe Disable automatic rotation (Desabilitar rotação automática) e escolha Next (Avançar).

    Para obter informações sobre como configurar a rotação em segredos novos ou existentes, consulte Alternar os segredos do AWS Secrets Manager.

  8. Reveja suas configurações e, em seguida, escolha Store secret (Armazenar segredo) para salvar tudo o que você inseriu como novo segredo no Secrets Manager.

Para criar uma definição de tarefa que usa a autenticação de registro privado

  1. Abra o console do Amazon ECS em https://console.aws.amazon.com/ecs/.

  2. No painel de navegação, selecione Task Definitions (Definições de tarefas).

  3. Na página task definitions (definições de tarefas), escolha Create new task definition (Criar nova definição de tarefa).

  4. Na página Select launch type compatibility (Selecionar compatibilidade do tipo de inicialização), escolha o tipo de inicialização das tarefas e Next step (Próxima tarefa).

    nota

    Esta etapa aplica-se apenas a regiões que atualmente oferecem suporte ao Amazon ECS usando o AWS Fargate. Para mais informações, consulte Amazon ECS no AWS Fargate.

  5. Em Task Definition Name (Nome de definição de tarefa), digite um nome para sua definição de tarefa. São permitidos até 255 letras (caixa alta e baixa), números, hifens e sublinhados.

  6. Em Task execution role (Função de execução da tarefa), selecione a função de execução da tarefa existente ou selecione Create new role (Criar outra função) para que ela seja criada para você. Essa função autoriza o Amazon ECS a extrair imagens privadas da sua tarefa. Para mais informações, consulte Permissões do IAM necessárias para a autenticação de registro privado.

    Importante

    Se o campo Task execution role (Função de execução de tarefas) não aparecer, escolha Configure via JSON (Configurar via JSON) e adicione manualmente o campo executionRoleArn para especificar a função de execução da tarefa. Veja a seguir a sintaxe:

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  7. Para cada contêiner a ser criado em sua definição de tarefa, conclua as seguintes etapas:

    1. Na seção Container Definitions (Definições de contêiner), selecione Add container (Adicionar contêiner).

    2. Em Container name (nome do contêiner), digite um nome para o contêiner. São permitidos até 255 letras (caixa alta e baixa), números, hifens e sublinhados.

    3. Em Image (Imagem), digite o nome ou o caminho da imagem privada. São permitidos até 255 letras (caixa alta e baixa), números, hifens e sublinhados.

    4. Selecione a opção Private repository authentication (Autenticação do repositório privado).

    5. Em Secrets manager ARN (ARN do Secrets Manager), insira o nome de recurso da Amazon (ARN) do segredo que você criou anteriormente. O valor de deve ter entre 20 e 2048 caracteres.

    6. Preencha os demais campos obrigatórios e qualquer campo opcional a ser usado em suas definições de contêiner. Mais parâmetros de definição de contêiner estão disponíveis no menu Advanced container configuration (Configuração avançada de contêineres). Para mais informações, consulte Parâmetros de definição de tarefa.

    7. Escolha Add (Adicionar).

  8. Quando seus contêineres forem adicionados, selecione Create (Criar).