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. 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 plus d’informations, consultez Envoyez les journaux Amazon ECS à CloudWatch .

  • Vos tâches sont hébergées sur des instances Amazon EC2 AWS Fargate ou sur des instances Amazon EC2 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 AmazonECS TaskExecutionRolePolicy qui contient les autorisations requises par les cas d'utilisation courants décrits ci-dessus. Pour plus d'informations, consultez AmazonECS TaskExecution RolePolicy dans le Guide de référence des politiques AWS gérées. 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 impacté par les modifications apportées aux limites de taux d'extraction de Docker Hub. 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 à l'adresse https://console.aws.amazon.com/iam/.

  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 AmazonECS TaskExecution RolePolicy, puis sélectionnez la politique.

  7. Choisissez Suivant.

  8. Dans Nom du rôle, entrez ecs TaskExecution Role.

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

AWS CLI

Remplacez toutes les entrées utilisateur 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

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 plus d’informations, consultez 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 lancement EC2, vous devez utiliser la variable de configuration de l'agent ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true pour utiliser cette fonction. 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 plus d’informations, consultez 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.

  • 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 :

Important

Les clés aws:sourceVpc ou les clés de aws:sourceVpce condition ne peuvent pas être appliquées à l'action ecr:GetAuthorizationToken API car l'appel d' GetAuthorizationToken API passe par l'interface Elastic Network appartenant à AWS Fargate plutôt que par l'interface réseau Elastic de la tâche.

{ "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 de stockage de fichiers Amazon S3

Lorsque vous spécifiez un fichier de configuration hébergé dans Amazon S3, votre rôle d'exécution des tâches 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 de plus amples informations, veuillez consulter Spécifier des autorisations dans une politique dans le Guide de l'utilisateur 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:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }