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.
nota
Essas permissões não são acessíveis pelos contêineres na tarefa. Para obter as permissões do IAM que sua aplicação precisa para ser executada, consulte Perfil do IAM para tarefas do Amazon ECS.
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:
-
extrai uma imagem de contêiner de um repositório privado do Amazon ECR.
-
extrai uma imagem de contêiner de um repositório privado do Amazon ECR em uma conta diferente daquela que executa a tarefa.
-
envia logs de contêiner ao CloudWatch Logs usando o driver de log
awslogs
. Para obter mais informações, consulte Envio de logs do Amazon ECS para o CloudWatch .
-
-
Suas tarefas são hospedadas no AWS Fargate ou em instâncias do Amazon EC2 e:
-
usa autenticação de registro privado. Para obter mais informações, consulte Permissões para autenticação no registro privado.
-
usa monitoramento de runtime.
-
a definição de tarefa faz referência a dados confidenciais usando segredos do Secrets Manager ou parâmetros do AWS Systems Manager Parameter Store. Para obter mais informações, consulte Permissões do Secrets Manager ou do Systems Manager.
-
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 necessárias para os casos de uso comuns descritos acima. Para ter mais informações, consulte AmazonECSTaskExecutionRolePolicy no AWS Managed Policy Reference Guide. Pode ser necessário adicionar políticas em linha ao perfil de execução de tarefa para casos de uso especiais
O console do Amazon ECS cria um perfil de execução de tarefa. É possível anexar manualmente a política gerenciada do IAM para tarefas de modo a possibilitar que o Amazon ECS adicione permissões para futuros recursos e aprimoramentos à medida que eles 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.
Se você extrair imagens como um usuário autenticado, haverá menos probabilidade sofrer impactos com as alterações que ocorreram no uso e limites do Docker Hub
Ao usar o Amazon ECR e o Amazon ECR Public, é possível evitar os limites impostos pelo Docker. Se você extrair imagens do Amazon ECR, isso também ajudará a reduzir os tempos de extração da rede e reduzirá as alterações na transferência de dados quando o tráfego sair da sua VPC.
Ao usar o Fargate, você deve se autenticar em um registro de imagem privado usando repositoryCredentials
. Não é possível definir as variáveis de ambiente ECS_ENGINE_AUTH_TYPE
ou ECS_ENGINE_AUTH_DATA
do agente de contêiner do Amazon ECS nem modificar o arquivo ecs.config
para tarefas hospedadas no Fargate. Para obter mais informações, consulte Autenticação de registro privado para tarefas.
Criar a função de execução de tarefa do
Se sua conta ainda não tiver um perfil de execução de tarefas, siga as etapas a seguir para criá-lo.
Depois de criar o perfil, adicione a ele outras permissões para os atributos a seguir.
Recurso | Permissões adicionais |
---|---|
Extrair imagens de contêiner de registros privados fora da AWS (como Docker Hub, Quay.io ou seu próprio registro privado) usando as credenciais do Secrets Manager |
|
Transmitir dados confidenciais com o Systems Manager ou o Secrets Manager | |
Fazer com que as tarefas do Fargate extraiam imagens do Amazon ECR pelos endpoints da interface | Tarefas do Fargate que extraem imagens do Amazon ECR pelos endpoints da interface |
Hospedar arquivos de configuração no bucket do Amazon S3 | |
Configurar o Container Insights para visualizar os eventos de ciclo de vida do Amazon ECS | |
Visualizar eventos do ciclo de vida do Amazon ECS no Container Insights |
Permissões para autenticação no registro privado
A autenticação de registro privado permite que suas tarefas do Amazon ECS extraiam imagens de contêiner de registros privados fora da AWS (como Docker Hub, Quay.io ou seu próprio registro privado) que exijam credenciais de autenticação. Esse recurso usa o Secrets Manager para armazenar com segurança suas credenciais de registro, que serão mencionadas na definição da tarefa usando o parâmetro repositoryCredentials
.
Para obter mais informações sobre como configurar a autenticação de registro privado, consulte Uso de imagens de contêiner que não são da AWS no Amazon ECS.
Para fornecer acesso aos segredos que contêm suas credenciais de registro privado, 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
: obrigatório para recuperar as credenciais do registro privado do Secrets Manager. -
kms:Decrypt
–-obrigatório somente se o segredo usar uma chave personalizada KMS 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 do Secrets Manager ou do Systems Manager
A permissão para o agente de contêiner extrair os recursos necessários do AWS Systems Manager ou do Secrets Manager. Para obter 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 obter 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
" ] } ] }
Tarefas do Fargate que extraem imagens do Amazon ECR pelos endpoints da 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. Você pode restringir a VPC à VPC que hospeda a tarefa e o endpoint. -
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.
{ "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 do Amazon ECR
As seguintes permissões serão necessárias quando você precisar extrair imagens de contêiner de repositórios privados do Amazon ECR. O perfil de execução da tarefa deve ter essas permissões para permitir que os agentes do Amazon ECS e do Fargate extraiam imagens de contêiner em seu nome. Para implementações básicas do ECS, essas permissões deverão ser adicionadas ao perfil de execução da tarefa em vez do perfil do IAM da tarefa.
A política gerenciada do perfil de execução de tarefas do Amazon ECS (AmazonECSTaskExecutionRolePolicy
) inclui as permissões necessárias para extrair imagens do Amazon ECR. Se você estiver usando a política gerenciada, não será necessário adicionar essas permissões separadamente.
Se você estiver criando uma política personalizada, inclua as seguintes permissões para permitir a extração de imagens do Amazon ECR:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
Observe que essas permissões são diferentes das permissões que podem ser exigidas o perfil do IAM da tarefa se o código da sua aplicação precisar interagir diretamente com as APIs do Amazon ECR. Para obter informações sobre permissões para o perfil do IAM para o Amazon ECR, consulte Permissões do Amazon ECR.
Permissões para o armazenamento de arquivos do Amazon S3
Quando você especifica um arquivo de configuração 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 Ações de políticas no Amazon S3 no Guia do usuário do Amazon Simple Storage Service.
O exemplo de política 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:::amzn-s3-demo-bucket
/folder_name
/config_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] }