Blog
Bereitstellen von Geheimnissen mit AWS CloudFormation

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 Geheimnisse
Mit dieser Custom CloudFormation Resource machen wir dem ein Ende. Die Geheimnisse werden als CloudFormation Ressource generiert und
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.
Unsere Ideen
Weitere Blogs
Contact



