Spécification de données sensibles à l'aide de secrets de Secrets Manager - 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.

Spécification de données sensibles à l'aide de secrets de Secrets Manager

Amazon ECS vous permet d'injecter des données sensibles dans vos conteneurs en les stockant en AWS Secrets Manager secret, puis en les référençant dans la définition de votre conteneur. Pour plus d’informations, consultez Transmission de données sensibles à un conteneur.

Le didacticiel suivant montre comment créer un secret Secrets Manager, référencer le secret dans une définition de tâche Amazon ECS, puis vérifier que cela fonctionné en interrogeant la variable d'environnement dans un conteneur montrant le contenu du secret.

Prérequis

Le didacticiel suppose de remplir les prérequis suivants :

  • Vous devez avoir suivi les étapes de Configurer l'utilisation d'Amazon ECS.

  • Votre AWS utilisateur dispose des autorisations IAM requises pour créer les ressources Secrets Manager et Amazon ECS décrites.

Étape 1 : Créer un secret Secrets Manager

Vous pouvez utiliser la console Secrets Manager afin de créer un secret pour vos données sensibles. Dans ce didacticiel, nous allons créer un secret de base pour stocker un nom d'utilisateur et un mot de passe à référencer ultérieurement dans un conteneur. Pour plus d'informations, consultez Didacticiel : création et récupération d'un secret dans le Guide de l'utilisateur AWS Secrets Manager .

Les paires clé/valeur à stocker dans ce secret sont la valeur de la variable d'environnement dans votre conteneur à la fin du didacticiel.

Enregistrez l'ARN secret pour le référencer dans votre politique IAM d'exécution de tâche et dans la définition de tâche lors des étapes ultérieures.

Étape 2 : Mettre à jour votre rôle IAM d'exécution de tâche

Pour permettra à Amazon ECS de récupérer les données sensibles à partir de votre secret Secrets Manager, vous devez avoir le rôle d'exécution de tâche Amazon ECS et y faire référence dans votre définition de tâche. Cela permet à l'agent de conteneur d'extraire les ressources Secrets Manager nécessaires. Si vous n'avez pas encore créé votre rôle d'exécution de tâche IAM, consultez Rôle IAM d'exécution de tâche Amazon ECS.

Les étapes suivantes impliquent que vous ayez déjà créé et correctement configuré le rôle IAM d'exécution de tâche.

Pour mettre à jour votre rôle IAM d'exécution de tâche

Utilisez la console IAM pour mettre à jour votre rôle d'exécution de tâche avec les autorisations requises.

  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, sélectionnez Rôles.

  3. Recherchez ecsTaskExecutionRole dans la liste des rôles et sélectionnez-le.

  4. Choisissez Permissions (Autorisations), Add inline policy (Ajouter une politique en ligne).

  5. Choisissez l'onglet JSON et saisissez le texte JSON suivant, en veillant à spécifier l'ARN complet du secret Secrets Manager que vous avez créé à l'étape 1.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:username_value" ] } ] }
  6. Choisissez Review policy (Examiner une politique). Dans Name (Nom), spécifiez ECSSecretsTutorial, puis choisissez Create policy (Créer une politique).

Étape 3 : Créer une définition de tâche Amazon ECS

Vous pouvez utiliser la console Amazon ECS pour créer une définition de tâche qui fait référence à un secret Secrets Manager.

Pour créer une définition de tâche qui spécifie un secret

