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 API les clés tierces. À l'aide de Secrets Manager, vous pouvez stocker et contrôler l'accès à ces secrets de manière centralisée, afin de pouvoir remplacer les informations d'identification codées en dur dans votre code (y compris les mots de passe) par un API appel à 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.
Considérations
Lorsque vous utilisez des références secretsmanager
dynamiques, vous devez tenir compte de quelques considérations de sécurité importantes :
-
La référence dynamique
secretsmanager
peut être utilisée dans toutes les propriétés des ressources. L'utilisation de la référencesecretsmanager
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. -
La mise à jour d'un secret dans Secrets Manager ne met pas automatiquement à jour le secret dans CloudFormation. Pour mettre CloudFormation à jour une référence
secretsmanager
dynamique, vous devez effectuer une mise à jour de pile qui met à jour la ressource contenant la référence dynamique, soit en mettant à jour la propriété de ressource qui contient la référencesecretsmanager
dynamique, soit en mettant à jour une autre propriété de la ressource.Supposons, par exemple, que dans votre modèle, vous spécifiez la
MasterPassword
propriété d'un AWS::RDS::DBInstanceressource pour être une référencesecretsmanager
dynamique, puis créez une pile à partir du modèle. Vous mettez ultérieurement à jour la valeur de ce secret dans Secrets Manager, mais ne mettez pas à jour la ressourceAWS::RDS::DBInstance
dans votre modèle. Dans ce cas, même si vous effectuez une mise à jour de pile, la valeur secrète de la propriétéMasterPassword
n'est pas mise à jour et reste la valeur secrète précédente.Vous pouvez également utiliser Secrets Manager pour faire pivoter automatiquement le secret pour un service et/ou une base de données sécurisés. Pour plus d'informations, veuillez consulter la rubrique Rotation de secrets AWS Secrets Manager.
-
Les références dynamiques pour les valeurs sécurisées, telles que
secretsmanager
, ne sont actuellement pas prises en charge dans les ressources personnalisées.
Autorisations
Pour spécifier un secret stocké dans Secrets Manager, vous devez être autorisé à appeler GetSecretValuepour 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
-
Le nom ou ARN le 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 ARN le secret complet.
Obligatoire.
secret-string
-
La seule valeur prise en charge est
SecretString
. L’argument par défaut estSecretString
. 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'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 pasversion-id
. Si vous ne spécifiez niversion-stage
niversion-id
, alors la version par défaut est la versionAWSCURRENT
.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 pasversion-stage
. Si vous ne spécifiez niversion-stage
niversion-id
, alors la version par défaut est la versionAWSCURRENT
.Ce segment peut ne pas inclure le caractère deux-points (
:
).
Exemples
Rubriques
Extraction des valeurs de nom d'utilisateur et de mot de passe à partir d'un secret
Ce qui suit AWS::RDS::DBInstanceL'exemple récupère les valeurs du nom d'utilisateur et du mot de passe stockées dans le
secret. La version secrète récupérée est la version dont la valeur de stade de version est deMySecret
AWSCURRENT
.
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 permet de récupérer le SecretString
pour
.MySecret
{{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
valeur de la password
version deAWSPREVIOUS
.MySecret
{{resolve:secretsmanager:
MySecret
:SecretString:password
:AWSPREVIOUS
}}
Récupérer les secrets d'un autre Compte AWS
La référence dynamique suivante permet de récupérer le SecretString
pour
qui se trouve dans un autre Compte AWS. Vous devez spécifier le secret complet ARN pour accéder aux secrets d'un autre Compte AWS.MySecret
{{resolve:secretsmanager:
arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret
}}
La référence dynamique suivante permet de récupérer la
valeur correspondant à password
ce qui se trouve dans un autre Compte AWS. Vous devez spécifier le secret complet ARN pour accéder aux secrets d'un autre Compte AWS.MySecret
{{resolve:secretsmanager:
arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret
:SecretString:password
}}