Obtenir un secret ou une valeur secrète auprès de Secrets Manager - AWS CloudFormation

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.

Obtenir un secret ou une valeur secrète auprès de Secrets Manager

Secrets Manager est un service qui vous permet de stocker et de gérer en toute sécurité des secrets tels que les informations d'identification de base de données, les mots de passe et les clés d'API tierces. Secrets Manager vous permet de stocker et de contrôler l'accès à ces secrets de manière centralisée, de sorte que vous pouvez remplacer les informations d'identification codées en dur dans votre code (y compris les mots de passe) par un appel d'API à Secrets Manager pour récupérer le secret par programmation. Pour plus d'informations, voir Qu'est-ce que c'est AWS Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur.

Pour utiliser des secrets complets ou des valeurs secrètes stockées dans Secrets Manager dans vos CloudFormation modèles, vous devez utiliser des références secretsmanager dynamiques.

Bonnes pratiques

Suivez ces bonnes pratiques lorsque vous utilisez les références dynamiques de Secrets Manager dans vos CloudFormation modèles :

  • Utilisez des références sans version pour vos CloudFormation modèles : stockez les informations d'identification dans Secrets Manager et utilisez des références dynamiques sans spécifier version-stage ni version-id paramètres pour prendre en charge les flux de travail de rotation secrets appropriés.

  • Tirez parti de la rotation automatique : utilisez la fonction de rotation automatique de Secrets Manager avec des références dynamiques sans version pour la gestion des informations d'identification. Cela garantit que vos informations d'identification sont régulièrement mises à jour sans qu'il soit nécessaire de modifier le modèle. Pour plus d'informations, veuillez consulter la rubrique Rotation de secrets AWS Secrets Manager.

  • Utilisez les références versionnées avec parcimonie : spécifiez uniquement des informations explicites version-stage ou des version-id paramètres pour des scénarios spécifiques, tels que des tests ou des situations de restauration.

Considérations

Lorsque vous utilisez des références secretsmanager dynamiques, vous devez tenir compte de certaines considérations importantes :

  • CloudFormation ne permet pas de savoir quelle version d'un secret a été utilisée lors des déploiements précédents. Planifiez soigneusement votre stratégie de gestion des secrets avant de mettre en œuvre des références dynamiques. Utilisez des références sans version lorsque cela est possible pour tirer parti de la rotation automatique des secrets. Surveillez et validez les mises à jour des ressources lorsque vous modifiez des configurations de référence dynamiques, par exemple lors de la transition de références dynamiques non versionnées à des références dynamiques versionnées, et vice versa.

  • La mise à jour de la seule valeur secrète dans Secrets Manager n' CloudFormation entraîne pas automatiquement la récupération de la nouvelle valeur. CloudFormation récupère la valeur secrète uniquement lors de la création de la ressource ou des mises à jour qui modifient la ressource contenant la référence dynamique.

    Supposons, par exemple, que votre modèle inclut une AWS::RDS::DBInstanceressource dont la MasterPassword propriété est définie sur une référence dynamique Secrets Manager. Après avoir créé une pile à partir de ce modèle, vous devez mettre à jour la valeur du secret dans Secrets Manager. Toutefois, la MasterPassword propriété conserve l'ancienne valeur du mot de passe.

    Pour appliquer la nouvelle valeur secrète, vous devez modifier la AWS::RDS::DBInstance ressource dans votre CloudFormation modèle et effectuer une mise à jour de la pile.

    Pour éviter ce processus manuel à l'avenir, pensez à utiliser Secrets Manager pour faire automatiquement pivoter le secret.

  • Les références dynamiques pour les valeurs sécurisées, telles quesecretsmanager, ne sont actuellement pas prises en charge dans les ressources personnalisées.

  • La référence dynamique secretsmanager peut être utilisée dans toutes les propriétés des ressources. L'utilisation de la référence secretsmanager dynamique indique que ni Secrets Manager ni CloudFormation les journaux ne doivent conserver de valeur secrète résolue. Toutefois, la valeur du secret peut s'afficher dans le service qui possède la ressource où elle est utilisée. Passez en revue vos données d'utilisation pour éviter toute fuite des données de secret.

Autorisations

Pour spécifier un secret stocké dans Secrets Manager, vous devez être autorisé à GetSecretValuedemander le secret.

Modèle de référence

Pour référencer les secrets de Secrets Manager dans votre CloudFormation modèle, utilisez le modèle secretsmanager de référence suivant.

{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
secret-id

Nom ou ARN du secret.

Pour accéder à un secret qui se trouve dans votre Compte AWS répertoire, il vous suffit de spécifier le nom du secret. Pour accéder à un secret dans un autre Compte AWS format, spécifiez l'ARN complet du secret.

Obligatoire.

secret-string

La seule valeur prise en charge est SecretString. L’argument par défaut est SecretString.

json-key

Le nom de clé de la paire clé-valeur dont vous voulez récupérer la valeur. Si vous ne spécifiez pas dejson-key, CloudFormation récupère l'intégralité du texte secret.

Ce segment peut ne pas inclure le caractère deux-points (: ).

version-stage

L'étiquette intermédiaire de la version du secret à utiliser. Secrets Manager utilise des étiquettes intermédiaires pour assurer le suivi des différentes versions pendant le processus de rotation. Si vous utilisez version-stage, ne spécifiez pas version-id. Si vous ne spécifiez ni version-stage ni version-id, alors la version par défaut est la version AWSCURRENT.

Ce segment peut ne pas inclure le caractère deux-points (: ).

version-id

L'identifiant unique de la version du secret à utiliser. Si vous spécifiez version-id, ne spécifiez pas version-stage. Si vous ne spécifiez ni version-stage ni version-id, alors la version par défaut est la version AWSCURRENT.

Ce segment peut ne pas inclure le caractère deux-points (: ).

Exemples

Extraction des valeurs de nom d'utilisateur et de mot de passe à partir d'un secret

L'AWS::RDS::DBInstanceexemple suivant récupère les valeurs du nom d'utilisateur et du mot de passe stockées dans le MySecret secret. Cet exemple montre le modèle recommandé pour les références dynamiques sans version, qui utilise automatiquement la AWSCURRENT version et prend en charge les flux de travail de rotation de Secrets Manager sans qu'il soit nécessaire de modifier le modèle.

JSON

{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:MySecret:SecretString:username}}", "MasterUserPassword": "{{resolve:secretsmanager:MySecret:SecretString:password}}" } } }

YAML

MyRDSInstance: Type: AWS::RDS::DBInstance Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MySecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MySecret:SecretString:password}}'

Récupération de l'intégralité SecretString

La référence dynamique suivante extrait le SecretString pourMySecret.

{{resolve:secretsmanager:MySecret}}

Autrement :

{{resolve:secretsmanager:MySecret::::}}

Récupération d'une valeur à partir d'une version spécifique d'un secret

La référence dynamique suivante extrait la password valeur de la AWSPREVIOUS version deMySecret.

{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}

Récupérer les secrets d'un autre Compte AWS

La référence dynamique suivante récupère le SecretString pour MySecret qui se trouve dans un autre Compte AWS. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre Compte AWS.

{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}

La référence dynamique suivante permet de récupérer la password valeur correspondant à MySecret ce qui se trouve dans un autre Compte AWS. Vous devez spécifier l'ARN secret complet pour accéder aux secrets d'un autre Compte AWS.

{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}