Rôle IAM d'exécution de tâche Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rôle IAM d'exécution de tâche Amazon ECS

Le rôle IAM d'exécution de tâche accorde aux agents de conteneur Amazon ECS et Fargate l'autorisation d'effectuer des appels d'API AWS en votre nom. Le rôle IAM d'exécution de la tâche est requis en fonction des besoins de votre tâche. Vous pouvez avoir plusieurs rôles d'exécution de tâche pour différents objectifs et services associés à votre compte.

Note

Ces autorisations ne sont pas accessibles aux conteneurs de la tâche. Pour connaître les autorisations IAM dont votre application a besoin pour s'exécuter, veuillez consulter Rôle IAM de la tâche Amazon ECS.

Voici des cas d'utilisation courants pour un rôle IAM d'exécution de tâche :

  • Votre tâche est hébergée sur AWS Fargateou sur une instance externe et :

    • extrait une image de conteneur depuis un référentiel privé Amazon ECR.

    • extrait une image de conteneur d'un référentiel privé Amazon ECR dans un compte différent de celui qui exécute la tâche.

    • envoie les journaux des conteneurs à CloudWatch Logs à l'aide du pilote de awslogs journal. Pour de plus amples informations, veuillez consulter Envoyez les journaux Amazon ECS à CloudWatch .

  • Vos tâches sont hébergées sur des instances AWS Fargate ou sur EC2 des instances Amazon et :

Note

Le rôle d'exécution de tâche est pris en charge par l'agent de conteneur Amazon ECS, version 1.16.0 et ultérieures.

Amazon ECS fournit la politique gérée nommée Amazon ECSTask ExecutionRolePolicy qui contient les autorisations requises par les cas d'utilisation courants décrits ci-dessus. Pour plus d'informations, consultez Amazon ECSTask ExecutionRolePolicy dans le AWS Managed Policy Reference Guide. Il peut être nécessaire d'ajouter des politiques intégrées à votre rôle d'exécution de tâches pour des cas d'utilisation particuliers

La console Amazon ECS crée un rôle d'exécution de tâche. Vous pouvez joindre manuellement la politique IAM gérée aux tâches afin de permettre à Amazon ECS d'ajouter des autorisations pour les fonctionnalités et améliorations futures au fur et à mesure de leur introduction. Vous pouvez utiliser la recherche dans la console IAM pour rechercher ecsTaskExecutionRole et vérifier si votre compte possède déjà le rôle d'exécution des tâches. Pour plus d'informations, consultez la section Recherche dans la console IAM dans le guide de l'utilisateur IAM.

Si vous extrayez des images en tant qu'utilisateur authentifié, vous êtes moins susceptible d'être affecté par les modifications apportées à l'Docker Hubutilisation et aux limites. Pour plus d'informations, veuillez consulter Authentification de registre privé pour les instances de conteneur (langue française non garantie).

En utilisant Amazon ECR et Amazon ECR Public, vous pouvez éviter les limites imposées par Docker. Si vous extrayez des images depuis Amazon ECR, cela permet également de raccourcir les temps d'extraction du réseau et de réduire les modifications de transfert de données lorsque le trafic quitte votre VPC.

Lorsque vous utilisez Fargate, vous devez vous authentifier auprès d'un registre d'images privé à l'aide de repositoryCredentials. Il n'est pas possible de définir les variables d'environnement de l'agent de conteneur Amazon ECS ECS_ENGINE_AUTH_TYPE ou ECS_ENGINE_AUTH_DATA, ou de modifier le fichier ecs.config pour les tâches hébergées sur Fargate. Pour plus d'informations, veuillez consulter Authentification de registre privé pour les tâches (langue française non garantie).

Création du rôle d'exécution de tâche

Si votre compte ne possède pas encore de rôle d'exécution de tâches, suivez les étapes ci-dessous pour créer le rôle.

AWS Management Console
Pour créer le rôle de service pour Elastic Container Service (console IAM)
  1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/l'adresse.

  2. Dans le volet de navigation de la console IAM, sélectionnez Roles (Rôles), puis Create role (Créer un rôle).

  3. Pour Trusted entity (Entité de confiance), choisissez Service AWS.

  4. Pour Service ou cas d'utilisation, choisissez Elastic Container Service, puis choisissez le cas d'utilisation d'Elastic Container Service Task.

  5. Choisissez Suivant.

  6. Dans la section Ajouter des autorisations, recherchez Amazon ECSTask ExecutionRolePolicy, puis sélectionnez la politique.

  7. Choisissez Suivant.

  8. Dans Nom du rôle, entrez ecsTaskExecutionRôle.

  9. Passez en revue les informations du rôle, puis choisissez Create role (Créer un rôle).