Utilisez la console IAM pour mettre à jour votre rôle d'exécution de tâche avec les autorisations requises.

  1. Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2.

  2. Dans le panneau de navigation, choisissez Task definitions (Définition des tâches).

  3. Choisissez Create new task definition (Créer une nouvelle définition de tâche), puis Create new task definition with JSON (Créer une nouvelle définition de tâche avec JSON).

  4. Dans la zone de l'éditeur JSON, saisissez le texte JSON de définition de tâche suivant, en veillant à spécifier l'ARN complet du secret Secrets Manager que vous avez créée à l'étape 1 et le rôle IAM d'exécution de tâche que vous avez mis à jour à l'étape 2. Choisissez Enregistrer.

  5. { "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  6. Choisissez Créer.

Étape 4 : Créer un cluster Amazon ECS

Vous pouvez utiliser la console Amazon ECS pour créer un cluster contenant une instance de conteneur pour exécuter la tâche. Si vous avez un cluster existant avec au moins une instance de conteneur enregistrée avec les ressources disponibles pour exécuter une instance de la définition de tâche créée pour ce didacticiel, vous pouvez passer à l'étape suivante.

Pour ce didacticiel, nous allons créer un cluster avec une instance de conteneur t2.micro à l'aide de l'AMI Amazon Linux 2 optimisée pour Amazon ECS.

Pour plus d'informations sur la création d'un cluster pour le type de lancement EC2, consultez la section Création d'un cluster pour le type de lancement Amazon EC2 à l'aide de la console.

Étape 5 : Exécuter une tâche Amazon ECS

Vous pouvez utiliser la console Amazon ECS pour exécuter une tâche avec la définition de tâche que vous avez créée. Dans le cadre de ce didacticiel, nous allons exécuter une tâche à l'aide du type de lancement EC2, à l'aide du cluster que nous avons créé lors de l'étape précédente.

Pour plus d'informations sur l'exécution d’une tâche, consultez Exécuter une application en tant que tâche Amazon ECS.

Étape 6 : Vérification

Vous pouvez vérifier que toutes les étapes ont été effectuées avec succès et que la variable d'environnement a été créée correctement dans votre conteneur en suivant les étapes ci-dessous.

Vérifier que la variable d'environnement a été créée
  1. Trouvez l'adresse IP publique ou DNS pour votre instance de conteneur.

    1. Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2.

    2. Dans le volet de navigation, choisissez Clusters, puis sélectionnez le cluster que vous avez créé.

    3. Choisissez Infrastructure, puis choisissez l'instance de conteneur.

    4. Enregistrez l'adresse Public IP (IP publique) ou Public DNS (DNS public) de votre instance.

  2. Si vous utilisez un ordinateur MacOS ou Linux, connectez-vous à votre instance avec la commande suivante, en indiquant le chemin d'accès de votre clé privée et l'adresse publique de votre instance :

    $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

    Pour plus d'informations sur l'utilisation d'un ordinateur Windows, veuillez consulter Se connecter à votre instance Linux à partir de Windows à l'aide de PuTTY dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

    Important

    Pour plus d'informations sur les problèmes que vous pouvez rencontrer lors de la connexion à votre instance, veuillez consulter Résolution de la connexion à votre instance dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

  3. Répertoriez les conteneurs en cours d'exécution sur l'instance. Notez l'ID de conteneur pour le conteneur ecs-secrets-tutorial.

    docker ps
  4. Connectez-vous au conteneur ecs-secrets-tutorial à l'aide de l'ID conteneur à partir du résultat de l'étape précédente.

    docker exec -it container_ID /bin/bash
  5. Utilisez la commande echo pour imprimer la valeur de la variable d'environnement.

    echo $username_value

    Si le didacticiel s'est correctement déroulé, vous devriez voir le résultat suivant :

    password_value
    Note

    Sinon, vous pouvez répertorier toutes les variables d'environnement dans votre conteneur à l'aide de la commande env (ou printenv).

Étape 7 : Nettoyer

Une fois que vous avez terminé ce didacticiel, vous devez nettoyer les ressources qui lui sont associées afin d'éviter la facturation de frais pour des ressources inutilisées.

Nettoyer les ressources.
  1. Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2.

  2. Dans le panneau de navigation, choisissez Clusters.

  3. Sur la page Clusters, choisissez le cluster.

  4. Choisissez Delete Cluster (Supprimer le cluster).

  5. Dans la zone de confirmation, saisissez delete nom du cluster, puis choisissez Supprimer.

  6. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  7. Dans le panneau de navigation, sélectionnez Rôles.

  8. Recherchez ecsTaskExecutionRole dans la liste des rôles et sélectionnez-le.

  9. Choisissez Permissions, puis le X à côté d'ECS SecretsTutorial. Sélectionnez Remove (Supprimer).

  10. Ouvrez la console Secrets Manager à l'adresse https://console.aws.amazon.com/secretsmanager/.

  11. Sélectionnez le secret username_value que vous avez créé, puis choisissez Actions, Delete secret (Supprimer le secret).