Rol de IAM de ejecución de tareas de Amazon ECS - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Rol de IAM de ejecución de tareas de Amazon ECS

El rol de ejecución de tareas concede al agente de contenedor de Amazon ECS y al agente de Fargate permiso para realizar llamadas a la API de AWS en su nombre. El rol de IAM de ejecución de tareas es necesario en función de los requisitos de la tarea. Puede tener varios roles de ejecución de tareas asociados a su cuenta para distintos fines y servicios. Para ver los permisos de IAM que la aplicación necesita para ejecutarse, consulte Rol de IAM para la tarea.

A continuación, se indican los casos de uso comunes para un rol de IAM de ejecución de tareas:

  • La tarea está alojada en AWS Fargateo en una instancia externa y:

    • extrae una imagen de contenedor de un repositorio privado de Amazon ECR.

    • extrae una imagen de contenedor de un repositorio privado de Amazon ECR en una cuenta diferente de la cuenta que ejecuta la tarea.

    • envía los registros del contenedor a CloudWatch Logs mediante el controlador de awslogs registros. Para obtener más información, consulte Uso del controlador de registros awslogs.

  • Sus tareas se alojan en una de las instancias de Amazon EC2 AWS Fargate o en ellas y...

nota

El rol de ejecución de tareas es compatible con la versión 1.16.0 y posteriores del agente de contenedor de Amazon ECS.

Amazon ECS proporciona la política administrada con el nombre AmazonECSTaskExecutionRolePolicy, que contiene los permisos que requieren los casos de uso comunes descritos anteriormente. Puede ser necesario agregar políticas insertadas al rol de ejecución de tareas para los casos de uso especiales que se describen a continuación.

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

Un rol de ejecución de tareas de Amazon ECS se crea automáticamente en la consola de Amazon ECS; no obstante, debe asociar manualmente la política de IAM administrada para que las tareas permitan que Amazon ECS agregue permisos para las características y mejoras futuras a medida que se vayan introduciendo. Puede utilizar la búsqueda en la consola de IAM para buscar ecsTaskExecutionRole y comprobar si su cuenta ya tiene la función de ejecución de tareas. Para obtener más información, consulte la búsqueda en la consola de IAM en la guía del usuario de IAM.

Creación del rol de ejecución de tareas (ecsTaskExecutionRole)

Si tu cuenta aún no tiene un rol de ejecución de tareas, sigue estos pasos para crear el rol.

AWS Management Console
Para crear un rol de IAM de ejecución de tareas (AWS Management Console)
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Roles, Crear rol.

  3. En la sección Tipo de entidad de confianza, elija Servicio de AWS y, a continuación, Elastic Container Service.

  4. En Caso de uso, elija Tarea de Elastic Container Service y, luego, seleccione Siguiente.

  5. En la sección Añadir permisos, haz lo siguiente:

    1. Busque AmazonECS y, a continuaciónTaskExecutionRolePolicy, seleccione la política.

    2. En Set permissions boundary - optional (Establecer límite de permisos: opcional), elija Create role without a permissions boundary (Crear rol sin límite de permisos).

    3. Elija Siguiente.

  6. En Nombrar, revisar y crear, haga lo siguiente:

    1. En Role name, escriba ecsTaskExecutionRole.

    2. En Add tags (optional) (Agregar etiquetas [opcional]), especifique las etiquetas personalizadas que desee asociar a la política.

  7. Seleccione Crear rol.

AWS CLI

Sustituya todas las entradas del usuario por su propia información.

  1. Cree un archivo con el nombre ecs-tasks-trust-policy.json, que contenga la política de confianza que se va a utilizar para el rol de IAM. El archivo debe contener lo siguiente:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Cree un rol de IAM con el nombre ecsTaskExecutionRole, que utilice la política de confianza creada en el paso anterior.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Adjunte la AmazonECSTaskExecutionRolePolicy política AWS gestionada al ecsTaskExecutionRole rol.

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

Permisos de IAM requeridos para la autenticación de registros privados

Se requiere el rol de ejecución de tareas de Amazon ECS para utilizar esta característica. Esto permite que el agente de contenedor extraiga la imagen del contenedor.

