Blog
Bereitstellen von privaten Schlüsselpaaren mit AWS CloudFormation

In AWS CloudFormation gibt es keine Möglichkeit, ein privates Schlüsselpaar zu erzeugen. Das bedeutet, dass Sie immer manuell arbeiten müssen. Sie müssen einen ssh-Schlüssel erzeugen, ihn in AWS importieren und schließlich den Namen an Ihre CloudFormation-Vorlage übergeben. Das ist eine umständliche, manuelle Arbeit, die uns daran hindert, die Bereitstellung unserer Infrastruktur vollständig zu automatisieren.

Wie funktioniert das?
Es ist ganz einfach: Sie kombinieren die CloudFormation-Ressource Custom::RSAKey mit dem Custom::KeyPair, wie folgt:
Resources:
PrivateKey:
Type: Custom::RSAKey
Properties:
Name: /demo/private-key
ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-secret-provider'
KeyPair:
Type: Custom::KeyPair
DependsOn: PrivateKey
Properties:
Name: CustomKeyPair
PublicKeyMaterial: !GetAtt 'PrivateKey.PublicKey'
ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-secret-provider'
Nach der Bereitstellung werden sowohl der private Schlüssel als auch das ec2-Schlüsselpaar erstellt. Den privaten Schlüssel finden Sie im Parameterspeicher unter dem Namen /demo/private-key und das ec2-Schlüsselpaar unter dem Namen CustomKeyPair.
Custom::RSAKey liefert den öffentlichen RSA-Schlüssel im Attribut PublicKey und in PublicKeyPEM im OpenSSL- bzw. PEM-Format.
Installation
Um diese benutzerdefinierten Ressourcen 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
Diese CloudFormation-Vorlage verwendet unseren vorgefertigten Provider von:
s3://binxio-public-{{AWS::Region}}/lambdas/cfn-secret-provider-latest.zip
Demo
Um das einfache Beispiel aus diesem Blogbeitrag 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 --parameter-name /demo/my-private-key --with-decryption
aws ec2 describe-key-pairs --key-name cfn-secret-provider-demo-custom-key-pair
Fazit
Mit dem Custom CloudFormation Secret-Anbieter können Sie Ihre Infrastruktur vollständig automatisieren, einschließlich der Generierung von privaten Schlüsseln, die zum Starten Ihrer ec2-Instanzen erforderlich sind. Gleichzeitig wird der private Schlüssel sicher im Parameterspeicher verschlüsselt, wo der Zugriff geprüft und kontrolliert werden kann.
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



