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.
Transmettez les secrets de Secrets Manager via les variables d'environnement Amazon ECS
Lorsque vous injectez un secret en tant que variable d'environnement, vous pouvez spécifier le contenu complet d'un secret, une clé JSON spécifique dans un secret ou une version spécifique d'un secret à injecter. Cela vous aide à contrôler les données sensibles exposées à votre conteneur. Pour plus d'informations sur le contrôle des versions secrètes, voir Que contient un secret de Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur.
Les points suivants doivent être pris en compte lors de l'utilisation d'une variable d'environnement pour injecter un secret Secrets 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, tenez compte des points suivants :
-
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 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) ou1.0.0
(Windows). Pour plus d’informations, veuillez consulter Versions de la plateforme Fargate pour Amazon ECS.
-
-
Pour les tâches Amazon ECS sur EC2, les points suivants doivent être pris 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é et connectez-vous à Secrets Manager via un sous-réseau privé. Vous devez créer les points de terminaison d'un VPC pour Secrets 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 Secrets Manager . Pour plus d'informations sur l'utilisation de Secrets Manager et d'Amazon VPC, consultez Comment se connecter au service Secrets Manager au sein d'un Amazon VPC
. -
Pour les tâches Windows configurées pour utiliser le pilote de journalisation
awslogs
, vous devez également définir la variable d'environnementECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE
sur votre instance de conteneur. Utilisez la syntaxe suivante :<powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>
-
Votre définition de tâche doit utiliser un rôle d'exécution de tâche doté des autorisations supplémentaires pour Secrets Manager. Pour de plus amples informations, veuillez consulter Rôle IAM d'exécution de tâche Amazon ECS.
Créez le secret AWS Secrets Manager .
Vous pouvez utiliser la console Secrets Manager afin de créer un secret pour vos données sensibles. Pour plus d'informations, voir Création d'un AWS Secrets Manager secret dans le guide de AWS Secrets Manager l'utilisateur.
Ajoutez la variable d'environnement à la définition du conteneur
Dans votre définition de conteneur, vous pouvez spécifier les éléments suivants :
-
Objet
secrets
contenant le nom de la variable d'environnement à définir dans le conteneur -
Amazon Resource Name (ARN) du secret Secrets Manager
-
Paramètres supplémentaires contenant les données sensibles à présenter au conteneur
L'exemple suivant montre la syntaxe complète qui doit être spécifiée pour le secret Secrets Manager.
arn:aws:secretsmanager:
region
:aws_account_id
:secret:secret-name
:json-key
:version-stage
:version-id
La section suivante décrit les paramètres supplémentaires. Ces paramètres sont facultatifs, mais si vous ne les utilisez pas, vous devez inclure les deux-points :
pour utiliser les valeurs par défaut. Des exemples sont donnés ci-dessous pour plus de contexte.
json-key
-
Spécifie le nom de la clé dans une paire clé-valeur avec la valeur que vous souhaitez définir comme valeur de variable d'environnement. Seules les valeurs au format JSON sont prises en charge. Si vous ne spécifiez pas de clé JSON, le contenu complet du secret est utilisé.
version-stage
-
Spécifie l'étiquette intermédiaire de la version d'un secret que vous souhaitez utiliser. Si une étiquette intermédiaire de version est spécifiée, vous ne pouvez pas spécifier d'ID de version. Si aucune étape de version n'est spécifiée, le comportement par défaut consiste à récupérer le secret avec l'étiquette
AWSCURRENT
intermédiaire.Les étiquettes intermédiaires sont utilisées pour suivre les différentes versions d'un secret lorsqu'elles sont mises à jour ou font l'objet d'une rotation. Chaque version d'un secret a une ou plusieurs étiquettes intermédiaires et un ID. Pour plus d'informations, veuillez consulter la rubrique Concepts et termes clés pour AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .
version-id
-
Spécifie l'identifiant unique de la version du secret que vous souhaitez utiliser. Si un ID de version est spécifié, vous ne pouvez pas spécifier d'étiquette intermédiaire de version. Si aucun ID de version n'est spécifié, le comportement par défaut consiste à récupérer le secret avec l'étiquette
AWSCURRENT
intermédiaire.IDs Les versions sont utilisées pour suivre les différentes versions d'un secret lors de leur mise à jour ou de leur rotation. Chaque version d'un secret a un ID. Pour plus d'informations, veuillez consulter la rubrique Concepts et termes clés pour AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .
Exemples de définitions de conteneur
Les exemples suivants montrent comment vous pouvez référencer des secrets Secrets Manager dans vos définitions de conteneur.
Exemple référencement d'un secret complet
Voici un extrait d'une définition de tâche montrant le format lorsque vous référencez le texte complet d'un secret Secrets Manager.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name-AbCdEf
" }] }] }
Pour accéder à la valeur de ce secret depuis le conteneur, vous devez appeler $environment_variable_name
.
Exemple référencement d'une clé spécifique dans un secret
Voici un exemple de sortie d'une get-secret-valuecommande qui affiche le contenu d'un secret ainsi que le libellé de la version intermédiaire et l'ID de version qui lui sont associés.
{ "ARN": "arn:aws:secretsmanager:
region
:aws_account_id
:secret:appauthexample-AbCdEf
", "Name": "appauthexample
", "VersionId": "871d9eca-18aa-46a9-8785-981ddEXAMPLE
", "SecretString": "{\"username1
\":\"password1
\",\"username2
\":\"password2
\",\"username3
\":\"password3
\"}", "VersionStages": [ "AWSCURRENT
" ], "CreatedDate": 1581968848.921 }
Référence d'une clé spécifique de la sortie précédente dans une définition de conteneur en spécifiant le nom de la clé à la fin de l'ARN.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
::" }] }] }
Exemple référencement d'une version secrète spécifique
Voici un exemple de sortie d'une commande describe-secret qui affiche le contenu non chiffré d'un secret ainsi que les métadonnées de toutes les versions du secret.
{ "ARN": "arn:aws:secretsmanager:
region
:aws_account_id
:secret:appauthexample-AbCdEf
", "Name": "appauthexample
", "Description": "Example of a secret containing application authorization data.", "RotationEnabled": false, "LastChangedDate": 1581968848.926, "LastAccessedDate": 1581897600.0, "Tags": [], "VersionIdsToStages": { "871d9eca-18aa-46a9-8785-981ddEXAMPLE
": [ "AWSCURRENT
" ], "9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE
": [ "AWSPREVIOUS
" ] } }
Référence d'une étiquette intermédiaire de version spécifique à partir de la sortie précédente dans une définition de conteneur en spécifiant le nom de la clé à la fin de l'ARN.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
::AWSPREVIOUS
:" }] }] }
Référence un ID de version spécifique de la sortie précédente dans une définition de conteneur en spécifiant le nom de clé à la fin de l'ARN.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE
" }] }] }
Exemple référencement d'une clé spécifique et d'une étiquette intermédiaire de version d'un secret
Ce qui suit montre comment référencer à la fois une clé spécifique dans une étiquette secrète et une étiquette de mise en scène de version spécifique.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
:AWSPREVIOUS
:" }] }] }
Pour spécifier une clé et un ID de version spécifiques, utilisez la syntaxe suivante.
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE
" }] }] }
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.