Spécification de données sensibles à l'aide de Secrets Manager - AWS Batch

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 Manager

Avec AWS Batch, vous pouvez injecter des données sensibles dans vos tâches en stockant vos données sensibles en AWS Secrets Manager secret, puis en les référençant dans votre définition de tâche. Les données sensibles stockées dans les secrets de Secrets Manager peuvent être exposées à une tâche sous forme de variables d'environnement ou dans le cadre de la configuration du journal.

Lorsque vous injectez un secret en tant que variable d'environnement, vous pouvez spécifier une clé JSON ou une version d'un secret à injecter. Ce processus vous permet de contrôler les données sensibles exposées à votre travail. Pour de plus amples informations sur la gestion des versions de secrets, veuillez consulter Termes et concepts clés pour AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .

Considérations relatives à la spécification des données sensibles en utilisant Secrets Manager

Les points suivants doivent être pris en compte lors de l'utilisation de Secrets Manager pour spécifier des données sensibles pour des tâches.

  • Pour injecter un secret à l'aide d'une clé JSON ou d'une version spécifique d'un secret, la version 1.37.0 ou ultérieure de l'agent de conteneur Amazon ECS doit être installée sur l'instance de conteneur de votre environnement informatique. 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 vers la dernière version, consultez la section Mise à jour de l'agent de conteneur Amazon ECS dans le manuel Amazon Elastic Container Service Developer Guide.

    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 disposer de la version 1.23.0 ou ultérieure de l'agent de conteneur.

  • Seuls les secrets qui stockent des données texte, qui sont des secrets créés avec le SecretString paramètre de l'CreateSecretAPI, sont pris en charge. Les secrets qui stockent des données binaires, qui sont des secrets créés avec le SecretBinary paramètre de l'CreateSecretAPI, ne sont pas pris en charge.

  • Lorsque vous utilisez une définition de tâche qui fait référence aux secrets de Secrets Manager pour récupérer des données sensibles pour vos tâches, si vous utilisez également des points de terminaison VPC d'interface, vous devez créer les points de terminaison VPC d'interface pour Secrets Manager. Pour de plus amples informations, veuillez consulter Utilisation de Secrets Manager avec des points de terminaison de VPC dans le Guide de l'utilisateur AWS Secrets Manager .

  • Des données sensibles sont injectées dans votre tâche lors de son lancement initial. Si le secret est ensuite mis à jour ou pivoté, la tâche ne reçoit pas automatiquement la valeur mise à jour. Vous devez lancer une nouvelle tâche pour forcer le service à lancer une nouvelle tâche avec la valeur secrète mise à jour.

Autorisations IAM requises pour les secrets AWS Batch

Pour utiliser cette fonctionnalité, vous devez disposer du rôle d'exécution et le référencer dans votre définition de tâche. Cela permet à l'agent de conteneur d'extraire les ressources Secrets Manager nécessaires. Pour plus d’informations, consultez AWS Batch IAMrôle d'exécution.

Pour donner accès aux secrets de Secrets Manager que vous créez, ajoutez manuellement les autorisations suivantes en tant que politique intégrée au rôle d'exécution. Pour plus d'informations, consultez la section Ajout et suppression de politiques IAM dans le guide de l'utilisateur IAM.

  • secretsmanager:GetSecretValue : obligatoire si vous faites référence à un secret Secrets Manager.

  • kms:Decrypt : obligatoire uniquement si votre secret utilise une clé KMS personnalisée et non la clé par défaut. L'ARN de votre clé personnalisée doit être ajouté en tant que ressource.

L'exemple suivant de politique en ligne ajoute les autorisations requises.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

Injection de données sensibles sous la forme d'une variable d'environnement

Dans votre définition de tâche, vous pouvez spécifier les éléments suivants :

  • L'secretsobjet contenant le nom de la variable d'environnement à définir dans le job

  • Amazon Resource Name (ARN) du secret Secrets Manager

  • Paramètres supplémentaires contenant les données sensibles à présenter à la tâche

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. Toutefois, 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, consultez la section Termes et concepts clés de AWS Secrets Manager dans le guide de AWS Secrets Manager l'utilisateur.

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.

