Datenbank-Secret-Rotation ohne Wallet-Funktion
Erfahren Sie, wie Sie mit der vordefinierten Funktion "Datenbank-Secret-Rotation ohne Wallet" in OCI Functions Secrets mit einer TLS-Verbindung zur Datenbank rotieren.
Allgemeine Verwendungsszenarios
Mit der Datenbank-Secret-Rotation ohne Wallet PBF können Sie Secrets der Datenbank automatisch rotieren, indem Sie eine JDBC-TLS-Verbindung ohne Wallet herstellen.
Services für die Datenbank-Secret-Rotation ohne Wallet-Funktion umfassen:
Geltungsbereich
Zu den Umfangsüberlegungen für diese Funktion gehören:
- Die vordefinierte Funktion kann mit jeder Datenbank verwendet werden, die eine JDBC-URL unterstützt.
- Secret Service verwendet die von der vordefinierten Funktion erstellte Funktion, um die Datenbank-Secrets zu rotieren.
Voraussetzungen und Empfehlungen
Im Folgenden finden Sie Best Practices bei der Verwendung dieser vordefinierten Funktion:
- Legen Sie den vordefinierten Funktionstimeout auf 300 Sekunden fest.
- Stellen Sie sicher, dass das mit der Anwendung verknüpfte VCN den Zugriff auf andere OCI-Services über ein Servicegateway, ein Internetgateway oder ein NAT-Gateway erleichtert.
- Stellen Sie sicher, dass das Subnetz, das an das VCN angehängt ist, eine Routentabelle und eine Sicherheitsliste aufweist.
- Stellen Sie sicher, dass die Routentabelle des Subnetzes eine Regel enthält, die ein Servicegateway verwendet, das im VCN erstellt wurde. Stellen Sie sicher, dass das Servicegateway Zugriff auf OCI-Services in der Region hat, für die Sie Secret-Rotationen konfigurieren.
- Stellen Sie sicher, dass die Sicherheitsliste des Subnetzes eine Egress-Regel enthält, die ein Zielset für das Servicegateway enthält, das im VCN erstellt wurde.
Stellen Sie sicher, dass Sie den Netzwerkzugriff für die autonome Datenbank so konfiguriert haben, dass eingehende Anforderungen aus der Anwendung, in der die vordefinierte Funktion erstellt werden soll, wie folgt erstellt werden:
- Wenn Sie die autonome Datenbank mit der OCI-Konsole erstellen oder aktualisieren, zeigen Sie den Bereich Netzwerkzugriff auswählen oder den Bereich Netzwerkzugriff aktualisieren der Seite an. Weitere Informationen finden Sie in der Dokumentation zu Autonomous Database Serverless.
- Wählen Sie einen der folgenden Typen von Netzwerkzugriff:
- Sicheren Zugriff von überall aus zulassen: Wählen Sie diese Option aus, wenn über das Internet auf die autonome Datenbank zugegriffen werden soll.
- Sicherer Zugriff nur von zulässigen IPs und VCNs: Wählen Sie diese Option aus, wenn nur von VCNs und IPs in einer Access-Control-Liste (ACL) auf die autonome Datenbank zugegriffen werden soll. Fügen Sie eine oder mehrere Zugriffskontrollregeln entsprechend dem Netzwerk hinzu, von dem aus auf die autonome Datenbank zugegriffen werden soll.
- Nur Zugriff auf privaten Endpunkt: Wählen Sie diese Option aus, wenn von einem privaten Endpunkt innerhalb eines OCI-VCN auf die autonome Datenbank zugegriffen werden soll. Wählen Sie das VCN und das Subnetz aus, von dem aus auf die autonome Datenbank zugegriffen werden soll.
Datenbank-Secret-Rotation ohne Wallet-Funktion konfigurieren
Um eine Datenbank-Secret-Rotation ohne Wallet-Funktion zu konfigurieren, gehen Sie wie folgt vor:
Im Dialogfeld "Bereitstellen" werden die Aufgaben zum Bereitstellen der Funktion angezeigt (siehe Vordefiniertes Funktions-Deployment beenden).
Konfigurationsoptionen
Berechtigungen
Für die Ausführung einer Funktion sind bestimmte IAM-Policys erforderlich.
Für die Funktion "Datenbank-Secret-Rotation ohne Wallet" müssen Sie eine dynamische Gruppe erstellen und eine IAM-Policy konfigurieren, damit der Secret-Rotationsdienst die Funktion aufrufen kann. Um die richtigen Policys festzulegen, gehen Sie wie folgt vor:
- Erstellen Sie eine dynamische Gruppe mit folgender Regel:
resource.type='vaultsecret'
Diese Regel enthält alle Vault Secrets in der dynamischen Gruppe. Mit einer restriktiveren Regel können Sie begrenzen, welches Vault Secret in der dynamischen Gruppe enthalten ist. Beispiel:
resource.id='<secret-id>'
- Konfigurieren Sie eine IAM-Policy, mit der die in der dynamischen Gruppe enthaltenen Ressourcen Funktionen aufrufen können. Beispiel:
Allow dynamic-group <vs-dynamic-group-name> to manage functions-family in tenancy
Hinweis
Ersetzen Sie<vs-dynamic-group-name>
durch den Namen der dynamischen Gruppe, die Sie für das Vault Secret erstellt haben.
Wenn Sie außerdem beim Erstellen der Funktion die Option Dynamische Gruppe und IAM-Policy nicht erstellen ausgewählt haben, müssen Sie die dynamische Gruppe und die IAM-Policy selbst definieren, damit die Funktion Secrets verwalten kann. Um die richtigen Policys festzulegen, gehen Sie wie folgt vor:
- Erstellen Sie eine dynamische Gruppe mit folgender Regel:
resource.type='fnfunc'
Diese Regel enthält alle Funktionen in der dynamischen Gruppe. Sie können einschränken, welche Funktion in der dynamischen Gruppe enthalten ist, indem Sie eine restriktivere Regel verwenden. Beispiel:
resource.id='<function-ocid>'
- Konfigurieren Sie eine IAM-Policy mit der dynamischen Gruppe:
Allow dynamic-group <dynamic-group-name> to manage secret-family in tenancy
Mit einer restriktiveren Policy können Sie begrenzen, welche Vault Secrets die Funktion verwalten kann. Beispiel:
Allow dynamic-group <dynamic-group-name> to manage secret-family in compartment <compartment-name> where target.secret.id = "<secret-ocid>"
Ersetzen Sie
<function-ocid>
durch die OCID der Funktion, die Sie in den vorherigen Schritten erstellt haben. Ersetzen Sie
<dynamic-group-name>
durch den Namen der dynamischen Gruppe, die Sie mit der OCID der Funktion erstellt haben.Ersetzen Sie
<compartment_ocid>
durch die OCID des Compartments, das die Funktion enthält.Diese Funktion wird aufgerufen
Die mit dieser PBF erstellte Funktion wird vom Secret Service aufgerufen, um das Secret zu rotieren.
- Erstellen Sie eine Funktion mit dieser PBF, und kopieren Sie die Funktions-ID.
-
- Öffnen Sie das Navigationsmenü, wählen Sie Identität und Sicherheit und dann Vault aus.
- Wählen Sie unter Listengeltungsbereich ein Compartment mit den Secrets aus, die Sie in einem Vault erstellt haben.
-
Wählen Sie in der Liste der Secrets einen Secret-Namen aus, den Sie mit dieser PBF rotieren müssen, oder erstellen Sie ein neues Secret.
- Informationen zum Erstellen eines neuen Secrets finden Sie unter Secret erstellen.
- Informationen zum Aktualisieren eines vorhandenen Secrets finden Sie unter Secret aktualisieren.
- Wählen Sie Zielsystemtyp als Funktion für Rotationen aus.
- Fügen Sie die aus Schritt 1 kopierte Funktions-ID als Zielsystem-ID hinzu.
- Stellen Sie sicher, dass das Secret den folgenden Anforderungen entspricht:
- Die erste Version des Secrets muss manuell erstellt werden. Wählen Sie Manuelle Secret-Generierung mit dem Secret-Inhalt im folgenden JSON-Format aus:
{ "username": "<required: username>", "password": "<required: password>", "connectionString": "<required: DB connection string>" }
- Das Kennwort muss dasselbe Kennwort sein, das für die zu rotierende Datenbank festgelegt ist.
- Nach der erfolgreichen Erstellung des Secrets muss Automatische Secret-Generierung aktiviert werden, damit nachfolgende Secret-Versionen vom Secret-Service automatisch generiert werden können.
- Bearbeiten Sie das neu erstellte Secret, aktivieren Sie Automatische Secret-Generierung, und geben Sie den Secret-Inhalt im folgenden JSON-Format an:
{ "username": "<required: username>", "password": "%GENERATED_PASSPHRASE%", "connectionString": "<required: DB connection string>" }
- Unter Automatische Secret-Generierung wird das Kennwort als
%GENERATED_PASSPHRASE%
angegeben, damit der Secret-Service das Kennwort in diesem Feld automatisch generieren kann. - Benutzername und Kennwort müssen eine Verbindung zur Datenbank im folgenden Format herstellen:
jdbc:oracle:thin:@<connectionString>?user=<username>&password=<example-password>
- Stellen Sie sicher, dass Sie die TLS-Verbindung verwenden. Hinweis
Diese Funktion ist nicht mit der MTLS-Verbindung kompatibel.
- Die erste Version des Secrets muss manuell erstellt werden. Wählen Sie Manuelle Secret-Generierung mit dem Secret-Inhalt im folgenden JSON-Format aus:
Fehlersuche
Allgemeine OCI Functions-Statuscodes
In der folgenden Tabelle werden allgemeine OCI Functions-Fehler zusammengefasst, die bei der Arbeit mit vordefinierten Funktionen auftreten können:
Fehlercode | Fehlermeldung | Maßnahme |
---|---|---|
200 | Erfolgreich | Keine |
404 | NotAuthorizedOrNotFound | Prüfen Sie, ob die erforderlichen Policys konfiguriert sind (siehe Running Fn Project CLI Commands return a 404 error). |
444 | Zeitüberschreitung |
Die Verbindung zwischen dem Client und OCI Functions wurde während der Funktionsausführung unterbrochen (siehe Wenn Sie eine Funktion aufrufen, meldet der Client einen Timeout, und in den Funktionslogs wird ein 444-Fehler angezeigt). Ein erneuter Versuch kann das Problem lösen. Beachten Sie, dass die meisten Clients einen inneren Timeout von 60 Sekunden haben. Auch wenn der vordefinierte Funktionstimeout auf 300 Sekunden gesetzt ist, kann Folgendes erforderlich sein:
Weitere Informationen finden Sie unter Funktionen aufrufen. |
502 504 | (verschiedene) | Die meisten Probleme geben einen 502-Statuscode zurück (siehe Aufrufen einer Funktion gibt eine Meldung "Funktion nicht erfolgreich" und einen 502-Fehler zurück). Ein 502-Fehler mit der Meldung "Fehler beim Empfangen von Funktionsantworten" kann behoben werden, indem die Speicherzuweisung erhöht wird. Eine 502 kann gelegentlich auftreten, wenn sich die Funktion in einem vorübergehenden Zustand befindet. Ein erneuter Versuch kann das Problem lösen. |
Um die Ursache weiter zu identifizieren, aktivieren Sie Loggingfeatures für die vordefinierte Funktion (siehe Funktionslogs speichern und anzeigen). Ausführliche Informationen zur Fehlerbehebung einer Funktion finden Sie unter Fehlerbehebung bei OCI Functions.
Datenbank-Secret-Rotation ohne vordefinierte Funktionsfehlermeldungen des Wallets
In der folgenden Tabelle werden die Fehler zusammengefasst, die bei der Arbeit mit dieser vordefinierten Funktion auftreten können:
Schritt | Statuscode | Reaktionsmeldung | Beschreibung |
---|---|---|---|
VERIFY_CONNECTION | 200 | Verbindung mit ausstehender Secret-Version war erfolgreich. | Es ist eine ausstehende Version des Secrets vorhanden, und die Datenbankverbindung wurde mit dieser Version erfolgreich hergestellt. |
Verbindung mit der aktuellen Secret-Version war erfolgreich. | Datenbankverbindung mit aktueller Secret-Version erfolgreich. | ||
400 | Verbindung mit der aktuellen Secret-Version war nicht erfolgreich. | Ungültige Zugangsdaten in der aktuellen Secret-Version oder einer ausstehenden Version (falls vorhanden), oder die Netzwerkkonfiguration für die Verbindung zwischen Funktion und Datenbank ist falsch. | |
404 | Aktuelle Version des Secrets nicht gefunden | Es ist keine aktuelle Version des Secrets mit der angegebenen Datei secretId vorhanden. | |
500 | <EXCEPTION-NACHRICHT> | Wird ausgelöst, wenn beim Prüfen der Verbindung eine Ausnahme auftritt. | |
CREATE_PENDING_VERSION | 200 | Ausstehende Version ist bereits vorhanden. | Eine ausstehende Version des Secrets ist bereits vorhanden. Erstellt keine neue ausstehende Version. |
Ausstehende Version erfolgreich erstellt. | Es ist keine ausstehende Version vorhanden. Es wird eine neue ausstehende Version des Secrets erstellt. | ||
<AUSNAHMECODE> | Ausstehende Version konnte nicht erstellt werden. | Ausnahme vom DP-Client beim Versuch, eine neue ausstehende Version des Secrets zu erstellen. | |
500 | <EXCEPTION-NACHRICHT> | Wird ausgelöst, wenn beim Erstellen einer neuen Version eine Ausnahme auftritt. | |
UPDATE_TARGET_SYSTEM | 200 | Das Zielsystem wurde bereits aktualisiert. | Die Datenbank kann mit der ausstehenden Secret-Version verbunden werden, was darauf hinweist, dass diese Version zuvor zum Aktualisieren der Datenbankzugangsdaten verwendet wurde. |
Zielsystem erfolgreich aktualisiert. | Datenbankzugangsdaten wurden mit der ausstehenden Version des Secrets aktualisiert. | ||
404 | Keine ausstehende Version vorhanden. | Es ist keine ausstehende Version des Secrets vorhanden, die zum Aktualisieren des Zielsystems verwendet werden kann. | |
500 | Zielsystem konnte nicht aktualisiert werden. | Es wurde versucht, das Zielsystem mit den neuen Zugangsdaten für die ausstehende Version zu aktualisieren. Die Verifizierung der Datenbankverbindung mit diesen Zugangsdaten war jedoch nicht erfolgreich. | |
<EXCEPTION-NACHRICHT> | Wird ausgelöst, wenn beim Aktualisieren des Zielsystems eine Ausnahme auftritt. | ||
PROMOTE_PENDING_VERSION | 200 | Ausstehende Version hochgestuft! | Ausstehende Version wurde erfolgreich auf aktuell hochgestuft. |
500 | <EXCEPTION-NACHRICHT> | Wird ausgelöst, wenn beim Hochstufen der ausstehenden Version eine Ausnahme auftritt. |
Um die Ursache weiter zu identifizieren, aktivieren Sie Loggingfeatures für die vordefinierte Funktion (siehe Funktionslogs speichern und anzeigen).
Tipps zur Loganalyse
Alle vordefinierten Funktionen bieten eine Option zur Angabe der Logging-Ebene als Konfigurationsparameter. Sie können die Logging-Ebene auf DEBUG
setzen, um weitere Informationen zu erhalten.
Da eine Anwendung mehrere Funktionen hat, werden die vordefinierten Funktionslogeinträge durch das Präfix "PBF | <PBF NAME>" identifiziert.
Beispiel: Ein Logeintrag für die vordefinierte Funktion "Datenbank-Secret-Rotation ohne Wallet" sieht ungefähr wie folgt aus:
"PBF | Database Secret Rotation without Wallet | INFO | 2024-01-31T18:06:50.809Z | Fetching details from Events JSON"