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 sont mises à la disposition de l’agent exécuté sur votre instance par Amazon ECS qui lui envoie régulièrement les informations d’identification temporaires du rôle, mais elles ne sont pas directement accessibles par les conteneurs de la tâche. Pour connaître les autorisations IAM dont votre code d’application à l’intérieur du conteneur a besoin pour s’exécuter, consultez la section rôle IAM de 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 Fargatedes instances gérées Amazon ECS ou sur une instance externe et :

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

    • extrait une image de conteneur à partir 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 EC2 instances Amazon AWS Fargate ou sur 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 stratégie gérée nommée AmazonECSTaskExecutionRolePolicy qui contient les autorisations nécessaires pour 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 des tâches pour des cas d’utilisation particuliers.

La console Amazon ECS crée un rôle d’exécution des tâches. Vous pouvez associer manuellement la politique IAM gérée pour les tâches afin de permettre à Amazon ECS d’ajouter des autorisations pour les fonctionnalités et améliorations futures à mesure qu’elles sont introduites. Vous pouvez utiliser la recherche sur console IAM pour rechercher ecsTaskExecutionRole et voir 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 téléchargez des images en tant qu’utilisateur authentifié, vous serez moins susceptible d’être affecté par les changements apportés à l’utilisation et aux limites 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âche, procédez comme suit pour créer le rôle.

AWS Management Console
Pour créer un rôle de service 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 Tâche Elastic Container Service.

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

    JSON
    JSON
    { "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

Extrayez des images de conteneurs depuis des registres privés extérieurs AWS (tels que Docker Hub, Quay.io ou votre propre registre privé) à l'aide des informations d'identification de Secrets Manager

Autorisations d’authentification du registre privé

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

Autorisations Secrets Manager ou Systems Manager

Faire en sorte que les tâches Fargate extraient les images Amazon ECR via les points de terminaison de l’interface

Tâches Fargate extrayant des images Amazon ECR via les autorisations des points de terminaison d’interface

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

Autorisations de stockage de fichiers Amazon S3

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

Autorisations requises pour l’affichage des événements du cycle de vie Amazon ECS dans Container Insights

Afficher les événements du 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é

L'authentification par registre privé permet à vos tâches Amazon ECS d'extraire des images de conteneurs depuis des registres privés extérieurs AWS (tels que Docker Hub, Quay.io ou votre propre registre privé) qui nécessitent des informations d'authentification. Cette fonctionnalité utilise Secrets Manager pour stocker en toute sécurité vos informations d’identification de registre, qui sont ensuite référencées dans votre définition de tâche à l’aide du paramètre repositoryCredentials.

Pour plus d'informations sur la configuration de l'authentification du registre privé, consultez Utilisation d'images non AWS conteneurisées dans Amazon ECS.

Pour donner accès aux secrets contenant vos informations d’identification du registre privé, ajoutez les autorisations suivantes en tant que politique intégrée au rôle d’exécution des tâches. Pour plus d'informations, consultez Ajout et suppression de politiques IAM.

  • secretsmanager:GetSecretValue : nécessaire pour récupérer les informations d’identification du registre privé auprès de Secrets Manager.

  • kms:Decrypt  : obligatoire uniquement si votre secret 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.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }

Autorisations Secrets Manager ou 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 Transmission de 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.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333: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.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:us-east-1:111122223333:parameter/parameter_name", "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }

Tâches Fargate extrayant des images Amazon ECR via les autorisations des points de terminaison d’interface

Lors du lancement des tâches qui utilisent Fargate et qui extraient des images à partir d’Amazon ECR, lorsqu’Amazon ECR est configuré pour utiliser un point de terminaison de VPC d’interface, vous pouvez restreindre les droits d’accès des tâches à un VPC ou à un point de terminaison de 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 :

JSON
{ "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": "arn:aws:ecr:*:*:repository/*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-0123456789abcdef0" } } } ] }

Autorisations Amazon ECR

Les autorisations suivantes sont requises lorsque vous devez extraire des images de conteneur à partir des référentiels privés Amazon ECR. Le rôle d’exécution de tâche 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 de tâche.

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, vous n’avez pas besoin 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 :

JSON
{ "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 du rôle IAM de tâche pour Amazon ECR, consultez la section 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’autorisation s3:GetObject pour le fichier de configuration et l’autorisation s3:GetBucketLocation sur le compartiment Amazon S3 dans lequel se trouve le fichier. Pour plus d’informations, consultez la section Actions de politiques pour Amazon S3 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 à partir d’Amazon S3. Spécifiez le nom de votre compartiment Amazon S3 et le nom du fichier de configuration.

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

Considération importante en matière de sécurité

Lorsque vous utilisez les fonctionnalités Amazon ECS qui s'intègrent aux compartiments Amazon S3, implémentez la validation de la propriété des compartiments pour empêcher les attaques de prise de contrôle des compartiments. Sans validation appropriée, si un compartiment Amazon S3 est supprimé et recréé par un acteur malveillant portant le même nom, vos tâches risquent de charger des configurations malveillantes sans le savoir ou d'envoyer des données sensibles vers des compartiments contrôlés par un attaquant.

Condition de politique IAM recommandée :

"Condition": { "StringEquals": { "aws:ResourceAccount": "TRUSTED-ACCOUNT-ID" } }

TRUSTED-ACCOUNT-IDRemplacez-le par l'ID du AWS compte propriétaire du compartiment S3.

Cette condition garantit que votre rôle d'exécution de tâches ne peut accéder qu'aux compartiments Amazon S3 appartenant au compte fiable spécifié.