Les ID de version sont utilisés 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 un ID. Pour plus d'informations, consultez la section Termes et concepts clés de AWS Secrets Manager dans le guide de AWS Secrets Manager l'utilisateur.

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.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }
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-981dd39ab30c",
    "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.

{ "containerProperties": [{ "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-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "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.

{ "containerProperties": [{ "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.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }
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.

{ "containerProperties": [{ "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.

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8" }] }] }

Injection de données sensibles dans une configuration de journal

Dans votre définition de tâche, lorsque logConfiguration vous spécifiez un, vous pouvez spécifier secretOptions le nom de l'option de pilote de journal à définir dans le conteneur et l'ARN complet du secret Secrets Manager contenant les données sensibles à présenter au conteneur.

Ce qui suit est un extrait d'une définition de tâche indiquant le format lors de la référence à un secret de Secrets Manager.

{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080" }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }] }

Création d'un AWS Secrets Manager secret

Vous pouvez utiliser la console Secrets Manager afin de créer un secret pour vos données sensibles. Pour plus d'informations, veuillez consulter la rubrique Didacticiel : création et récupération d'un secret dans le Guide de l'utilisateur AWS Secrets Manager .

Pour créer un secret basique

Utilisez Secrets Manager afin de créer un secret pour vos données sensibles.

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

  2. Choisissez Store a new secret (Stocker un nouveau secret).

  3. Pour Select secret type (Sélectionner un type de secret), choisissez Other type of secrets (Autre type de secrets).

  4. Précisez les détails de votre secret personnalisé sous forme de paires de Key (Clé) et Value (Valeur). Par exemple, vous pouvez spécifier la clé UserName, puis fournir le nom d'utilisateur approprié comme valeur. Ajoutez une deuxième clé avec le nom Password et le texte du mot de passe comme valeur. Vous pouvez également ajouter des entrées pour un nom de base de données, une adresse de serveur ou un port TCP. Vous pouvez ajouter autant de paires que nécessaire pour stocker les informations dont vous avez besoin.

    Vous pouvez également choisir l'onglet Plaintext (Texte brut) et saisir la valeur du secret comme vous le souhaitez.

  5. Choisissez la clé de AWS KMS chiffrement que vous souhaitez utiliser pour chiffrer le texte protégé dans le secret. Si vous ne choisissez aucune clé, Secrets Manager vérifie s'il existe une clé par défaut pour le compte et l'utilise si c'est le cas. S'il n'existe aucune clé par défaut, Secrets Manager en crée une automatiquement. Vous pouvez également choisir Add new key (Ajouter une clé) pour créer une clé KMS personnalisée spécifiquement pour ce secret. Pour créer votre propre clé KMS, vous devez être autorisé à créer des clés KMS dans votre compte.

  6. Choisissez Suivant.

  7. Pour Secret name (Nom du secret), saisissez un chemin facultatif et un nom, comme production/MyAwesomeAppSecret ou development/TestSecret, puis choisissez Next (Suivant). Vous pouvez éventuellement ajouter une description pour vous aider à vous souvenir de la finalité de ce secret ultérieurement.

    Le nom du secret doit contenir uniquement des lettres ASCII, des chiffres ou les caractères suivants : /_+=.@-

  8. (Facultatif) À ce stade, vous pouvez configurer la rotation de votre secret. Pour cette procédure, gardez l'option Disable automatic rotation (Désactiver la rotation automatique) et choisissez Next (Suivant).

    Pour plus d'informations sur la façon de configurer la rotation sur des secrets nouveaux ou existants, voir Rotation de vos AWS Secrets Manager secrets.

  9. Vérifiez vos paramètres, puis choisissez Store secret (Stocker le secret) pour enregistrer tous les éléments que vous avez saisis en tant que nouveau secret dans Secrets Manager.