Récupérez les paramètres de Systems Manager via les variables d'environnement 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écupérez les paramètres de Systems Manager via les variables d'environnement Amazon ECS

Amazon ECS vous permet d'injecter des données sensibles dans vos conteneurs en les stockant dans les paramètres du AWS Systems Manager Parameter Store, puis en les référençant dans la définition de votre conteneur.

Tenez compte des points suivants lorsque vous utilisez une variable d'environnement pour injecter un secret Systems Manager dans un conteneur.

  • Les données sensibles sont injectées dans votre conteneur lors du démarrage initial du conteneur. Si le secret est ensuite mis à jour ou fait l'objet d'une rotation, le conteneur ne reçoit pas la valeur mise à jour automatiquement. Vous devez lancer une nouvelle tâche ou, si votre tâche fait partie d'un service, vous pouvez mettre à jour le service et utiliser l'option Force new deployment (Forcer un nouveau déploiement) pour forcer le service à lancer une nouvelle tâche.

  • Pour les tâches Amazon ECS sur AWS Fargate, les points suivants doivent être pris en compte :

    • Pour injecter le contenu complet d'un secret en tant que variable d'environnement ou dans une configuration de journal, vous devez utiliser la version 1.3.0 ou ultérieure de la plateforme. Pour plus d'informations, veuillez consulter Versions de la plateforme Fargate Linux pour Amazon ECS.

    • Pour injecter une clé JSON spécifique ou une version d'un secret en tant que variable d'environnement ou dans une configuration de journal, vous devez utiliser la version 1.4.0 de la plateforme ou une version ultérieure (Linux) ou 1.0.0 (Windows). Pour plus d'informations, veuillez consulter Versions de la plateforme Fargate Linux pour Amazon ECS.

  • Pour les tâches Amazon ECS sur EC2, les informations suivantes doivent être prises en compte :

    • Pour injecter un secret à l'aide d'une clé JSON spécifique ou d'une version d'un secret, votre instance de conteneur doit avoir la version 1.37.0 ou ultérieure de l'agent de conteneur. Cependant, nous vous recommandons d'utiliser la dernière version de l'agent de conteneur. Pour plus d'informations sur la vérification de la version de votre agent et la mise à jour à la dernière version, consultez Mise à jour de l'agent de conteneur Amazon ECS.

      Pour injecter le contenu complet d'un secret en tant que variable d'environnement ou pour injecter un secret dans une configuration de journal, votre instance de conteneur doit avoir la version 1.22.0 ou ultérieure de l'agent de conteneur.

  • Utilisez les points de terminaison VPC de l'interface pour améliorer les contrôles de sécurité. Vous devez créer les points de terminaison VPC de l'interface pour Systems Manager. Pour plus d'informations sur le point de terminaison d'un VPC, veuillez consulter Créer des points de terminaison d'un VPC dans le Guide de l'utilisateur AWS Systems Manager .

  • Pour les tâches Windows configurées pour utiliser le pilote de journalisation awslogs, vous devez également définir la variable d'environnement ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE sur votre instance de conteneur. Cela peut être fait avec les données utilisateur en utilisant la syntaxe suivante :

    <powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>

Autorisations IAM

Pour utiliser cette fonction, vous devez disposer du rôle d'exécution de tâche Amazon ECS et le référencer dans votre définition de tâche. Cela permet à l'agent de conteneur d'extraire les ressources Systems Manager nécessaires. Pour plus d’informations, consultez Rôle IAM d'exécution de tâche Amazon ECS.

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 donner accès aux paramètres du magasin de paramètres de Systems Manager que vous créez, ajoutez manuellement les autorisations suivantes au rôle d'exécution des tâches. 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" ] } ] }

Création du paramètre Systems Manager

Vous pouvez utiliser la console System Manager pour créer un paramètre Systems Manager Parameter Store pour vos données sensibles. Pour plus d'informations, consultez Créer un paramètre Systems Manager (console) ou Créer un paramètre Systems Manager (AWS CLI) dans le Guide de l'utilisateur AWS Systems Manager .

Ajoutez la variable d'environnement à la définition du conteneur

Dans votre définition de conteneur, spécifiez secrets avec le nom de la variable d'environnement à définir dans le conteneur et l'ARN complet du paramètre Systems Manager Parameter Store contenant les données sensibles à présenter au conteneur. Pour plus d’informations, consultez secrets.

Voici un extrait d'une définition de tâche montrant le format à utiliser lorsque vous référencez un paramètre Systems Manager Parameter Store. Si le paramètre Systems Manager Parameter Store existe dans la même région que la tâche que vous lancez, vous pouvez utiliser le nom ou l'ARN complet du paramètre. Si le paramètre existe dans une autre région, l'ARN complet doit être spécifié.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }

Pour plus d'informations sur la création d'une définition de tâche avec le secret spécifié dans une variable d'environnement, consultezCréation d'une définition de tâche Amazon ECS à l'aide de la console.