Blog
Bereitstellen des AWS SES-Zugangsschlüssels und des SMTP-Passworts für den Parameterspeicher mit AWS CloudFormation

In AWS CloudFormation gibt es keine Möglichkeit, das SMTP-Passwort eines AWS-Zugangsschlüssels zu generieren. Infolgedessen muss die Anwendung immer
die Berechnung durchführen und den geheimen Schlüssel in ein SMTP-Passwort umwandeln.
Mit diesem benutzerdefinierten CloudFormation-Anbieter machen wir dem ein Ende. Sie können einen Zugangsschlüssel und ein SMTP-Passwort erstellen und die Anmeldeinformationen automatisch
im AWS Parameter Store speichern. Das bedeutet, dass Sie die E-Mail-Infrastruktur erstellen und
SMTP-Anmeldeinformationen für Anwendungen bereitstellen können, die auf sichere und kontrollierte Weise E-Mails über Amazon Simple Email Service versenden müssen.
Wie funktioniert das?
Es ist ganz einfach: Sie fügen die CloudFormation-Ressource Custom::AccessKey hinzu, wie folgt:
Resources:
AccessKey:
Type: Custom::AccessKey
Properties:
content: sample user credential
UserName: email-sender
ParameterPath: /iam-users/email-sender
ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-secret-provider'
Die Zugriffsschlüssel-ID, das Zugriffsgeheimnis und das SMTP-Passwort werden im Parameterspeicher unter den Pfaden /iam-users/email-sender/aws_access_key_id, /iam-users/email-sender/aws_access_secret_key bzw. /iam-users/email-sender/smtp_password gespeichert.
Eigenschaften
Sie können die folgenden Eigenschaften angeben:
UserName- um einen Zugangsschlüssel für zu erstellen.ParameterPath- in den Parameterspeicher, um die Anmeldeinformationen zu speichernSerial- um zu erzwingen, dass der Zugriffsschlüssel recycelt wirdStatus- Aktiv oder InaktivReturnSecret- gibt Zugangskennung und Zugangsgeheimnis als Attribut zurückReturnPassword- gibt Zugangskennung und SMTP-Passwort als Attribut zurückNoEcho- geben an, ob die Ausgabe der Rückgabewerte durch*****ersetzt wird. Standardmäßig ist True eingestellt.
Werte zurückgeben
Mit 'Fn::GetAtt' sind die folgenden Werte verfügbar:
SMTPPassword- das SMTP-Passwort für den Zugriffsschlüssel (wenn ReturnPassword true ist).AccessSecretKey- den geheimen Teil des Zugriffsschlüssels (wenn ReturnSecret true ist).
Weitere Informationen zur Verwendung von Fn::GetAtt finden Sie unter Fn::GetAtt.
Installation
Um diese benutzerdefinierte Ressource zu installieren, geben Sie ein:
git checkout https://github.com/binxio/cfn-secret-provider
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
--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-parameters-by-path
--path /iam-users
--recursive
--with-decryption
Fazit
Mit dem Custom CloudFormation Secret Provider können Sie einen IAM-Zugangsschlüssel und das daraus abgeleitete SMTP-Passwort erstellen und im Parameterspeicher speichern, wo es verschlüsselt ist und der Zugriff überprüft und kontrolliert werden kann.
Wenn Sie so weit gekommen sind, möchten Sie vielleicht auch Ihre SES-Domänenidentitäten und DKIM-Datensätze mit CloudFormation bereitstellen.
Wenn Sie Fragen haben, zögern Sie nicht, mich zu kontaktieren.
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



