IAMRôle d'exécution des ECS tâches Amazon - 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.

IAMRôle d'exécution des ECS tâches Amazon

Le rôle IAM d'exécution de tâche accorde aux agents de ECS conteneur Amazon et Fargate l'autorisation d' AWS APIeffectuer des appels en votre nom. Le IAM rôle 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 IAM autorisations nécessaires à l'exécution de votre application, consultezIAMRôle de ECS tâche Amazon.

Voici des cas d'utilisation courants pour un IAM rôle 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 à partir d'un référentiel ECR privé Amazon.

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

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

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

Note

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

Amazon ECS fournit la stratégie gérée nommée A mazonECSTask ExecutionRolePolicy qui contient les autorisations nécessaires pour les cas d'utilisation courants décrits ci-dessus. Pour plus d'informations, reportez-vous mazonECSTask ExecutionRolePolicy à la section A du Guide de référence des politiques AWS gérées. Il peut être nécessaire d'ajouter des politiques en ligne à votre rôle d'exécution de tâche pour des cas d'utilisation spéciaux

La ECS console Amazon crée un rôle d'exécution de tâche. Vous pouvez attacher manuellement la IAM stratégie gérée pour les tâches afin de permettre à Amazon ECS d'ajouter des autorisations pour les futures fonctions et améliorations au fur et à mesure qu'elles sont introduites. Vous pouvez utiliser IAM la recherche sur console pour rechercher ecsTaskExecutionRole et voir si votre compte possède déjà le rôle d'exécution de tâche. Pour plus d'informations, consultez IAMla section de recherche dans la console dans le guide de IAM l'utilisateur.

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 AmazonECR, 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 votreVPC.

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 ECS conteneur Amazon, ECS_ENGINE_AUTH_TYPE ECS_ENGINE_AUTH_DATA ou de modifier le ecs.config fichier 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 un rôle pour un service Elastic Container Service (IAMconsole)
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation de la IAM console, sélectionnez Rôles, puis sélectionnez 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 A mazonECSTask 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

Replace Access user input avec vos propres informations.

  1. Créez un fichier nommé ecs-tasks-trust-policy.json contenant la stratégie d'approbation à utiliser pour le IAM rôle. 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 IAM rôle 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 de registre privé

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

Autorisations Secrets Manager ou Systems Manager

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

Tâches Fargate qui extraient des images ECR Amazon au-delà des autorisations des points de terminaison d'interface

Hébergez les fichiers de configuration dans un compartiment Amazon S3

Autorisations de stockage de fichiers Amazon S3

Configurez Container Insights pour afficher les événements ECS du cycle de vie Amazon

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

Afficher les événements ECS du cycle de vie Amazon dans Container Insights

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

Autorisations d'authentification de 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 la section Ajout et suppression IAM de politiques.

  • secretsmanager:GetSecretValue

  • kms:Decrypt: obligatoire uniquement si votre clé utilise une KMS clé 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" ] } ] }

Autorisations Secrets Manager ou Systems Manager

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

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 la section Ajouter et supprimer des autorisations IAM d'identité dans le Guide de IAM l'utilisateur.

  • 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'ECSagent ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true pour utiliser cette fonction. Vous pouvez l'ajouter au ./etc/ecs/ecs.config fichier lors de la création d'une instance de conteneur ou vous pouvez l'ajouter à une instance existante, puis redémarrer l'ECSagent. Pour de plus amples informations, veuillez consulter Configuration de l'agent de ECS conteneur Amazon.

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 la section Ajouter et supprimer des autorisations IAM d'identité dans le Guide de IAM l'utilisateur.

  • 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. La ARN clé personnalisée doit être ajoutée 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 qui extraient des images ECR Amazon au-delà des autorisations des points de terminaison d'interface

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

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

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

  • aws:SourceVpce—Restreint l'accès à un point de terminaison spécifiqueVPC.

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 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 à partir d'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 ECS du cycle de vie Amazon

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": "*" } ] }

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

Les autorisations suivantes sont requises pour afficher les événements du cycle de vie. Ajoutez les autorisations suivantes sous forme de stratégie en ligne au rôle d'exécution de tâche. Pour plus d'informations, consultez la section Ajout et suppression IAM de politiques.

  • événements : DescribeRule

  • événements : ListTargetsByRule

  • journaux : DescribeLogGroups

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }