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:

    1. 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.
    2. 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:

  1. Wählen Sie auf der Seite Vordefinierte Funktionen die Option Rotation des Datenbank-Secrets ohne Wallet und dann Funktion erstellen aus.
  2. Konfigurieren Sie Name, Compartment und Anwendung wie folgt:
    • Name: Geben Sie einen Namen Ihrer Wahl für die neue Funktion ein. Der Name muss mit einem Buchstaben oder Unterstrich beginnen und darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten. Die zulässige Länge beträgt 1–255 Zeichen. Geben Sie keine vertraulichen Informationen ein.

      Um die Funktion in einem anderen Compartment zu erstellen, wählen Sie Compartment ändern aus.

    • Anwendung: Wählen Sie die Anwendung aus, in der Sie die Funktion erstellen möchten.

      Wenn noch keine geeignete Anwendung im aktuellen Compartment vorhanden ist, wählen Sie Neue Anwendung erstellen aus, und geben Sie die folgenden Details an:

      • Name: Ein Name für die neue Anwendung. Geben Sie keine vertraulichen Informationen ein.
      • VCN: Das VCN (virtuelles Cloud-Netzwerk), in dem Funktionen in der Anwendung ausgeführt werden sollen. Wählen Sie optional VCN-Compartment: aus, um ein VCN in einem anderen Compartment auszuwählen.
      • Subnetz: Das Subnetz (oder die Subnetze, bis zu drei) in dem Funktionen ausgeführt werden sollen. Wählen Sie optional Subnetz-Compartment: aus, um ein Subnetz aus einem anderen Compartment auszuwählen.
      • Ausprägung: Die Prozessorarchitektur der Compute-Instanzen, auf denen Funktionen in der Anwendung bereitgestellt und ausgeführt werden sollen. Alle Funktionen in der Anwendung werden auf Compute-Instanzen mit derselben Architektur bereitgestellt und ausgeführt. Das Abbild der Funktion muss die erforderlichen Abhängigkeiten für die ausgewählte Architektur enthalten.
      • Tags: Wenn Sie über Berechtigungen zum Erstellen von Ressourcen verfügen, können Sie auch Freiformtags auf diese Ressource anwenden. Um ein definiertes Tag anzuwenden, benötigen Sie Die Berechtigungen zum Verwenden des Tag-Namespace. Weitere Informationen zum Tagging finden Sie unter Ressourcentags. Wenn Sie nicht sicher sind, ob Tags angewendet werden sollen, überspringen Sie diese Option, oder fragen Sie einen Administrator. Sie können Tags später anwenden.
  3. Konfigurieren Sie die IAM-Policy für vordefinierte Funktionen.

    Standardmäßig erstellt OCI Functions eine dynamische Gruppe und eine IAM-Policy mit den Policy-Anweisungen, die zum Ausführen der vordefinierten Funktion erforderlich sind. Sie haben folgende Möglichkeiten, um fortzufahren:

    • Wenn OCI Functions die dynamische Gruppe und Policy automatisch erstellen soll, nehmen Sie keine Änderungen vor, um das Standardverhalten zu akzeptieren.
    • Wenn OCI Functions die dynamische Gruppe und Policy nicht automatisch erstellen soll, wählen Sie Keine dynamische Gruppe und IAM-Policy erstellen aus.
    Wichtig

    Wenn Sie die Option Dynamische Gruppe und IAM-Policy nicht erstellen auswählen, müssen Sie die dynamische Gruppe und die IAM-Policy selbst definieren. Weitere Informationen finden Sie unter Berechtigungen.

    Sie müssen auch eine IAM-Policy konfigurieren, damit der Secret-Rotationsdienst die Funktion aufrufen kann. Weitere Informationen finden Sie unter Berechtigungen.

  4. Konfigurieren Sie den Funktionsspeicher und die Timeoutwerte wie folgt:
    • Arbeitsspeicher (in MB): Der maximale Arbeitsspeicher, den die Funktion während der Ausführung in Megabyte nutzen kann. Dies ist der Speicher, der dem Funktionsbild zur Verfügung steht. (Standard: 512 MB)
    • Timeout (in Sekunden): Die maximale Zeit, für die die Funktion ausgeführt werden kann, in Sekunden. Wenn die Funktion nicht innerhalb der angegebenen Zeit abgeschlossen wird, bricht das System die Funktion ab. (Standardwert: 300)
  5. (Optional) Konfigurieren Sie Provisioned Concurrency, um anfängliche Verzögerungen beim Aufrufen der Funktion zu minimieren, indem Sie eine Mindestanzahl gleichzeitiger Funktionsaufrufe angeben, für die Sie die Ausführungsinfrastruktur ständig verfügbar machen möchten. (Standard: Nicht aktiviert)

    Wenn diese Option ausgewählt ist, geben Sie die Anzahl der bereitgestellten Nebenläufigkeitseinheiten an, die dieser Funktion zugewiesen sind. Standard: 20.

    Weitere Informationen zum bereitgestellten gleichzeitigen Zugriff finden Sie unter Anfängliche Latenz mit bereitgestelltem gleichzeitigem Zugriff reduzieren.

  6. Geben Sie optional beliebige Tags in den Abschnitt Tags ein. Wenn Sie über Berechtigungen zum Erstellen von Ressourcen verfügt, sind Sie auch berechtigt: Freiformtags auf diese Ressource anwenden. Um ein definiertes Tag anzuwenden, benötigen Sie Die Berechtigungen zum Verwenden des Tag-Namespace. Weitere Informationen zum Tagging finden Sie unter Ressourcentags. Wenn Sie nicht sicher sind, ob Tags angewendet werden sollen, überspringen Sie diese Option, oder fragen Sie einen Administrator. Sie können Tags später anwenden.
  7. Klicken Sie auf Erstellen.

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>"
Hinweis

Ersetzen Sie <function-ocid> durch die OCID der Funktion, die Sie in den vorherigen Schritten erstellt haben.
Hinweis

Ersetzen Sie <dynamic-group-name> durch den Namen der dynamischen Gruppe, die Sie mit der OCID der Funktion erstellt haben.
Hinweis

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.

  1. Erstellen Sie eine Funktion mit dieser PBF, und kopieren Sie die Funktions-ID.
    1. Öffnen Sie das Navigationsmenü, wählen Sie Identität und Sicherheit und dann Vault aus.
    2. Wählen Sie unter Listengeltungsbereich ein Compartment mit den Secrets aus, die Sie in einem Vault erstellt haben.
    3. 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.
  2. Wählen Sie Zielsystemtyp als Funktion für Rotationen aus.
  3. Fügen Sie die aus Schritt 1 kopierte Funktions-ID als Zielsystem-ID hinzu.
  4. 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.

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:

  • Bei Verwendung der OCI-CLI: Verwenden Sie --read-timeout 300
  • Bei Verwendung des OCI-SDK: Legen Sie den Lesetimeout beim Erstellen des Clients auf 300 fest.
  • Bei Verwendung von DBMS_CLOUD.SEND_REQUEST: Verwenden Sie UTL_HTTP.set_transfer_timeout(300);

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"