Função do IAM de instância de contêiner do Amazon ECS - Amazon Elastic Container Service

Função do IAM de instância de contêiner do Amazon ECS

As instâncias de contêiner do Amazon ECS, incluindo instâncias do Amazon EC2 e externas, executam o agente de contêiner do Amazon ECS e exigem uma função do IAM para o serviço saber que o agente pertence a você. Para poder iniciar instâncias de contêiner e registrá-las em um cluster, você deve criar uma função do IAM para as instâncias de contêiner usarem. A função é criada na conta que você usa para fazer login no console ou executar os comandos da AWS CLI

Importante

Se você estiver registrando instâncias externas em seu cluster, a função do IAM usada também exigirá permissões do Systems Manager. Para ter mais informações, consulte Perfil do IAM para o Amazon ECS Anywhere.

O Amazon ECS fornece a política AmazonEC2ContainerServiceforEC2Role gerenciada do IAM que contém as permissões necessárias para usar o conjunto completo de recursos do Amazon ECS. Essa política gerenciada pode ser anexada a uma função do IAM e associada às instâncias de contêiner. Como alternativa, você pode usar a política gerenciada como guia quando criar uma política personalizada para ser usada. A função de instância de contêiner fornece permissões necessárias para que o agente de contêiner do Amazon ECS e o daemon do Docker chamem APIs da AWS em seu nome. Para obter mais informações sobre a política gerenciada, consulte AmazonEC2ContainerServiceforEC2Role.

O Amazon ECS oferece suporte à inicialização de instâncias de contêiner com maior densidade de ENI usando tipos de instâncias do Amazon EC2 compatíveis. Ao usar esse recurso, recomendamos criar dois perfis da instância de contêiner. Habilite a configuração da conta awsvpcTrunking em um perfil e use esse perfil em tarefas que exigem truncamento de ENI. Para obter mais informações sobre a configuração da conta awsvpcTrunking, consulte Acesso aos recursos do Amazon ECS com as configurações de conta.

Criar o perfil da instância de contêiner

Importante

Se você estiver registrando instâncias externas em seu cluster, consulte Perfil do IAM para o Amazon ECS Anywhere.

É possível criar manualmente o perfil e anexar a política do IAM gerenciada para instâncias de contêiner para permitir que o Amazon ECS adicione permissões para recursos e aprimoramentos futuros à medida que sejam introduzidos. Use o procedimento a seguir para anexar a política do IAM gerenciada, se necessário.

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.

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

  5. Escolha Próximo.

  6. Na seção Políticas de permissões, verifique se a política AmazonEC2ContainerServiceforEC2Role está selecionada.

    Importante

    A política gerenciada AmazonEC2ContainerServiceforEC2Role deve ser anexada à função do IAM de instância de contêiner. Caso contrário, você receberá um erro ao usar o AWS Management Console para criar clusters.

  7. Escolha Próximo.

  8. Em Nome do perfil, insira ecsInstanceRole

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

AWS CLI

Substitua cada entrada do usuário por seus próprios valores.

  1. Crie um arquivo chamado instance-role-trust-policy.json com o conteúdo a seguir.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Use o comando a seguir para criar o perfil do IAM da instância utilizando o documento da política de confiança.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. Crie um perfil de instância chamado ecsInstanceRole-profile usando o comando create-instance-profile.

    aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile

    Exemplo de resposta

    { "InstanceProfile": { "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE", "Roles": [], "CreateDate": "2022-04-12T23:53:34.093Z", "InstanceProfileName": "ecsInstanceRole-profile", "Path": "/", "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile" } }
  4. Adicione a função ecsInstanceRole ao perfil de instância ecsInstanceRole-profile.

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. Anexe a política gerenciada AmazonEC2ContainerServiceRoleForEC2Role ao perfil usando o comando a seguir.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \ --role-name ecsInstanceRole

Depois de criar o perfil, adicione a ele outras permissões para os atributos a seguir.

Atributo

Permissões adicionais

O Amazon ECR tem a imagem do container

Permissões do Amazon ECR