AWS CLI

Remplacez tout user input par vos propres informations.

  1. Créez un fichier nommé ecs-tasks-trust-policy.json contenant la stratégie d'approbation à utiliser pour le rôle IAM. Le fichier doit contenir ce qui suit :

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Créez un rôle IAM nommé ecsTaskExecutionRole à l'aide de la stratégie d'approbation créée à l'étape précédente.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Associez la AmazonECSTaskExecutionRolePolicy politique AWS gérée au ecsTaskExecutionRole rôle.

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

Après avoir créé le rôle, ajoutez-y des autorisations supplémentaires pour les fonctionnalités suivantes.

Fonctionnalité Autorisations supplémentaires

Utilisez les informations d'identification de Secrets Manager pour accéder à votre référentiel privé d'images de conteneur

Autorisations d'authentification du registre privé

Transmettez des données sensibles avec Systems Manager ou Secrets Manager

Permissions de Secrets Manager ou de Systems Manager

Demandez aux tâches Fargate d'extraire les images Amazon ECR sur les points de terminaison de l'interface

Tâches Fargate extrayant des images Amazon ECR au-delà des autorisations des points de terminaison de l'interface

Fichiers de configuration de l'hôte dans un compartiment Amazon S3

Autorisations de stockage de fichiers Amazon S3

Configurer Container Insights pour afficher les événements du cycle de vie d'Amazon ECS

Autorisations requises pour configurer Container Insights afin d'afficher les événements du cycle de vie Amazon ECS

Afficher les événements relatifs au cycle de vie d'Amazon ECS dans Container Insights

Autorisations requises pour afficher les événements du cycle de vie Amazon ECS dans Container Insights

Autorisations d'authentification du registre privé

Pour fournir l'accès aux secrets que vous créez, ajoutez les autorisations suivantes en tant que politique en ligne au rôle d'exécution de tâche. Pour plus d'informations, consultez Ajout et suppression de politiques IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt : requis uniquement si votre clé utilise une clé KMS personnalisée et non la clé par défaut. L'Amazon Resource Name (ARN) de votre clé personnalisée doit être ajouté en tant que ressource.

Voici un exemple de stratégie en ligne qui ajoute les autorisations.

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

Permissions de Secrets Manager ou de Systems Manager

L'autorisation d'autoriser l'agent du conteneur à extraire les ressources nécessaires AWS Systems Manager ou les ressources de Secrets Manager. Pour de plus amples informations, veuillez consulter Transférer des données sensibles vers un conteneur Amazon ECS.

Utilisation de Secrets Manager

Pour fournir l'accès aux secrets Secrets Manager que vous créez, ajoutez manuellement l'autorisation suivante au rôle d'exécution de tâche. Pour plus d'informations sur la gestion des autorisations, consultez Ajout et suppression de stratégies IAM dans le Guide de l'utilisateur IAM.

  • secretsmanager:GetSecretValue : obligatoire si vous faites référence à un secret Secrets Manager. Ajoute l'autorisation pour récupérer le secret depuis Secrets Manager.

L'exemple suivant de politique ajoute les autorisations requises.

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

Utilisation de Systems Manager

Important

Pour les tâches qui utilisent le type de EC2 lancement, vous devez utiliser la variable de configuration de l'agent ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true pour utiliser cette fonctionnalité. Vous pouvez l'ajouter au fichier ./etc/ecs/ecs.config lors de la création de l'instance de conteneur, ou vous pouvez l'ajouter à une instance existante, puis redémarrer l'agent ECS. Pour de plus amples informations, veuillez consulter Configuration de l'agent de conteneur Amazon ECS.