Para proporcionar acceso a los secretos que cree, agregue los siguientes permisos como una política insertada al rol de ejecución de tareas. Para obtener más información, consulte Adición y eliminación de políticas de IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt: solo se requiere si la clave utiliza una clave de KMS personalizada y no la clave de KMS predeterminada. Se debe agregar el nombre de recurso de Amazon (ARN) de la clave de personalizada como un recurso.

Es siguiente es un ejemplo de política insertada que agrega los permisos.

{ "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" ] } ] }

Permisos de IAM requeridos para los secretos de Amazon ECS

Para utilizar la característica de secretos de Amazon ECS, debe tener el rol de ejecución de tareas de Amazon ECS y hacer referencia a él en la definición de tarea. Esto permite al agente contenedor obtener los recursos necesarios AWS Systems Manager o los de Secrets Manager. Para obtener más información, consulte Transferencia de datos confidenciales a un contenedor.

Utilización de Secrets Manager

Para proporcionar acceso a los secretos de Secrets Manager que cree, agregue manualmente el siguiente permiso al rol de ejecución de tareas. Para obtener información sobre cómo administrar los permisos, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

  • secretsmanager:GetSecretValue: obligatorio si se hace referencia a un secreto de Secrets Manager. Agrega el permiso para recuperar el secreto de Secrets Manager.

La siguiente política de ejemplo agrega los permisos necesarios.

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

Utilización de Systems Manager

importante

En el caso de las tareas que utilizan el tipo de lanzamiento de EC2, debe utilizar la variable de configuración del agente de ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true para utilizar esta característica. Puede añadirla al archivo ./etc/ecs/ecs.config durante la creación de la instancia de contenedor o puede añadirla a una instancia existente y, a continuación, reiniciar el agente de ECS. Para obtener más información, consulte Configuración del agente de contenedor de Amazon ECS.

Para proporcionar acceso a los parámetros del almacén de parámetros de Systems Manager que cree, agregue manualmente los siguientes permisos como política al rol de ejecución de tareas. Para obtener información sobre cómo administrar los permisos, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

  • ssm:GetParameters: obligatorio si se hace referencia a un parámetro del almacén de parámetros de Systems Manager en una definición de tareas. Agrega el permiso para recuperar los parámetros de Systems Manager.

  • secretsmanager:GetSecretValue: obligatorio si se hace referencia a un secreto de Secrets Manager directamente o si el parámetro del almacén de parámetros de Systems Manager hace referencia a un secreto de Secrets Manager en una definición de tareas. Agrega el permiso para recuperar el secreto de Secrets Manager.

  • kms:Decrypt: obligatorio solo si el secreto utiliza una clave administrada por el cliente y no la clave predeterminada. El ARN de su clave personalizada debe añadirse como un recurso. Agrega el permiso para descifrar la clave administrada por el cliente.

La siguiente política de ejemplo agrega los permisos necesarios:

{ "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" ] } ] }

Permisos de IAM opcionales para tareas de Fargate que extraen imágenes de Amazon ECR sobre puntos de enlace de interfaz

Al lanzar las tareas que usan el tipo de lanzamiento de Fargate que extrae imágenes de Amazon ECR cuando Amazon ECR está configurado para utilizar un punto de enlace de la VPC de interfaz, puede restringir el acceso de las tareas a una VPC o a un punto de enlace de la VPC específicos. Para hacerlo, cree un rol de ejecución de tareas para que las tareas utilicen claves de condición de IAM.

Utilice las siguientes claves de condición globales de IAM para restringir el acceso a una VPC o a un punto de enlace de la VPC específicos. Para obtener más información, consulte Claves de contexto de condición globales de AWS.

  • aws:SourceVpc: restringe el acceso a una VPC específica.

  • aws:SourceVpce: restringe el acceso a un punto de enlace de la VPC específico.

En la siguiente política del rol de ejecución de tareas se ofrece un ejemplo para añadir claves de condición:

importante

A la acción de la ecr:GetAuthorizationToken API no se le pueden aplicar las claves de aws:sourceVpce condición aws:sourceVpc o las claves de condición porque la llamada a la GetAuthorizationToken API pasa por la interfaz de red elástica propiedad de AWS Fargate y no por la interfaz de red elástica de la tarea.

{ "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" } } } ] }