Holen Sie sich einen geheimen oder geheimen Wert von Secrets Manager - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Holen Sie sich einen geheimen oder geheimen Wert von Secrets Manager

Secrets Manager ist ein Dienst, mit dem Sie Geheimnisse wie Datenbankanmeldedaten, Passwörter und API-Schlüssel von Drittanbietern sicher speichern und verwalten können. Mit Secrets Manager können Sie den Zugriff auf diese Geheimnisse zentral speichern und steuern, sodass Sie hartcodierte Anmeldeinformationen in Ihrem Code (einschließlich Passwörtern) durch einen API-Aufruf an Secrets Manager ersetzen können, um das Geheimnis programmgesteuert abzurufen. Weitere Informationen finden Sie unter Was ist AWS Secrets Manager? im AWS Secrets Manager Benutzerhandbuch.

Um ganze Geheimnisse oder geheime Werte, die in Secrets Manager gespeichert sind, in Ihren CloudFormation Vorlagen zu verwenden, verwenden Sie secretsmanager dynamische Verweise.

Bewährte Methoden

Folgen Sie diesen bewährten Methoden, wenn Sie dynamische Secrets Manager Manager-Referenzen in Ihren CloudFormation Vorlagen verwenden:

  • Verwenden Sie versionslose Referenzen für Ihre CloudFormation Vorlagen — Speichern Sie Anmeldeinformationen in Secrets Manager und verwenden Sie dynamische Verweise ohne Angabe von version-stage version-id Parametern, um korrekte Workflows für die geheime Rotation zu unterstützen.

  • Nutzen Sie die automatische Rotation — Verwenden Sie die automatische Rotationsfunktion von Secrets Manager mit versionslosen dynamischen Referenzen für die Verwaltung von Anmeldeinformationen. Dadurch wird sichergestellt, dass Ihre Anmeldeinformationen regelmäßig aktualisiert werden, ohne dass Änderungen an der Vorlage erforderlich sind. Weitere Informationen finden Sie unter Drehen von AWS Secrets Manager Geheimnissen.

  • Verwenden Sie versionierte Verweise sparsam — Geben Sie nur explizite version-stage oder version-id Parameter für bestimmte Szenarien wie Test- oder Rollback-Situationen an.

Überlegungen

Bei der Verwendung secretsmanager dynamischer Verweise sind wichtige Überlegungen zu beachten:

  • CloudFormation verfolgt nicht, welche Version eines Geheimnisses in früheren Bereitstellungen verwendet wurde. Planen Sie Ihre Strategie zur Verwaltung geheimer Daten sorgfältig, bevor Sie dynamische Verweise implementieren. Verwenden Sie nach Möglichkeit versionslose Referenzen, um die automatische geheime Rotation zu nutzen. Überwachen und validieren Sie Ressourcenaktualisierungen, wenn Sie Änderungen an dynamischen Referenzkonfigurationen vornehmen, z. B. beim Übergang von unversionierten zu versionierten dynamischen Referenzen und umgekehrt.

  • Wenn nur der geheime Wert in Secrets Manager aktualisiert wird CloudFormation , wird der neue Wert nicht automatisch abgerufen. CloudFormation ruft den geheimen Wert nur bei der Ressourcenerstellung oder bei Aktualisierungen ab, bei denen die Ressource geändert wird, die die dynamische Referenz enthält.

    Nehmen wir zum Beispiel an, Ihre Vorlage enthält eine AWS::RDS::DBInstanceRessource, bei der die MasterPassword Eigenschaft auf eine dynamische Secrets Manager Manager-Referenz gesetzt ist. Nachdem Sie einen Stack aus dieser Vorlage erstellt haben, aktualisieren Sie den Wert des Secrets in Secrets Manager. Die MasterPassword Eigenschaft behält jedoch den alten Passwortwert bei.

    Um den neuen geheimen Wert anzuwenden, müssen Sie die AWS::RDS::DBInstance Ressource in Ihrer CloudFormation Vorlage ändern und ein Stack-Update durchführen.

    Um diesen manuellen Prozess in future zu vermeiden, sollten Sie in Erwägung ziehen, Secrets Manager zu verwenden, um das Geheimnis automatisch zu rotieren.

  • Dynamische Verweise auf sichere Werte, wie z. B.secretsmanager, werden derzeit in benutzerdefinierten Ressourcen nicht unterstützt.

  • Die dynamische secretsmanager-Referenz kann in allen Ressourceneigenschaften verwendet werden. Die Verwendung der secretsmanager dynamischen Referenz bedeutet, dass weder Secrets Manager noch CloudFormation Protokolle einen aufgelösten geheimen Wert beibehalten sollten. Der Geheimnis-Wert kann jedoch in dem Service erscheinen, in dessen Ressource er verwendet wird. Überprüfen Sie Ihre Nutzung um zu vermeiden, dass Geheimnis-Daten preisgegeben werden.

