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 de tarea de Amazon ECS.
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 Fargate o 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 registros de contenedor a CloudWatch Logs con el controlador de registros
awslogs
. Para obtener más información, consulte Envío de registros de Amazon ECS a CloudWatch .
-
-
Las tareas están alojadas en AWS Fargate o en instancias de Amazon EC2 y:
-
utiliza la autenticación de registros privados. Para obtener más información, consulte permisos para la autenticación de registros privados.
-
utiliza la supervisión en tiempo de ejecución.
-
la definición de la tarea hace referencia a información confidencial mediante secretos de Secrets Manager o parámetros del Almacén de parámetros de AWS Systems Manager. Para obtener más información, consulte Permisos de Secrets Manager o Systems Manager.
-
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. Para obtener más información, consulte AmazonECSTaskExecutionRolePolicy en la Guía de referencia de políticas administradas de AWS. Puede ser necesario agregar políticas en línea al rol de ejecución de tareas para los casos de uso especiales.
La consola de Amazon ECS crea un rol de ejecución de tareas. Puede asociar manualmente la política de IAM administrada para tareas a fin de permitir que Amazon ECS agregue permisos para futuras características y mejoras a medida que se vayan introduciendo. Puede utilizar la búsqueda en la consola de IAM para buscar ecsTaskExecutionRole
y ver si la cuenta ya dispone del rol de ejecución de tareas. Para obtener más información, consulte IAM console search en la Guía del usuario de IAM.
Si extrae imágenes como usuario autenticado, es menos probable que le afecten los cambios que se hayan producido en los límites de la tasa de extracción de Docker Hub
Al utilizar Amazon ECR y Amazon ECR Public, puede evitar los límites impuestos por Docker. Si extrae imágenes de Amazon ECR, esto también ayuda a acortar los tiempos de extracción de la red y reduce los cambios en la transferencia de datos cuando el tráfico abandona la VPC.
Cuando utilice Fargate, debe autenticarse en un registro de imágenes privado utilizando repositoryCredentials
. No es posible configurar las variables de entorno del agente de contenedor de Amazon ECS ECS_ENGINE_AUTH_TYPE
o ECS_ENGINE_AUTH_DATA
ni modificar el archivo ecs.config
para las tareas alojadas en Fargate. Para obtener más información, consulte Autenticación de registros privados para tareas.
Creación del rol de de ejecución de tareas
Si su cuenta aún no tiene un rol de ejecución de tareas, siga los pasos siguientes para crearlo.
Después de crear el rol, agregue permisos adicionales al rol para las siguientes características.
Característica | Permisos adicionales |
---|---|
Uso de las credenciales de Secrets Manager para acceder al repositorio privado de imágenes de su contenedor |
|
Transferencia de datos confidenciales con Systems Manager o Secrets Manager | |
Configuración de las tareas de Fargate de modo que extraigan imágenes de Amazon ECR a través de puntos de conexión de interfaz | |
Archivos de configuración del host en un bucket de Amazon S3 | |
Configuración de la Información de contenedor para ver los eventos del ciclo de vida de Amazon ECS | |
Visualización de los eventos del ciclo de vida de Amazon ECS en la información de contenedor |
permisos para la autenticación de registros privados
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 Secrets Manager o Systems Manager
El permiso para dejar 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 de Amazon ECS.
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
" ] } ] }
Las tareas de Fargate que extraen imágenes de Amazon ECR a través de permisos de puntos de conexión 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. Puede restringir la VPC a la VPC que aloja la tarea y el punto de conexión. -
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:
{ "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
" } } } ] }
Permisos de almacenamiento de archivos de Amazon S3
Cuando especifica un archivo de configuración alojado en Amazon S3, el rol de ejecución de tareas debe incluir el permiso s3:GetObject
para el archivo de configuración y el permiso s3:GetBucketLocation
en el bucket de Amazon S3 en el que se encuentra el archivo. Para obtener más información, consulte Acciones de políticas para Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.
La siguiente política de ejemplo agrega los permisos necesarios para recuperar un archivo de Amazon S3. Especifique el nombre del bucket de Amazon S3 y el nombre del archivo de configuración.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
s3:GetObject
" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/folder_name
/config_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] }
Permisos necesarios para configurar Información de contenedores para ver los eventos del ciclo de vida de Amazon ECS
Son necesarios los siguientes permisos en el rol de tarea para configurar los eventos del ciclo de vida:
-
events:PutRule
-
events:PutTargets
-
logs:CreateLogGroup
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }
Permisos necesarios para ver los eventos del ciclo de vida de Amazon ECS en Información de contenedores
Se requieren los siguientes permisos para ver los eventos del ciclo de vida: Agregue los siguientes permisos como una política en línea al rol de IAM de ejecución de tareas. Para obtener más información, consulte Adición y eliminación de políticas de IAM.
-
events:DescribeRule
-
events:ListTargetsByRule
-
logs:DescribeLogGroups
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }