Holen Sie ein Geheimnis oder einen geheimen Wert aus dem 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 ein Geheimnis oder einen geheimen Wert aus dem 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 Referenzen.

Bewährte Methoden

Befolgen Sie diese Best Practices, wenn Sie dynamische Referenzen von Secrets Manager in Ihren CloudFormation-Vorlagen verwenden:

  • Verwenden Sie versionslose Referenzen für Ihre CloudFormation-Vorlagen- Speichern Sie Anmeldeinformationen im Secrets Manager und verwenden Sie dynamische Referenzen ohne Angabe von version-stage oder version-id Parametern, um ordnungsgemäße Workflows für die Rotation von Geheimnissen zu unterstützen.

  • Nutzen Sie die automatische Rotation- Verwenden Sie das automatische Rotationsfeature von Secrets Manager mit versionslosen dynamischen Referenzen für die Verwaltung von Zugangsdaten. Dadurch wird sichergestellt, dass Ihre Anmeldedaten 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 Referenzen sparsam- Geben Sie explizite version-stage oder version-id Parameter nur für bestimmte Szenarien wie Tests oder Rollback-Situationen an.

Überlegungen

Bei der Verwendung von dynamischen secretsmanager-Referenzen sind einige wichtige Punkte zu beachten:

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

  • Wenn Sie nur den geheimen Wert in Secrets Manager aktualisieren, ruft CloudFormation nicht automatisch den neuen Wert ab. CloudFormation ruft den geheimen Wert nur bei der Erstellung von Ressourcen oder bei Aktualisierungen ab, die die Ressource mit der dynamischen Referenz ändern.

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

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

    Um diesen manuellen Prozess in Zukunft zu vermeiden, sollten Sie den Secrets Manager verwenden, um das Geheimnis automatisch zu drehen.

  • Dynamische Referenzen für sichere Werte, z. B. secretsmanager, unterstützen derzeit keine benutzerdefinierten Ressourcen.

  • Die dynamische secretsmanager-Referenz kann in allen Ressourceneigenschaften verwendet werden. Die Verwendung der dynamischen secretsmanager-Referenz gibt an, dass weder der Secrets Manager noch CloudFormation einen aufgelösten Geheimnis-Wert protokollieren oder aufbewahren sollen. 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 die Berechtigung haben, GetSecretValue für das Geheimnis aufzurufen.

Referenzmuster

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

{{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 AWS-Kontozuzugreifen, müssen Sie nur den Namen des Geheimnisses angeben. Um auf ein Geheimnis in einem anderen AWS-Kontozuzugreifen, 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 keinen json-key angeben, ruft CloudFormation den gesamten Secret-Text ab.

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

Abrufen von Benutzernamen und Passwort aus einem Geheimnis

Das folgende AWS::RDS::DBInstance Beispiel ruft die im MySecret-Geheimnis gespeicherten Werte für Benutzernamen und Kennwort ab. Dieses Beispiel zeigt das empfohlene Muster für versionslose dynamische Referenzen, das automatisch die AWSCURRENT-Version verwendet und Secrets 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}}'

Abrufen der gesamten SecretString

Die folgende dynamische Referenz ruft die SecretString für MySecretab.

{{resolve:secretsmanager:MySecret}}

Alternative Vorgehensweise:

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

Abrufen eines Wertes aus einer bestimmten Version eines Geheimnisses

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

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

Abrufen von Geheimnissen von einem anderen AWS-Konto

Der folgende dynamische Verweis ruft das SecretString für MySecret ab, das in einem anderen AWS-Kontoenthalten ist. Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen AWS-Kontozuzugreifen.

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

Der folgende dynamische Verweis ruft den Wert password für MySecret ab, der in einem anderen AWS-Kontoenthalten ist. Sie müssen den vollständigen geheimen ARN angeben, um auf Geheimnisse in einem anderen AWS-Kontozuzugreifen.

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