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. É possível ter várias funções de execução de tarefas para diferentes finalidades e serviços associados à sua conta. Para obter as permissões do IAM que sua aplicação precisa para ser executada, consulte Perfil de tarefas do Amazon ECS.

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

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. Talvez seja necessário adicionar políticas em linha ao seu perfil de execução de tarefas para os casos de uso especiais 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. É possível usar a pesquisa no console do IAM para buscar ecsTaskExecutionRole e ver se a conta já tem o perfil de execução de tarefas. Para obter mais informações, consulte Pesquisa no console do IAM no Guia do usuário do IAM.

Criação do perfil de execução de tarefas (ecsTaskExecutionRole) do Amazon ECS

Se sua conta ainda não tiver um perfil de execução de tarefas, siga as etapas a seguir para criá-lo.

AWS Management Console
Para criar um perfil de serviço do Elastic Container Service (console do IAM)
  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console do IAM, escolha Funções e, em seguida, Criar função.

  3. Em Tipo de Entidade Confiável, escolha AWS service (Serviço da AWS).

  4. Em Serviço ou caso de uso, escolha Elastic Container Service e selecione o caso de uso da Tarefa do Elastic Container Service.

  5. Escolha Próximo.

  6. Na seção Adicionar permissões, pesquise AmazonECSTaskExecutionRolePolicy e selecione a política.

  7. Escolha Próximo.

  8. Em Nome do perfil, insira ecsTaskExecutionRole.

  9. Reveja a função e escolha Criar função.

AWS CLI

Substitua cada entrada do usuário por suas próprias informações.

  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.

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

Permissões do IAM obrigatórias para o Amazon ECS 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 fornecer acesso aos segredos criados por você, adicione 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 nome do recurso da Amazon (ARN) da chave personalizada deve ser adicionado como um recurso.

Veja a seguir um exemplo de política em linha que adiciona 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 ter mais informações, consulte Transferência de dados confidenciais para um contêiner do Amazon ECS.

Uso do Secrets Manager

Para fornecer acesso aos segredos do Secrets Manager criados por você, adicione manualmente as permissões a seguir ao perfil de execução da tarefa. Para obter informações sobre como gerenciar permissões, consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário do IAM.

  • secretsmanager:GetSecretValue: obrigatório se você estiver fazendo referência a um segredo do Secrets Manager. Adiciona a permissão para recuperar o segredo do Secrets Manager.

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" ] } ] }

Uso do Systems Manager

Importante

Para tarefas que usam o tipo de inicialização do EC2, você deve usar a variável de configuração do agente do ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true para usar esse recurso. É possível adicioná-lo ao arquivo ./etc/ecs/ecs.config durante a criação da instância de contêiner ou adicioná-lo a uma instância existente e reiniciar o agente do ECS. Para ter mais informações, consulte Configuração do agente de contêiner do Amazon ECS.

Para dar acesso aos parâmetros do Systems Manager Parameter Store que você cria, adicione manualmente as permissões a seguir como uma política ao perfil de execução da tarefa. Para obter informações sobre como gerenciar permissões, consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário 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. Adiciona a permissão para recuperar os parâmetros do Systems Manager.

  • secretsmanager:GetSecretValue: obrigatório se você estiver fazendo referência direta a um segredo do Secrets Manager 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. Adiciona a permissão para recuperar o segredo do Secrets Manager.

  • kms:Decrypt: obrigatório somente se o segredo usar uma chave gerenciada pelo cliente e não a chave padrão. O ARN da sua chave personalizada deve ser adicionado como recurso. Adiciona a permissão para descriptografar a chave gerenciada pelo cliente.

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

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

Permissões do IAM opcionais do Amazon ECS para tarefas do Fargate que extraem imagens do Amazon ECR por 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" } } } ] }

Permissões obrigatórias para o armazenamento de arquivos do Amazon S3

Quando você especifica um arquivo de configuração que está hospedado no Amazon S3, o perfil do IAM de execução de tarefa deve incluir a permissão s3:GetObject para o arquivo de configuração e a permissão s3:GetBucketLocation no bucket do Amazon S3 em que o arquivo está. Para obter mais informações, consulte Especificação de permissões em uma política no Guia do usuário do Amazon Simple Storage Service.

O exemplo de política do IAM a seguir adiciona as permissões necessárias para recuperar um arquivo do Amazon S3. Especifique o nome do bucket do Amazon S3 e o nome do arquivo de configuração.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }