Rol de IAM de instancia de contenedor de Amazon ECS - Amazon Elastic Container Service

Rol de IAM de instancia de contenedor de Amazon ECS

Las instancias de contenedor de Amazon ECS, incluidas las instancias de Amazon EC2 y las externas, ejecutan el agente de contenedor de Amazon ECS y requieren un rol de IAM para que el servicio sepa que el agente le pertenece. Antes de lanzar instancias de contenedor y registrarlas en un clúster, debe crear un rol de IAM para que lo utilicen las instancias de contenedor. El rol se crea en la cuenta que utiliza para iniciar sesión en la consola o ejecutar los comandos AWS CLI.

importante

Si está registrando instancias externas en el clúster, el rol de IAM que utiliza también requiere permisos de Systems Manager. Para obtener más información, consulte Rol de IAM de Amazon ECS Anywhere.

Amazon ECS proporciona la política de IAM administrada AmazonEC2ContainerServiceforEC2Role, que contiene los permisos necesarios para utilizar el conjunto completo de características de Amazon ECS. Esta política administrada se puede asociar a un rol de IAM y a las instancias de contenedor. También puede utilizar la política administrada como guía cuando crea la política personalizada que va a utilizar. El rol de instancia de contenedor proporciona los permisos necesarios para que el agente de contenedor de Amazon ECS y el daemon de Docker puedan llamar a las API de AWS en su nombre. Para obtener más información acerca de la política administrada, consulte AmazonEC2ContainerServiceforEC2Role.

Amazon ECS es compatible con el lanzamiento de instancias de contenedor con mayor densidad de ENI al usar tipos de instancias de Amazon EC2 compatibles. Al utilizar esta característica, le recomendamos crear dos roles de instancia de contenedor. Habilite la configuración de la cuenta de awsvpcTrunking para un rol y use ese rol para las tareas que requieran el enlace troncal de ENI. Para obtener información acerca de la configuración de la cuenta de awsvpcTrunking, consulte Acceso a las características de Amazon ECS con la configuración de la cuenta.

Creación del rol de instancia de contenedor

importante

Si está registrando instancias externas en el clúster, consulte Rol de IAM de Amazon ECS Anywhere.

Puede crear el rol manualmente y asociarlo a la política de IAM administrada para instancias de contenedor a fin de permitir que Amazon ECS agregue permisos para futuras características y mejoras a medida que se vayan introduciendo. Utilice el siguiente procedimiento para adjuntar la política de IAM administrada si es necesario.

AWS Management Console
Creación de un rol de servicio de Elastic Container Service (consola de IAM)
  1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la consola de IAM, seleccione Roles y, a continuación, elija Crear rol.

  3. En Tipo de entidad de confianza, elija Servicio de AWS.

  4. En Servicio o caso de uso, seleccione Elastic Container Service y, a continuación, seleccione el caso de uso Rol de EC2 para Elastic Container Service.

  5. Elija Siguiente.

  6. En la sección Políticas de permisos, compruebe que la política AmazonEC2ContainerServiceforEC2Role esté seleccionada.

    importante

    La política administradaAmazonEC2ContainerServiceforEC2Role debe estar asociada al rol de IAM de instancia de contenedor; de lo contrario, recibirá un error al utilizar la AWS Management Console para crear clústeres.

  7. Elija Siguiente.

  8. En Nombre del rol, ingrese ecsInstanceRole

  9. Revise el rol y, a continuación, elija Crear rol.

AWS CLI

