Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Lambda-Rotationsfunktionen
Rotation durch Lambda-FunktionIn einer Lambda-Funktion wird das Geheimnis rotiert. Secrets Manager verwendet Staging-Bezeichnungen, um Secret-Versionen während der Drehung zu kennzeichnen.
Wenn Secrets Manager keine Rotationsfunktionsvorlage für Ihren Geheimtyp bereitstellt, können Sie eine Rotationsfunktion erstellen. Folgen Sie beim Schreiben einer Rotationsfunktion den Anweisungen für jeden Schritt.
Tipps zum Schreiben Ihrer eigenen Rotationsfunktion
-
Verwenden Sie die generische Rotationsvorlage als Ausgangspunkt, um Ihre eigene Rotationsfunktion zu schreiben.
-
Wenn Sie Ihre Funktion schreiben, sollten Sie bei den Debugging- oder Protokollierungsanweisungen vorsichtig sein. Diese Anweisungen können dazu führen, dass Informationen in Ihrer Funktion an Amazon geschrieben werden. Sie müssen also sicherstellen CloudWatch, dass das Protokoll keine sensiblen Informationen enthält, die während der Entwicklung gesammelt wurden.
Beispiele für Protokollanweisungen finden Sie im AWS Secrets Manager Vorlagen für Rotationsfunktionen-Quellcode.
-
Aus Sicherheitsgründen erlaubt Secrets Manager nur eine Lambda-Rotationsfunktion, um das Geheimnis direkt zu rotieren. Die Rotationsfunktion kann keine zweite Lambda-Funktion aufrufen, um das Geheimnis zu rotieren.
-
Vorschläge zum Debuggen finden Sie unter Testen und Debuggen von Serverless Anwendungen.
-
Wenn Sie externe Binärdateien und Bibliotheken verwenden, um beispielsweise eine Verbindung zu einer Ressource herzustellen, müssen Sie sich darum kümmern, diese zu patchen und zu behalten. up-to-date
-
Speichern Sie Ihre Rotationsfunktion in einer Datei ZIP
my-function.zip
zusammen mit allen erforderlichen Abhängigkeiten.
Vier Schritte in einer Rotationsfunktion
Themen
create_secret
: Erstelle eine neue Version des Secrets
Die Methode prüft create_secret
zunächst, ob ein Geheimnis existiert, indem sie get_secret_value
ClientRequestToken
Wenn es kein Geheimnis gibt, erstellt sie ein neues Geheimnis mit create_secret
VersionId
Dann generiert es einen neuen geheimen Wert mit get_random_password
put_secret_value
zu speichern. Das Speichern des neuen geheimen Werts in AWSPENDING
trägt zur Sicherstellung der Idempotenz bei. Wenn die Drehung aus irgendeinem Grund fehlschlägt, können Sie in nachfolgenden Aufrufen auf diesen geheimen Wert verweisen. Weitere Informationen finden Sie unter How do I make my Lambda function idempotentAWSPENDING
Tipps zum Schreiben Ihrer eigenen Rotationsfunktion
Stellen Sie sicher, dass der neue geheime Wert nur Zeichen enthält, die für die Datenbank oder den Dienst gültig sind. Schließen Sie Zeichen mithilfe des
ExcludeCharacters
-Parameters aus.Verwenden Sie beim Testen Ihrer Funktion die Versionsstufen, AWS CLI um sich die Versionsstufen anzusehen: aufrufen
describe-secret
und ansehenVersionIdsToStages
.-
Für Amazon RDS My SQL erstellt Secrets Manager in abwechselnder Benutzerrotation einen geklonten Benutzer mit einem Namen, der nicht länger als 16 Zeichen ist. Sie können die Rotationsfunktion ändern, um längere Benutzernamen zuzulassen. Meine SQL Version 5.7 und höher unterstützt Benutzernamen mit bis zu 32 Zeichen, Secrets Manager fügt jedoch „_clone“ (sechs Zeichen) an das Ende des Benutzernamens an, sodass Sie den Benutzernamen auf maximal 26 Zeichen beschränken müssen.
set_secret
: Ändern Sie die Anmeldeinformationen in der Datenbank oder im Dienst
Die Methode set_secret
ändert die Anmeldeinformationen in der Datenbank oder im Dienst so, dass sie dem neuen geheimen Wert in der AWSPENDING
Version des Geheimnisses entsprechen.
Tipps zum Schreiben Ihrer eigenen Rotationsfunktion
-
Wenn Sie Anweisungen an einen Dienst übergeben, der Anweisungen interpretiert, z. B. an eine Datenbank, verwenden Sie die Abfrageparametrisierung. Weitere Informationen finden Sie auf der Website unter Cheat Sheet zur Parametrisierung von Abfragen
. OWASP -
Die Drehungsfunktion ist ein privilegierter Stellvertreter, der berechtigt ist, auf Kundenanmeldeinformationen sowohl im Secrets-Manager-Secret als auch in der Zielressource zuzugreifen und diese zu ändern. Um einen möglichen verwirrten Stellvertreterangriff zu verhindern, müssen Sie sicherstellen, dass ein Angreifer die Funktion nicht verwenden kann, um auf andere Ressourcen zuzugreifen. Bevor Sie die Anmeldeinformationen aktualisieren:
Überprüfen Sie, ob die Anmeldeinformationen in der
AWSCURRENT
-Version des Secrets gültig sind. Wenn dieAWSCURRENT
-Anmeldeinformationen nicht gültig sind, brechen Sie den Drehungsversuch ab.Stellen Sie sicher, dass die geheimen Werte
AWSPENDING
undAWSCURRENT
für dieselbe Ressource gelten. Überprüfen Sie für einen Benutzernamen und ein Passwort, ob dieAWSCURRENT
- undAWSPENDING
-Benutzernamen identisch sind.Stellen Sie sicher, dass die Ziel-Service-Ressource identisch ist. Überprüfen Sie bei einer Datenbank, ob die Hostnamen
AWSCURRENT
undAWSPENDING
identisch sind.
-
In seltenen Fällen möchten Sie möglicherweise eine vorhandene Rotationsfunktion für eine Datenbank anpassen. Bei abwechselnder Benutzerrotation erstellt Secrets Manager beispielsweise den geklonten Benutzer, indem er die Laufzeitkonfigurationsparameter
des ersten Benutzers kopiert. Wenn Sie mehr Attribute hinzufügen oder ändern möchten, welche dem geklonten Benutzer gewährt werden, müssen Sie den Code in der set_secret
-Funktion aktualisieren.
test_secret
: Testen Sie die neue geheime Version
Als Nächstes testet die Lambda-Rotationsfunktion die AWSPENDING
-Version des Secrets, indem es für den Zugriff auf die Datenbank oder den Service verwendet wird. Rotationsfunktionen basierend auf Folgendem: Rotationsfunktionsvorlagen testen das neue Secret mit Lesezugriff.
finish_secret
: Beende die Rotation
Schließlich verschiebt die Lambda-Rotationsfunktion das Label AWSCURRENT
von der vorherigen geheimen Version in diese Version, wodurch auch das AWSPENDING
Label im selben API Aufruf entfernt wird. Secrets Manager fügt der vorherigen Version die AWSPREVIOUS
-Staging-Bezeichnung hinzu, sodass Sie die letzte als funktionierend bekannte Version des Secret behalten.
Die Methode finish_secret
verwendet update_secret_version_stage
AWSCURRENT
von der vorherigen geheimen Version in die neue geheime Version zu verschieben. Secrets Manager fügt der vorherigen Version die AWSPREVIOUS
-Staging-Bezeichnung automatisch hinzu, sodass Sie die letzte als funktionierend bekannte Version des Secret behalten.
Tipps zum Schreiben Ihrer eigenen Rotationsfunktion
Entfernen Sie es nicht
AWSPENDING
vor diesem Zeitpunkt und entfernen Sie es nicht mit einem separaten API Aufruf, da dies Secrets Manager darauf hinweisen kann, dass die Rotation nicht erfolgreich abgeschlossen wurde. Secrets Manager fügt der vorherigen Version dieAWSPREVIOUS
-Staging-Bezeichnung hinzu, sodass Sie die letzte als funktionierend bekannte Version des Secret behalten.
Wenn die Rotation erfolgreich ist, wird die AWSPENDING
-Staging-Bezeichnung möglicherweise an dieselbe Version wie die AWSCURRENT
-Version angehängt oder wird möglicherweise keiner Version zugeordnet. Wenn die AWSPENDING
-Staging-Bezeichnung zwar vorhanden, aber nicht derselben Version zugeordnet ist wie AWSCURRENT
, wird bei jedem späteren Aufruf der Rotation davon ausgegangen, dass eine vorherige Rotationsanforderung noch in Bearbeitung ist, und es wird ein Fehler zurückgegeben. Wenn die Rotation nicht erfolgreich ist, wird die AWSPENDING
-Staging-Bezeichnung möglicherweise an eine leere Secret-Version angehängt. Weitere Informationen finden Sie unter Fehlerbehebung bei der Rotation.