Pour permettre l'accès aux paramètres du magasin de paramètres du gestionnaire de systèmes que vous créez, ajoutez manuellement les autorisations suivantes en tant que stratégie au rôle d'exécution de tâche. Pour plus d'informations sur la gestion des autorisations, consultez Ajout et suppression de stratégies IAM dans le Guide de l'utilisateur IAM.

  • ssm:GetParameters : obligatoire lorsque vous référencez un paramètre Systems Manager Parameter Store dans une définition de tâche. Ajoute l'autorisation pour récupérer les paramètres de Systems Manager.

  • secretsmanager:GetSecretValue : obligatoire si vous référencez directement un secret Secrets Manager ou si votre paramètre Systems Manager Parameter Store référence un secret Secrets Manager dans une définition de tâche. Ajoute l'autorisation pour récupérer le secret depuis Secrets Manager.

  • kms:Decrypt  : obligatoire uniquement si votre secret utilise une clé managée client et non la clé par défaut. L'ARN de votre clé personnalisée doit être ajouté en tant que ressource. Ajoute l'autorisation pour déchiffrer la clé gérée par le client.

L'exemple suivant de politique ajoute les autorisations requises.

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

Tâches Fargate extrayant des images Amazon ECR au-delà des autorisations des points de terminaison de l'interface

Lors du lancement des tâches qui utilisent le type de lancement Fargate et qui extraient des images à partir d'Amazon ECR, lorsqu'Amazon ECR est configuré pour utiliser un point de terminaison d’un VPC d'interface, vous pouvez restreindre les droits d'accès des tâches à un VPC ou à un point de terminaison d’un VPC spécifique. Pour ce faire, créez un rôle d'exécution de tâche pour les tâches qui utilisent des clés de condition IAM.

Utilisez les clés de condition globales IAM suivantes pour restreindre l'accès à un VPC ou à un point de terminaison d’un VPC spécifique. Pour de plus amples informations, veuillez consulter Clés de contexte de condition globale AWS.

  • aws:SourceVpc : restreint l'accès à un VPC spécifique. Vous pouvez limiter le VPC au VPC qui héberge la tâche et le point de terminaison.

  • aws:SourceVpce : restreint l'accès à un point de terminaison d’un VPC spécifique.

La stratégie de rôle d'exécution de tâche suivante fournit un exemple d'ajout de clés de condition :

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

Autorisations Amazon ECR

Les autorisations suivantes sont requises lorsque vous devez extraire des images de conteneurs depuis des référentiels privés Amazon ECR. Le rôle d'exécution des tâches doit disposer de ces autorisations pour permettre au conteneur Amazon ECS et aux agents Fargate d'extraire les images du conteneur en votre nom. Pour les implémentations ECS de base, ces autorisations doivent être ajoutées au rôle d'exécution des tâches plutôt qu'au rôle IAM des tâches.

La politique gérée du rôle d'exécution des tâches Amazon ECS (AmazonECSTaskExecutionRolePolicy) inclut les autorisations nécessaires pour extraire des images depuis Amazon ECR. Si vous utilisez la politique gérée, il n'est pas nécessaire d'ajouter ces autorisations séparément.

Si vous créez une politique personnalisée, incluez les autorisations suivantes pour autoriser l'extraction d'images depuis Amazon ECR :

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

Notez que ces autorisations sont différentes de celles qui peuvent être requises dans le rôle IAM de tâche si le code de votre application doit interagir directement avec Amazon ECR. APIs Pour plus d'informations sur les autorisations de rôle IAM des tâches pour Amazon ECR, consultez. Autorisations Amazon ECR

Autorisations de stockage de fichiers Amazon S3

Lorsque vous spécifiez un fichier de configuration hébergé dans Amazon S3, le rôle d'exécution de la tâche doit inclure l's3:GetObjectautorisation pour le fichier de configuration et l's3:GetBucketLocationautorisation sur le compartiment Amazon S3 dans lequel se trouve le fichier. Pour plus d'informations, consultez la section Actions politiques pour Amazon S3 dans le guide de l'utilisateur d'Amazon Simple Storage Service.

L'exemple de politique suivant ajoute les autorisations requises pour récupérer un fichier depuis Amazon S3. Spécifiez le nom de votre compartiment Amazon S3 et le nom du fichier de configuration.

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

Autorisations requises pour configurer Container Insights afin d'afficher les événements du cycle de vie Amazon ECS

Les autorisations suivantes sont requises dans le rôle de tâche pour configurer les événements du cycle de vie :

  • événements : PutRule

  • événements : PutTargets

  • journaux : CreateLogGroup

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }