Obtenir un secret ou une valeur secrète à partir du 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 à partir du Secrets Manager

Secrets Manager est un service qui vous permet de stocker et de gérer en toute sécurité des informations confidentielles telles que les identifiants de base de données, les mots de passe et les clés 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, consultez Présentation de AWS Secrets Manager dans le Guide de l’utilisateur AWS Secrets Manager.

Pour utiliser l’intégralité des secrets ou des valeurs secrètes stockés dans Secrets Manager dans vos modèles CloudFormation, vous utilisez des références dynamiques secretsmanager.

Bonnes pratiques

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

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

  • Tirez parti de la rotation automatique : utilisez la fonctionnalité 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 nécessiter de modifications du modèle. Pour plus d’informations, consultez la rubrique Rotation de secrets AWS Secrets Manager.

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

Considérations

Lorsque vous utilisez des références secretsmanager dynamiques, il est important de garder à l’esprit les considérations suivantes :

  • CloudFormation ne garde pas trace de la version d’un secret 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 afin de tirer parti de la rotation automatique du secret. Surveillez et validez les mises à jour des ressources lorsque vous apportez des modifications aux configurations de références dynamiques, par exemple lors du passage de références dynamiques non versionnées à des références dynamiques versionnées, et inversement.

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

    Par exemple, supposons que votre modèle inclut une ressource AWS::RDS::DBInstance dont la propriété MasterPassword est définie sur une référence dynamique Secrets Manager. Après avoir créé une pile à partir de ce modèle, vous mettez à jour la valeur du secret dans Secrets Manager. Cependant, la propriété MasterPassword conserve l’ancienne valeur du mot de passe.

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

    Pour éviter ce processus manuel à l’avenir, envisagez d’utiliser Secrets Manager pour faire tourner automatiquement le secret.

  • Les références dynamiques pour des valeurs sécurisées, telles que secretsmanager, 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 dynamique secretsmanager indique que ni Secrets Manager ni les journaux CloudFormation ne conserveront une valeur de secret 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 disposer des autorisations nécessaires pour appeler le GetSecretValue du secret.

Modèle de référence

Pour référencer les secrets Secrets Manager dans votre modèle CloudFormation, utilisez le modèle de référence secretsmanager 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 dans votre Compte AWS, il vous suffit de spécifier le nom du secret. Pour accéder à un secret dans un autre Compte AWS, spécifiez l’ARN complet du secret.

Obligatoire.

secret-string

La seule valeur prise en charge est SecretString. La valeur 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 de json-key, CloudFormation récupère l'ensemble du texte du 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

Récupération des valeurs de nom d’utilisateur et de mot de passe à partir d’un secret

Le AWS::RDS::DBInstance suivant récupère les valeurs du nom d’utilisateur et du mot de passe stockées dans le secret MySecret. Cet exemple montre le modèle recommandé pour les références dynamiques sans version, qui utilise automatiquement la version AWSCURRENT et prend en charge les workflows de rotation Secrets Manager sans nécessiter de modifications du 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é de SecretString

La référence dynamique suivante permet de récupérer le SecretString pour MySecret.

{{resolve:secretsmanager:MySecret}}

Autrement :

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

Extraction d’une valeur d’une version spécifique d’un secret

La référence dynamique suivante récupère la valeur password de la version AWSPREVIOUS de MySecret.

{{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 complet du secret pour accéder aux secrets dans un autre Compte AWS.

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

La référence dynamique suivante récupère la valeur password pour MySecret qui se trouve dans un autre Compte AWS. Vous devez spécifier l’ARN complet du secret pour accéder aux secrets dans un autre Compte AWS.

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