Direkt zum Inhalt

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

Lesedauer: 4 Minute
0

Ich möchte eine AWS Lambda-Funktion für ein AWS Secrets Manager-Geheimnis erstellen. Meine Datenbank oder mein Service unterstützt keine automatische Rotationsfunktion.

Behebung

Voraussetzung: Installiere und konfiguriere das AWS Command Line Interface (AWS CLI).

Hinweis: Wenn du beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Den Code für die Lambda-Rotationsfunktion erstellen

Anweisungen findest du unter Automatische Rotation für AWS Secrets Manager-Geheimnisse einrichten, die keine Datenbank sind.

Ein AWS CloudFormation-Änderungsset auf der Grundlage der generischen Vorlage für Rotationsfunktionen erstellen

  1. Führe den AWS-CLI-Befehl create-cloud-formation-change-set aus.
  2. Ersetze**--stack-name** durch den Namen des CloudFormation-Stacks.
  3. Ersetze --parameter-overrides durch die regionalen Endpunkte des Secret Manager für die AWS-Region und den Namen der Lambda-Rotationsfunktion, die die Vorlage erstellt.

Beispiel für den AWS-CLI-Befehl create-cloud-formation-change-set:

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: Stelle sicher, dass du den ARN arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate genau wie abgebildet verwenden.

Den CloudFormation-Änderungsset verwenden, um einen Stack zu aktualisieren

Der Befehl create-cloud-formation-change-set gibt die Werte ApplicationID, ChangeSetId, SemanticVersion und StackID zurück.

Führe die folgenden Schritte aus:

  1. Ersetze change-set-name durch den Wert ChangeSetID, wenn du den Befehl execute-change-set ausführst.
  2. Führe den AWS-CLI-Befehl execute-change-set aus:
    aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

Der CloudFormation-Stack erstellt die Lambda-Funktion und eine AWS Identity and Access Management (IAM)-Rolle. Die IAM-Rolle verfügt über die erforderlichen Berechtigungen für die Lambda-Funktion.

Die Erstellung der Lambda-Funktion überprüfen

Führe den AWS-CLI-Befehl list-functions aus:

aws lambda list-functions

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

Hinweis: Der Wert FunctionName entspricht dem Funktionsnamen, den du in der Option**--parameter-overrides** angegeben hast.

Den Lambda-Funktionszugriff auf eine Amazon Virtual Private Cloud konfigurieren

Wenn sich die Datenbank oder der Service in einer Amazon Virtual Private Cloud (Amazon VPC) befindet, führe den Befehl update-function-configuration aus, um die Lambda-Rotationsfunktion so zu konfigurieren, dass sie in der Amazon VPC ausgeführt wird. Stelle sicher, dass du die VPC-Subnetz-IDs und Sicherheitsgruppen-IDs angibst. Weitere Informationen findest du unter Lambda-Funktionen den Zugriff auf Ressourcen in einer Amazon VPC gewähren.

Hinweis: Wenn sich die Datenbank oder der Service nicht in einer Amazon VPC befindet, überspringe diesen Schritt.

Beispiel für den AWS-CLI-Befehl update-function-configuration:

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

Einen Amazon VPC-Endpunkt für Secrets Manager erstellen

Wenn die Amazon VPC mit der Datenbank oder dem Service und der Lambda-Rotationsfunktion keinen Internetzugang hat, erstelle einen Amazon VPC-Endpunkt. Konfiguriere einen privaten Service-Endpunkt in der Amazon VPC für den Zugriff auf Secrets Manager und aktiviere die Rotationsfunktion an einem Endpunkt innerhalb der VPC. Führe den AWS-CLI-Befehl create-vpc-endpoint aus.

Hinweis: Wenn sich die Datenbank oder der Service nicht in einer Amazon VPC befindet, überspringe 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

Die Netzwerkkonnektivität zwischen der Lambda-Funktion und der Datenbank oder dem Service einrichten

Stelle sicher, dass die Lambda-Funktion über die erforderlichen Netzwerkports an die Datenbank oder den Service weiterleiten kann. Die Ports und Routing-Anforderungen variieren je nach Datenbank oder Service und der zugehörigen VPC-Konfiguration.

Hinweis: Wenn sich die Datenbank oder der Service nicht in einer Amazon VPC befindet, überspringe diesen Schritt.

Rotationsfunktion an den Anwendungsfall anpassen

Die Rotationsvorlage implementiert die Schritte createSecret und finishSecret für dich. Du musst die Lambda-Funktion ändern, um die Schritte setSecret und testSecret für den Anwendungsfall und die Datenbank zu implementieren. Weitere Informationen findest du unter Vier Schritte in einer Rotationsfunktion.

Die Rotation für dein Geheimnis einschalten

Gib 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 findest du unter AWS Secrets Manager-Geheimnisse rotieren.

Ähnliche Informationen

Vorlagen für Rotationsfunktionen von AWS Secrets Manager

So stellst du eine Verbindung zum AWS Secrets Manager-Service in einer Virtual Private Cloud her

AWS-Services, die AWS Secrets Manager-Geheimnisse verwenden

AWS OFFICIALAktualisiert vor 9 Monaten