Função do IAM de execução de tarefas do Amazon ECS - Amazon Elastic Container Service

Função do IAM de execução de tarefas do Amazon ECS

A função de execução de tarefas concede ao contêiner do Amazon ECS e aos agentes do Fargate permissão para fazer chamadas da API da AWS em seu nome. A função do IAM para execução da tarefa é necessária dependendo dos requisitos da sua tarefa. Você pode ter várias funções de execução de tarefas para diferentes finalidades e serviços associados à sua conta.

Veja a seguir os casos de uso comuns para uma função do IAM de execução de tarefas:

  • Sua tarefa está hospedada no AWS Fargate ou em uma instância externa e...

    • está extraindo uma imagem de contêiner de um repositório privado do Amazon ECR.

    • envia logs de contêiner ao CloudWatch Logs usando o driver de log awslogs. Para obter mais informações, consulte . Usar o driver de log awslogs.

  • Suas tarefas são hospedadas no AWS Fargate ou em instâncias do Amazon EC2 e...

nota

A função de execução de tarefas é compatível com a versão 1.16.0 e posterior do agente de contêiner do Amazon ECS.

O Amazon ECS fornece a política gerenciada denominada AmazonECSTaskExecutionRolePolicy, que contém as permissões que os casos de uso comuns descritos acima exigem. Pode ser necessário adicionar políticas em linha à sua função de execução de tarefas para os casos de uso especiais que são descritos abaixo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

A função de execução de tarefas do Amazon ECS pode ser criada para você no console do Amazon ECS. Porém, você deve anexar manualmente a política gerenciada do IAM para as tarefas permitirem que o Amazon ECS adicione permissões para recursos e aprimoramentos futuros à medida que forem introduzidos. Você pode usar o procedimento a seguir para conferir e saber se a conta já tem a função de execução de tarefas do Amazon ECS e anexar a política gerenciada do IAM, se necessário.

Para verificar a ecsTaskExecutionRole no console do IAM;

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

  2. No painel de navegação, selecione Roles.

  3. Procure na lista de funções ecsTaskExecutionRole. Se a função não existir, consulte Criar a função do IAM de execução de tarefas. Se a função existir, selecione-a para visualizar as políticas anexadas.

  4. Na guia Permissions (Permissões), verifique se a política gerenciada AmazonECSTaskExecutionRolePolicy está anexada à função. Se a política estiver anexada, a função de execução de tarefas do Amazon ECS estará configurada corretamente. Caso contrário, siga as etapas secundárias abaixo para anexar a política.

    1. Escolha Attach policies (Anexar políticas).

    2. Para restringir as políticas disponíveis a serem anexadas, em Filter (Filtro), digite AmazonECSTaskExecutionRolePolicy.

    3. Selecione a caixa à esquerda da política AmazonECSTaskExecutionRolePolicy e escolha Attach policy.

  5. Escolha Trust relationships (Relacionamentos de confiança), Edit trust relationship (Editar relacionamento de confiança).

  6. Verifique se o relacionamento de confiança contém a seguinte política. Se o relacionamento de confiança corresponder à política abaixo, escolha Cancel. Se o relacionamento de confiança não corresponder, copie a política para a janela Policy Document (Documento da política) e escolha Update Trust Policy (Atualizar política confiável).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Criar a função do IAM de execução de tarefas

Se a sua conta ainda não tiver uma função de execução de tarefa, use as etapas a seguir para criar a função.

Para criar uma função do IAM (AWS Management Console) de execução de tarefas

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

  2. No painel de navegação, escolha Roles e depois Create Role.

  3. Na seção Selecionar tipo de entidade confiável, escolha a guia AWS Service (Serviço da AWS), Elastic Container Service.

  4. Em Select your use case (Selecionar seu caso de uso), escolha Elastic Container Service Task (Tarefa de serviço do contêiner elástico) e, em seguida, Next: Permissions (Próxima: Permissões).

  5. Na seção Anexar política de permissões, pesquise AmazonECSTaskExecutionRolePolicy, selecione a política e, em seguida, escolha Next: Tags (Próximo: Etiquetas).

  6. Em Add tags (optional) Adicionar etiquetas (opcional), especifique todas as etiquetas personalizadas a serem associadas à política e, em seguida, escolha Next: Review (Próximo: Analisar).

  7. Em Role name (Nome da função), digite ecsTaskExecutionRole e escolha Create role (Criar função).

Para criar uma função do IAM (AWS CLI) de execução de tarefas

  1. Crie um arquivo denominado ecs-tasks-trust-policy.json que contenha a política de confiança a ser usada para a função do IAM. O arquivo deve conter o seguinte:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Crie uma função do IAM denominada ecsTaskExecutionRole usando a política de confiança criada na etapa anterior.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Anexe a política AmazonECSTaskExecutionRolePolicy gerenciada pela AWS à funçãoecsTaskExecutionRole. Essa política oferece

    aws iam attach-role-policy \ --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

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

A função de execução de tarefas do Amazon ECS é necessária para usar o recurso de autenticação de registro privado. Isso permite que o agente de contêiner obtenha a imagem do contêiner. Para obter mais informações, consulte . Autenticação de registro privado para tarefas.

Para dar acesso aos segredos 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" ] } ] }

Permissões obrigatórias do IAM para segredos do Amazon ECS

Para usar o recurso de segredos do Amazon ECS, você deve ter a função de execução de tarefas do Amazon ECS e fazer referência a ela na definição de tarefa. Isso permite que o agente de contêiner extraia os recursos necessários do AWS Systems Manager ou do Secrets Manager. Para obter mais informações, consulte . Especificar dados sigilosos.

Para dar acesso aos parâmetros do Parameter Store do AWS Systems Manager 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.

  • ssm:GetParameters: obrigatório se você estiver fazendo referência a um parâmetro do Systems Manager Parameter Store em uma definição de tarefa.

  • secretsmanager:GetSecretValue: obrigatório se você estiver fazendo referência a um segredo do Secrets Manager diretamente ou se o parâmetro do Systems Manager Parameter Store estiver fazendo referência a um segredo do Secrets Manager em uma definição de tarefa.

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

O exemplo de política em linha a seguir adiciona as permissões necessárias:

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

Permissões opcionais do IAM para tarefas do Fargate que extraem imagens do Amazon ECR em endpoints de interface

Ao iniciar tarefas que usam o tipo de inicialização do Fargate que extraem imagens do Amazon ECR quando o Amazon ECR está configurado para usar um endpoint da VPC de interface, você pode restringir o acesso das tarefas a uma VPC ou a um endpoint da VPC específico. Faça isso criando uma função de execução de tarefas que use chaves de condição do IAM.

Use as seguintes chaves de condição globais do IAM para restringir o acesso a uma VPC ou a um endpoint da VPC específico. Para obter mais informações, consulte Chaves de contexto de condição globais da AWS.

  • aws:SourceVpc: restringe o acesso a uma VPC específica.

  • aws:SourceVpce: restringe o acesso a um endpoint da VPC específico.

A política da função de execução de tarefas a seguir fornece um exemplo para adicionar chaves de condição:

Importante

A ação de API ecr:GetAuthorizationToken não pode ter as chaves de condição aws:sourceVpc e aws:sourceVpce aplicadas a ela porque a chamada de API GetAuthorizationToken passa pela interface de rede elástica pertencente ao AWS Fargate em vez de pela interface de rede elástica da tarefa.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-xxxxxx", "aws:sourceVpc": "vpc-xxxxx" } } } ] }