Wie erstelle ich eine Rotationsfunktion mit einem AWS Secrets Manager-Geheimnis für eine nicht unterstützte Datenbank?

Lesedauer: 4 Minute
0

Wie kann ich eine AWS Lambda-Funktion erstellen, um die Geheimnisse von AWS Secrets Manager für andere Datenbanken oder Dienste von Drittanbietern zu rotieren?

Kurzbeschreibung

Secrets Manager-Geheimnisse, die mit von Amazon Relational Database Service (Amazon RDS) unterstützten Datenbanken und anderen AWS-Support-Services erstellt wurden, erstellen automatisch die Lambda-Rotation. Für nicht unterstützte AWS-Datenbanken und -Services können Sie die Lambda-Funktion manuell erstellen.

Lösung

Verwenden Sie die Vorlage für eine generische Rotationsfunktion, um Geheimnisse zu rotieren. Bevor Sie die Rotation für ein Geheimnis für eine andere Datenbank oder einen anderen Dienst aktivieren, müssen Sie den Code für die Lambda-Rotationsfunktion erstellen.

Wichtig:

Erstellen Sie ein AWS CloudFormation-Änderungsset auf der Grundlage der generischen Vorlage für Rotationsfunktionen

Führen Sie den AWS-CLI-Befehl create-cloud-formation-change-set für diese Werte aus:

--stackname: Der Name des AWS CloudFormation-Stacks, für den Sie einen Änderungssatz erstellen.

--parameter-override: Die regionalen Endpunkte des AWS Secrets Manager für Ihre Region und der Name der Lambda-Rotationsfunktion, die die Vorlage erstellt.

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY

Hinweis: Stellen Sie sicher, dass Sie den Amazon-Ressourcennamen (ARN) arn:aws:serverlessrepo:us-east- 1:297356227824:applications/SecretsManagerRotationTemplate genau wie abgebildet verwenden.

Für die Vorlage wird ein AWS CloudFormation-Änderungssatz erstellt. Der Name des AWS CloudFormation-Stacks beginnt mit aws-serverless-repository- und der Stack-Statuscode ist auf REVIEW\ _IN\ _PROGRESS gesetzt

Aktualisieren Sie einen Stack mithilfe des Änderungssatzes

Der Befehl create-cloud-formation-change-set gibt die ApplicationID, ChangeSetId, SemanticVersion und StackID zurück. Um den Stack-Status zu aktualisieren, müssen Sie die ChangeSetId für den change-set-name angeben. Der change-set-name erzeugt keine Ausgabe und ändert den Stack-Statuscode in CREATE\ _COMPLETE. Der AWS CloudFormation-Stack erstellt die Lambda-Funktion und eine IAM-Rolle, die mit den erforderlichen Berechtigungen an die Lambda-Funktion angehängt sind.

Führen Sie den folgenden AWS-CLI-Befehl execute-change-set aus, der dem folgenden ähnelt:

aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

Stellen Sie sicher, dass die Lambda-Funktionen erstellt wurden

Führen Sie den folgenden AWS-CLI-Befehl aus:

aws lambda list-functions

Output
{
    ...
    "FunctionName": "MySecretsManagerRotationFunction",
    ...
    "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction",
    ...
}

Hinweis: Der Name der Lambda-Funktion ist der Wert des in --parameter-overrides angegebenen Funktionsnamens.

Konfigurieren Sie die Lambda-Funktion für den Zugriff auf Amazon Virtual Private Cloud (Amazon VPC)

Wenn sich Ihre Datenbank oder Ihr Service in einer Amazon VPC befindet, führen Sie den Befehl update-function-configuration ähnlich dem folgenden aus. Der Befehl update-function-configuration konfiguriert die Lambda-Rotationsfunktion so, dass sie in der VPC ausgeführt wird. Stellen Sie sicher, dass Sie die VPC-Subnetz-IDs und Sicherheitsgruppen-IDs angeben. Weitere Informationen finden Sie unter Konfigurieren einer Lambda-Funktion für den Zugriff auf Ressourcen in einer VPC.

Hinweis: Wenn sich Ihre Datenbank oder Ihr Service nicht in einer Amazon VPC befindet, überspringen Sie diesen Schritt.

$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037

Erstellen Sie einen VPC-Endpunkt für den Secrets Manager-Dienst

Wenn die VPC mit Ihrer Datenbank oder Ihrem Dienst und der Lambda-Rotationsfunktion keinen Internetzugang hat, erstellen Sie einen VPC-Endpunkt. Konfigurieren Sie die VPC mit einem privaten Dienstendpunkt für den Zugriff auf Secrets Manager und aktivieren Sie die Rotationsfunktion an einem Endpunkt innerhalb der VPC. Führen Sie den Befehl create-vpc-endpoint ähnlich dem folgenden aus:

Hinweis: Wenn sich Ihre Datenbank oder Ihr Service nicht in einer Amazon VPC befindet, überspringen Sie diesen Schritt.

$ aws ec2 create-vpc-endpoint --vpc-id  vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \
--service-name com.amazonaws.your-region.secretsmanager  --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \
--security-group-ids sg-0bacf4bbed67e4df5

Richten Sie die Netzwerkkonnektivität zwischen der Lambda-Funktion und der Datenbank oder dem Dienst ein

Stellen Sie sicher, dass die Lambda-Funktion über die erforderlichen Netzwerkports an Ihre Datenbank oder Ihren Dienst weiterleiten kann. Dies hängt von der Datenbank oder dem Dienst und der zugehörigen VPC-Konfiguration ab.

Hinweis: Wenn sich Ihre Datenbank oder Ihr Dienst nicht in einer Amazon VPC befindet, überspringen Sie diesen Schritt.

Passen Sie die Rotationsfunktion an Ihren Anwendungsfall an

Die Rotationsvorlage implementiert die Schritte createSecret und finishSecret für Sie. Die Schritte SetSecret und TestSecret erfordern eine manuelle Implementierung für Ihren Anwendungsfall und Ihre Datenbank. Weitere Informationen finden Sie unter So funktioniert die Rotation.

Schalten Sie die Rotation für dein Geheimnis ein

Geben Sie die Anzahl der Tage zwischen den Rotationen mit den Parametern --rotation-rules und automaticallyAfterDays an:

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7

Weitere Informationen finden Sie unter AWS Secrets Manager-Geheimnisse rotieren.


Ähnliche Informationen

Vorlagen für Rotationsfunktionen von AWS Secrets Manager

So stellen Sie eine Verbindung zum AWS Secrets Manager-Service in einer Virtual Private Cloud her

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr