Blog

Bereitstellen von Geheimnissen mit AWS CloudFormation

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
2 Minuten

Eine der größten Schwierigkeiten bei der Erstellung unveränderlicher Infrastrukturen mit CloudFormation ist der Umgang mit Geheimnissen. Die Geheimnisse
müssen an die CloudFormation-Vorlagen weitergegeben werden, damit sie sich je nach Umgebung unterscheiden. Diese Geheimnissemüssen an die Entwicklungsteams weitergegeben werden, damit sie etwas Nützliches mit ihnen anfangen können. Ehe Sie sich versehen, sind Ihre Geheimnisse kompromittiert.

Mit dieser Custom CloudFormation Resource machen wir dem ein Ende. Die Geheimnisse werden als CloudFormation Ressource generiert undim EC2-Parameterspeicher gespeichert. Das bedeutet, dass wir die Geheimnisse nirgendwo unsicher speichern müssen und dass Anwendungen auf kontrollierte Weise Zugriff auf die Geheimnisse erhalten können.

Wie funktioniert das?

Es ist ganz einfach: Sie geben eine CloudFormation-Ressource mit dem Namen Custom::Secret an, wie folgt:

Resources:
  DBPassword:
    Type: Custom::Secret
    Properties:
      Name: /postgres/root/PGPASSWORD
      KeyAlias: alias/aws/ssm
      Alphabet: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
      Length: 30
      ReturnSecret: true
      Version: v1
      ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-secret-provider'

Nach der Bereitstellung finden Sie im EC Parameter Store eine 30-stellige Zufallszeichenfolge mit dem Namen /postgres/root/PGPASSWORD. Wenn Sie in Ihrem Cloudformation-Modul auf das Geheimnis zugreifen müssen, müssen Sie ReturnSecret angeben und es als Attribut Secret referenzieren.

     MasterUserPassword: !GetAtt 'DBPassword.Secret'

Installation

Um diese benutzerdefinierte Ressource zu installieren, geben Sie ein:

$ git clone https://github.com/binxio/cfn-secret-provider.git
$ cd cfn-secret-provider

$ aws cloudformation create-stack 
    –capabilities CAPABILITY_IAM 
    –stack-name cfn-secret-provider  
    –template-body  
    file://cloudformation/cfn-custom-resource-provider.yaml 
$ aws cloudformation wait stack-create-complete  
    –stack-name cfn-secret-provider

Demo

Um das einfache Beispiel für die benutzerdefinierte Ressource zu installieren, geben Sie ein:

$ aws cloudformation create-stack 
    --capabilities CAPABILITY_NAMED_IAM 
    --stack-name cfn-secret-provider-demo 
    --template-body file://cloudformation/demo-stack.yaml

$ aws cloudformation wait stack-create-complete   
    -stack-name cfn-secret-provider-demo

um das Ergebnis zu validieren, geben Sie ein:

aws ssm get-parameter --name /postgres/root/PGPASSWORD  --with-decryption

Fazit

Durch die Verwendung des CloudFormation Secret-Anbieters:

  • Geheimnisse werden pro Umgebung erzeugt.
  • Geheimnisse können aktualisiert werden.
  • immer verschlüsselt im Parameterspeicher gespeichert.
  • wo der Zugang zu den Geheimnissen geprüft und kontrolliert wird!

Wenn Sie ein Geheimnis eines Drittanbieters haben, wie z.B. einen API-Schlüssel, schauen Sie sich die Bereitstellung von gegebenen Geheimnissen an. Wenn Sie ein privates Schlüsselpaar bereitstellen möchten, schauen Sie sich die Bereitstellung von privaten Schlüsselpaaren an. Außerdem haben wir die Bereitstellung von ACM-Zertifikaten mit CloudFormation automatisiert.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.