As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando funções do IAM com tarefas do Amazon ECS
Recomendamos que você atribua a uma tarefa uma função do IAM. Sua função pode ser diferenciada da função da instância do Amazon EC2 na qual está sendo executada. A atribuição de um perfil a cada tarefa se alinha ao princípio do acesso de privilégio mínimo e permite um maior controle granular sobre ações e recursos.
Ao atribuir funções do IAM para uma tarefa, você deve usar a seguinte política de confiança para que cada uma de suas tarefas possa assumir uma função do IAM diferente daquela usada pela sua instância do EC2. Dessa forma, sua tarefa não herda a função da instância do EC2.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Quando você adiciona uma função de tarefa a uma definição de tarefa, o agente de contêiner do Amazon ECS cria automaticamente um token com um ID de credencial exclusivo (por exemplo,12345678-90ab-cdef-1234-567890abcdef
) para a tarefa. Esse token e as credenciais da função são então adicionados ao cache interno do agente. O agente preenche a variável de ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
no contêiner com o URI do ID da credencial (por exemplo,/v2/credentials/12345678-90ab-cdef-1234-567890abcdef
).

Você pode recuperar manualmente as credenciais da função temporária de dentro de um contêiner anexando a variável de ambiente ao endereço IP do agente de contêiner do Amazon ECS e executando o curl
comando na string resultante.
curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
A saída esperada é a seguinte:
{ "RoleArn": "arn:aws:iam::123456789012:role/SSMTaskRole-SSMFargateTaskIAMRole-DASWWSF2WGD6", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "Token": "IQoJb3JpZ2luX2VjEEM/Example==", "Expiration": "2021-01-16T00:51:53Z" }
As versões mais recentes dos AWS SDKs buscam automaticamente essas credenciais da variável de AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
ambiente ao fazer chamadas de API. AWS
A saída inclui um par de chaves de acesso que consiste em um ID de chave de acesso secreto e uma chave secreta que seu aplicativo usa para acessar AWS recursos. Também inclui um token AWS usado para verificar se as credenciais são válidas. Por padrão, as credenciais atribuídas às tarefas usando funções de tarefa são válidas por seis horas. Depois disso, eles são rotacionados automaticamente pelo agente de contêineres do Amazon ECS.
Função de execução de tarefas
A função de execução da tarefa é usada para conceder permissão ao agente de contêiner do Amazon ECS para chamar ações de AWS API específicas em seu nome. Por exemplo, quando você usaAWS Fargate, o Fargate precisa de uma função do IAM que permita extrair imagens do Amazon ECR e gravar registros em Logs. CloudWatch Uma função do IAM também é necessária quando uma tarefa faz referência a um segredo armazenadoAWS Secrets Manager, como um segredo de extração de imagem.
nota
Se você estiver obtendo imagens como um usuário autenticado, é menos provável que seja afetado pelas mudanças que ocorreram nos limites da taxa de extração do Docker Hub
Ao usar o Amazon ECR e o Amazon ECR Public, você pode evitar os limites impostos pelo Docker. Se você extrair imagens do Amazon ECR, isso também ajuda a reduzir os tempos de extração da rede e reduz as alterações na transferência de dados quando o tráfego sai da sua VPC.
Importante
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 do agente de contêiner do Amazon ECS ECS_ENGINE_AUTH_TYPE
ECS_ENGINE_AUTH_DATA
nem modificar o ecs.config
arquivo para tarefas hospedadas no Fargate. Para obter mais informações, consulte Autenticação de registro privado para tarefas.
Função de instância de contêiner do Amazon EC2
O agente de contêiner do Amazon ECS é um contêiner executado em cada instância do Amazon EC2 em um cluster do Amazon ECS. Ele é inicializado fora do Amazon ECS usando o init
comando que está disponível no sistema operacional. Consequentemente, não é possível conceder permissões por meio de uma função de tarefa. Em vez disso, as permissões devem ser atribuídas às instâncias do Amazon EC2 nas quais os agentes são executados. A lista de ações na AmazonEC2ContainerServiceforEC2Role
política de exemplo precisa ser concedida aoecsInstanceRole
. Se você não fizer isso, suas instâncias não poderão se juntar ao cluster.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:UpdateContainerInstancesState", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Nessa política, as ações ecr
e a logs
API permitem que os contêineres que estão sendo executados em suas instâncias extraiam imagens do Amazon ECR e gravem registros na Amazon CloudWatch. As ecs
ações permitem que o agente registre e cancele o registro de instâncias e se comunique com o plano de controle do Amazon ECS. Dessas, a ecs:CreateCluster
ação é opcional.
Funções vinculadas ao serviço
Você pode usar a função vinculada ao serviço do Amazon ECS para conceder ao serviço Amazon ECS permissão para chamar outras APIs de serviço em seu nome. O Amazon ECS precisa das permissões para criar e excluir interfaces de rede, registrar e cancelar o registro de alvos com um grupo-alvo. Ele também precisa das permissões necessárias para criar e excluir políticas de escalabilidade. Essas permissões são concedidas por meio da função vinculada ao serviço. Essa função é criada em seu nome na primeira vez que você usa o serviço.
nota
Se você excluir inadvertidamente a função vinculada ao serviço, poderá recriá-la. Para obter instruções, consulte Criar a função vinculada ao serviço.
Recomendações
Recomendamos que você faça o seguinte ao configurar suas funções e políticas do IAM de tarefas.
Bloqueie o acesso aos metadados do Amazon EC2
Ao executar suas tarefas em instâncias do Amazon EC2, recomendamos fortemente que você bloqueie o acesso aos metadados do Amazon EC2 para evitar que seus contêineres herdem a função atribuída a essas instâncias. Se seus aplicativos precisarem chamar uma ação de AWS API, use funções do IAM para tarefas.
Para evitar que tarefas executadas no modo bridge acessem os metadados do Amazon EC2, execute o comando a seguir ou atualize os dados do usuário da instância. Para obter mais instruções sobre como atualizar os dados do usuário de uma instância, consulte este artigo de AWS suporte
sudo yum install -y iptables-services; sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 192.0.2.0/32 --jump DROP
Para que essa alteração persista após uma reinicialização, execute o seguinte comando específico para sua Amazon Machine Image (AMI):
-
Amazon Linux 2
sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
-
Amazon Linux
sudo service iptables save
Para tarefas que usam o modo de awsvpc
rede, defina ECS_AWSVPC_BLOCK_IMDS
a variável de ambiente como true
no /etc/ecs/ecs.config
arquivo.
Você deve definir a ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST
variável como false
no ecs-agent config
arquivo para evitar que os contêineres em execução na host
rede acessem os metadados do Amazon EC2.
Use o modo awsvpc
de rede
Use o modo de awsvpc
rede para restringir o fluxo de tráfego entre tarefas diferentes ou entre suas tarefas e outros serviços executados em sua Amazon VPC. Isso adiciona uma camada adicional de segurança. O modo awsvpc
de rede fornece isolamento de rede em nível de tarefa para tarefas executadas no Amazon EC2. É o modo padrão ativadoAWS Fargate. É o único modo de rede que você pode usar para atribuir um grupo de segurança às tarefas.
Use o IAM Access Advisor para refinar funções
Recomendamos que você remova todas as ações que nunca foram usadas ou que não foram usadas por algum tempo. Isso evita que o acesso indesejado aconteça. Para fazer isso, analise os resultados produzidos pelo IAM Access Advisor e remova as ações que nunca foram usadas ou que não foram usadas recentemente. Você pode fazer isso seguindo as etapas a seguir.
Execute o comando a seguir para gerar um relatório mostrando as últimas informações de acesso para a política referenciada:
aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1
use o JobId
que estava na saída para executar o comando a seguir. Depois de fazer isso, você pode ver os resultados do relatório.
aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9
Para obter mais informações, consulte IAM Access Advisor.
Monitore AWS CloudTrail atividades suspeitas
Você pode monitorar AWS CloudTrail qualquer atividade suspeita. A maioria das chamadas de AWS API são registradas AWS CloudTrail como eventos. Eles são analisados pelo AWS CloudTrail Insights e você é alertado sobre qualquer comportamento suspeito associado às chamadas de write
API. Isso pode incluir um aumento no volume de chamadas. Esses alertas incluem informações como a hora em que a atividade incomum ocorreu e o principal ARN de identidade que contribuiu para as APIs.
Você pode identificar ações que são executadas por tarefas com uma função do IAM AWS CloudTrail examinando a userIdentity
propriedade do evento. No exemplo a seguir, as arn
inclusões do nome da função assumidas3-write-go-bucket-role
,, seguido pelo nome da tarefa,7e9894e088ad416eb5cab92afExample
.
"userIdentity": { "type": "AssumedRole", "principalId": "AROA36C6WWEJ2YEXAMPLE:7e9894e088ad416eb5cab92afExample", "arn": "arn:aws:sts::123456789012:assumed-role/s3-write-go-bucket-role/7e9894e088ad416eb5cab92afExample", ... }
nota
Quando tarefas que assumem uma função são executadas em instâncias de contêiner do Amazon EC2, uma solicitação é registrada pelo agente de contêiner do Amazon ECS no log de auditoria do agente que está localizado em um endereço no formato. /var/log/ecs/audit.log.YYYY-MM-DD-HH
Para obter mais informações, consulte Task IAM Roles Log e Logging Insights Events for Trails.