Sustituya cada entrada del usuario por valores propios.

  1. Cree un archivo denominado instance-role-trust-policy.json con el siguiente contenido.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. Utilice el siguiente comando para crear el rol de IAM de la instancia con el documento de política de confianza.

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. Cree un perfil de instancia denominado ecsInstanceRole-profile mediante el comando create-instance-profile.

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

    Ejemplo de respuesta

    { "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. Añada el rol ecsInstanceRole al perfil de instancia ecsInstanceRole-profile.

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. Adjunte la política administrada AmazonEC2ContainerServiceRoleForEC2Role al rol con el siguiente comando.

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

Después de crear el rol, agregue permisos adicionales al rol para las siguientes características.

Característica

Permisos adicionales

Amazon ECR tiene la imagen del contenedor

Permisos de Amazon ECR

Configuración de Registros de CloudWatch de modo que supervise las instancias de contenedores

Supervisión de los permisos de instancias de contenedores

Archivos de configuración del host en un bucket de Amazon S3

Acceso de solo lectura a Amazon S3

Permisos de Amazon ECR

El rol de la instancia de contenedor de Amazon ECS que utiliza con sus instancias de contenedor debe tener los siguientes permisos de políticas de IAM para Amazon ECR.

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

Si usa la política administrada AmazonEC2ContainerServiceforEC2Role para sus instancias de contenedor, el rol debe tener los permisos adecuados. Para comprobar si el rol es compatible con Amazon ECR, consulte Rol de IAM de instancia de contenedor de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.

Acceso de solo lectura a Amazon S3

El almacenamiento de la información de configuración en un bucket privado en Amazon S3 y la concesión de acceso de solo lectura al rol de IAM de instancia de contenedor es una forma práctica y segura de permitir la configuración de instancia de contenedor en el momento del lanzamiento. Puede almacenar una copia del archivo ecs.config en un bucket privado, utilizar los datos de usuario de Amazon EC2 para instalar la AWS CLI y, a continuación, copiar la información de configuración en /etc/ecs/ecs.config cuando se lance la instancia.

Para obtener más información acerca de cómo crear un archivo ecs.config, almacenarlo en Amazon S3 y lanzar instancias con esta configuración, consulte Almacenamiento de la configuración de instancia de contenedor de Amazon ECS en Amazon S3.

Puede utilizar el siguiente comando de la AWS CLI para conceder a Amazon S3 acceso de solo lectura para su rol de la instancia de contenedor. Sustituya ecsInstanceRole por el nombre del rol que haya creado.

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

También puede utilizar la consola de IAM para agregar el acceso de solo lectura de Amazon S3 (AmazonS3ReadOnlyAccess) a su rol. Para obtener más información, consulte Modifying a role permissions policy (console) en la Guía del usuario de AWS Identity and Access Management.

Supervisión de los permisos de instancias de contenedores

Para que las instancias de contenedor puedan enviar datos de registros a CloudWatch Logs, debe crear una política de IAM que permita a las instancias de contenedor utilizar las API de CloudWatch Logs y, a continuación, asociar dicha política al rol ecsInstanceRole.

AWS Management Console
Utilización del editor de política de JSON para la creación de una política
  1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la izquierda, elija Políticas.

    Si es la primera vez que elige Políticas, aparecerá la página Welcome to Managed Policies (Bienvenido a políticas administradas). Elija Comenzar.

  3. En la parte superior de la página, seleccione Crear política.

  4. En la sección Editor de políticas, seleccione la opción JSON.

  5. Ingrese el siguiente 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. Elija Siguiente.

    nota

    Puede alternar entre las opciones Visual y JSON del editor en todo momento. No obstante, si realiza cambios o selecciona Siguiente en la opción Visual del editor, es posible que IAM reestructure la política, con el fin de optimizarla para el editor visual. Para obtener más información, consulte Reestructuración de política en la Guía del usuario de IAM.

  7. En la página Revisar y crear, introduzca el Nombre de la política y la Descripción (opcional) para la política que está creando. Revise los Permisos definidos en esta política para ver los permisos que concede la política.

  8. Elija Crear política para guardar la nueva política.

Después de crear la política, adjúntela al rol de la instancia de contenedor. Para obtener información sobre cómo adjuntar la política al rol, consulte Modificación de una política de permisos de rol (consola) en la Guía del usuario de AWS Identity and Access Management.

AWS CLI
  1. Cree un archivo denominado instance-cw-logs.json con el siguiente contenido.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. Utilice el siguiente comando de la para crear la política de IAM con el archivo de documento de política de JSON.

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. Recupere el ARN de la política de IAM que creó mediante el siguiente comando. Sustituya cwlogspolicy por el nombre de la política que haya creado.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy`].Arn'
  4. Utilice el siguiente comando para adjuntar la política al rol de IAM de la instancia de contenedor mediante el ARN de la política.

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