Berechtigungen

Um ein in Secrets Manager gespeichertes Geheimnis anzugeben, müssen Sie berechtigt sein, das Geheimnis abzurufen GetSecretValue.

Referenzmuster

Verwenden Sie das folgende Referenzmuster, um Secrets Manager-Geheimnisse in Ihrer CloudFormation Vorlage zu secretsmanager referenzieren.

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

Der Name oder ARN des Secrets.

Um auf ein Geheimnis in Ihrem zuzugreifen AWS-Konto, müssen Sie nur den geheimen Namen angeben. Um auf ein Geheimnis in einem anderen zuzugreifen AWS-Konto, geben Sie den vollständigen ARN des Geheimnisses an.

Erforderlich.

secret-string

Der einzige unterstützte Wert ist SecretString. Der Standardwert ist SecretString.

json-key

Der Schlüsselname des Schlüssel/Wert-Paares, dessen Wert Sie abrufen möchten. Wenn Sie kein a angebenjson-key, wird der gesamte geheime Text CloudFormation abgerufen.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

version-stage

Das Staging-Label der zu verwendenden Version des Geheimnisses. Secrets Manager verwendet Staging-Markierungen, um während des Rotationsprozesses den Überblick über verschiedene Versionen zu behalten. Wenn Sie version-stage verwenden, geben Sie version-id nicht an. Wenn Sie weder version-stage noch version-id angeben, dann ist der Standard die AWSCURRENT-Version.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

version-id

Die eindeutige ID der Version des zu verwendenden Secrets. Wenn Sie version-id angeben, dürfen Sie version-stage nicht angeben. Wenn Sie weder version-stage noch version-id angeben, dann ist der Standard die AWSCURRENT-Version.

Dieses Segment darf nicht das Doppelpunktzeichen (:) enthalten.

Beispiele

Die Werte für den Benutzernamen und das Passwort werden aus einem Geheimnis abgerufen

Im folgenden AWS::RDS::DBInstanceBeispiel werden die im Secret gespeicherten Werte für den Benutzernamen und das MySecret Kennwort abgerufen. Dieses Beispiel zeigt das empfohlene Muster für versionlose dynamische Verweise, das automatisch die AWSCURRENT Version verwendet und Secrets Manager Manager-Rotationsworkflows unterstützt, ohne dass Vorlagenänderungen erforderlich sind.

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}}'

Das gesamte wird abgerufen SecretString

Die folgende dynamische Referenz ruft das SecretString für ab. MySecret

{{resolve:secretsmanager:MySecret}}

Alternative Vorgehensweise:

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

Abrufen eines Werts aus einer bestimmten Version eines Geheimnisses

Die folgende dynamische Referenz ruft den password Wert für die AWSPREVIOUS Version von ab. MySecret

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

Geheimnisse von einem anderen abrufen AWS-Konto

Die folgende dynamische Referenz ruft das SecretString für abMySecret, das sich in einem anderen befindet. AWS-Konto Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen zugreifen zu können AWS-Konto.

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

Die folgende dynamische Referenz ruft den password Wert ab, der MySecret sich in einer anderen AWS-Konto befindet. Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen zugreifen zu können AWS-Konto.

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