Fazer com que o CloudWatch Logs monitore instâncias de contêiner

Monitorar permissões de instâncias de contêiner

Hospedar arquivos de configuração no bucket do Amazon S3

Acesso somente leitura ao Amazon S3

Permissões do Amazon ECR

O perfil de instância de contêiner do Amazon ECS que você usa com as instâncias de contêiner deve ter as seguintes permissões de política do IAM para o Amazon ECR.

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

Se você usa a política gerenciada AmazonEC2ContainerServiceforEC2Role para suas instâncias de contêiner, sua função tem as permissões apropriadas. Para verificar se a função oferece suporte ao Amazon ECR, consulte Função do IAM da instância de contêiner do Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.

Acesso somente leitura ao Amazon S3

Armazenar informações de configuração em um bucket privado no Amazon S3 e conceder acesso somente leitura à função do IAM de instância de contêiner é uma maneira segura e conveniente de permitir a configuração da instância de contêiner no momento da inicialização. É possível armazenar uma cópia do arquivo ecs.config em um bucket privado, usar os dados de usuário do Amazon EC2 para instalar a AWS CLI e copiar as informações de configuração em /etc/ecs/ecs.config quando a instância for inicializada.

Para obter mais informações sobre como criar um arquivo ecs.config, armazená-lo no Amazon S3 e inicializar instâncias com essa configuração, consulte Armazenamento da configuração da instância de contêiner do Amazon ECS no Amazon S3.

É possível usar o comando da AWS CLI a seguir para permitir o acesso somente leitura do Amazon S3 ao perfil da instância de contêiner. Substitua ecsInstanceRole pelo nome do perfil criado.

aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws::iam::aws:policy/AmazonS3ReadOnlyAccess

Também é possível usar o console do IAM para adicionar o acesso somente leitura do Amazon S3 (AmazonS3ReadOnlyAccess) ao perfil. Para obter mais informações, consulte Modificar a política de permissões de um perfil (console) no Guia do usuário do AWS Identity and Access Management.

Monitorar permissões de instâncias de contêiner

Para que as instâncias de contêiner possam enviar dados de log ao CloudWatch Logs, você deve criar uma política do IAM para permitir que as instâncias de contêiner usem as APIs do CloudWatch Logs e anexar esta política a ecsInstanceRole.

AWS Management Console
Para usar o editor de políticas JSON para criar uma política
  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 à esquerda, escolha Policies (Políticas).

    Se essa for a primeira vez que você escolhe Políticas, a página Bem-vindo às políticas gerenciadas será exibida. Escolha Começar.

  3. Na parte superior da página, escolha Criar política.

  4. Na seção Editor de políticas, escolha a opção JSON.

  5. Insira o seguinte documento de política JSON:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  6. Escolha Próximo.

    nota

    É possível alternar entre as opções de editor Visual e JSON a qualquer momento. Porém, se você fizer alterações ou escolher Próximo no editor Visual, o IAM poderá reestruturar a política a fim de otimizá-la para o editor visual. Para obter mais informações, consulte Restruturação de política no Guia do usuário do IAM.

  7. Na página Revisar e criar, insira um Nome de política e uma Descrição (opcional) para a política que você está criando. Revise Permissões definidas nessa política para ver as permissões que são concedidas pela política.

  8. Escolha Criar política para salvar sua nova política.

Após criar a política, anexe-a ao perfil da instância de contêiner. Para obter informações sobre como anexar a política ao perfil, consulte Modificar a política de permissões de um perfil (console) no Guia do usuário do AWS Identity and Access Management.

AWS CLI
  1. Crie um arquivo denominado instance-cw-logs.json com o seguinte conteúdo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. Use o comando da a seguir para criar a política do IAM usando o arquivo de documento da política JSON.

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. Recupere o ARN da política do IAM que você criou usando o comando a seguir. Substitua cwlogspolicy pelo nome da política criada.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy`].Arn'
  4. Use o comando a seguir para anexar a política ao perfil do IAM da instância de contêiner usando o ARN da política.

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy