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 conocer los permisos de IAM que la aplicación necesita para ejecutarse, consulteRol 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:

  • Su tarea está alojada en AWS Fargate o en una instancia de externa y...

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

    • está extrayendo 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 Registra usando elawslogscontrolador de registro. Para obtener más información, consulte Uso del controlador de registros awslogs.

  • Sus tareas están alojadas en AWS Fargate o en instancias de Amazon EC2 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 el procedimiento siguiente para comprobar si la cuenta ya dispone del rol de ejecución de tareas de Amazon ECS y para asociar la política de IAM administrada, de ser necesario.

Comprobación del rol de ejecución de tareas (ecsTaskExecutionRole) en la consola de IAM

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Seleccione Roles (Roles) en el panel de navegación.

  3. En el cuadro de búsqueda, escriba ecsTaskExecutionRole. Si el rol existe, selecciónelo para ver sus políticas asociadas.

  4. En elPermisospestaña, compruebe queAmazon ECSTaskExecutionRolePolicyestá vinculado a la función.

    1. Elija Add Permissions (Agregar permisos), Attach policies (Asociar políticas).

    2. Para limitar las políticas disponibles para adjuntar, paraFiltrar, entraAmazon ECSTaskExecutionRolePolicy.

    3. Marque la casilla situada a la izquierda delAmazon ECSTaskExecutionRolePolicypolítica y, a continuación, elijaAdjuntar política.

  5. Seleccione Trust Relationships.

  6. Compruebe que la relación de confianza contiene la siguiente política. Si la relación de confianza coincide con la política a continuación, seleccione Cancel. Si la relación de confianza no coincide, elija Edit trust policy (Editar la política de confianza) en la ventana Policy Document (Documento de política) y seleccione Update policy (Política de actualización).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

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

Si su cuenta aún no tiene un rol de ejecución de tareas, siga los pasos siguientes para crear el rol.

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, elija Roles, Create role.

  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 Attached permissions policy (Asociar política de permisos), haga lo siguiente:

    1. BuscaAmazon ECSTaskExecutionRolePolicyy, a continuación, selecciona 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 Role details (Detalles del rol), 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. Elija Create role (Crear rol).

Para crear un rol de IAM de ejecución de tareas (AWS CLI)
  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. Asocie la política AmazonECSTaskExecutionRolePolicy administrada por AWS al rol ecsTaskExecutionRole. Esta política proporciona

    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 que el agente de contenedor extraiga los recursos necesarios de AWS Systems Manager o Secrets Manager. Para obtener más información, consulte Transferencia de datos confidenciales a un contenedor.

Uso 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. Añade 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" ] } ] }

Uso 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. Añade 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. Añade 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. Añade el permiso para descifrar la clave gestionada 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

Elecr:GetAuthorizationTokenLa acción de la API no puede tener elaws:sourceVpcoaws:sourceVpcese le aplicaron claves de condición porque GetAuthorizationToken La llamada a la API pasa por la interfaz de red elástica propiedad deAWSFargate en lugar de 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" } } } ] }