Python-Anwendungen mit einem Wallet (mTLS) verbinden

Sie können Python-Anwendungen mit einem Wallet mit Ihrer Autonomous Database-Instanz verbinden.

Die Verbindung einer Python-Anwendung mit einem Wallet (mTLS) bietet verbesserte Sicherheit für Authentifizierung und Verschlüsselung. Die Sicherheit wird mit Clientzugangsdaten (durch Angabe eines Benutzernamens und Kennworts) durchgesetzt.

Der Standard-Thin-Modus des python-oracledb-Treibers stellt eine direkte Verbindung zu Oracle Database her. Der Treiber kann optional die Oracle-Client-Librarys "Thick mode" für einige zusätzliche Funktionen verwenden. Die Oracle Client-Librarys können von Oracle Instant Client, dem vollständigen Oracle Client oder von einer Oracle Database-Installation stammen.

Führen Sie die folgenden Schritte aus, um Ihre Python-Anwendung mit einem Wallet (mTLS) mit einer Autonomous Database-Instanz zu verbinden:

  1. Python und den python-oracledb-Treiber installieren
  2. Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkkonnektivität aktivieren
  3. Führen Sie diesen Schritt aus, wenn Sie nur eine Verbindung im Thin-Modus herstellen möchten: Python-Anwendung mit python-oracledb Thin-Modus mit einem Wallet (mTLS) ausführen
  4. Führen Sie diesen Schritt aus, wenn Sie eine Verbindung im Thick-Modus herstellen möchten: Python-Anwendung mit python-oracledb Thick Mode with a Wallet (mTLS) ausführen

Themen

Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkkonnektivität aktivieren

Rufen Sie die Clientsicherheitszugangsdaten ab, um eine Verbindung zu einer Autonomous Database-Instanz herzustellen.

  1. Laden Sie eine Wallet-Datei aus der Autonomous Database-Instanz herunter, um eine ZIP-Datei mit den Clientsicherheitszugangsdaten und den Netzwerkkonfigurationseinstellungen abzurufen, die für den Zugriff auf eine Autonomous Database-Instanz erforderlich sind.

    Rufen Sie die Clientsicherheitszugangsdaten (Datei wallet.zip) ab:

    • ADMIN-Benutzer: Klicken Sie in der Oracle Cloud Infrastructure-Konsole auf Datenbankverbindung. Siehe Clientzugangsdaten (Wallets) herunterladen.

    • Anderer Benutzer (ohne Administrator): Rufen Sie das Oracle Wallet vom Administrator für Ihre Autonomous Database-Instanz ab.

    Hinweis

    Schützen Sie die Datei wallet.zip und ihren Inhalt, um einen nicht autorisierten Datenbankzugriff zu verhindern.
  2. Dekomprimieren Sie die Clientzugangsdaten-Datei (wallet.zip).

Python-Anwendung mit python-oracledb Thin-Modus mit einem Wallet (mTLS) ausführen

Standardmäßig verwendet python-oracledb den Thin-Modus, um eine direkte Verbindung zur Autonomous Database-Instanz herzustellen.

Im Thin-Modus werden nur zwei Dateien aus dem Wallet-ZIP benötigt:

  • tnsnames.ora: Ordnet den Datenbankservices Net Service-Namen zu, die für Anwendungsverbindungszeichenfolgen verwendet werden.

  • ewallet.pem: Aktiviert SSL-/TLS-Verbindungen im Thin-Modus.

So stellen Sie Verbindungen im Thin-Modus her:

  1. Verschieben Sie die Dateien tnsnames.ora und ewallet.pem in einen Speicherort auf dem System.
    • Beispiel unter Linux:

      /opt/OracleCloud/MYDB
    • Beispiel für Windows:

      C:\opt\OracleCloud\MYDB
  2. Legen Sie in Ihrer Python-Anwendung die folgenden Verbindungsparameter fest, um eine Verbindung zu einer Autonomous Database-Instanz herzustellen:
    • config_dir: Gibt das Verzeichnis an, das tnsnames.ora enthält.
    • dsn: Hiermit geben Sie den gewünschten Netzwerkalias aus der Datei tnsnames.ora an.
    • password: Gibt das Kennwort des Datenbankbenutzers an.
    • user: Gibt den Datenbankbenutzer an.
    • wallet_location: Gibt das Verzeichnis an, das die PEM-Datei (ewallet.pem) enthält.
    • wallet_password: Gibt das Kennwort für die PEM-Datei an (ewallet.pem). Sie legen dieses Kennwort fest, wenn Sie die Datei wallet.zip herunterladen.
    • Beispiel: Melden Sie sich unter Linux mit oracledb.connect und dem Netzwerkservicenamen db2024_low als ADMIN-Benutzer an (der Servicename befindet sich in tnsnames.ora):

      connection=oracledb.connect(
           config_dir="/opt/OracleCloud/MYDB",
           user="admin",
           password=password,
           dsn="db2024_low",
           wallet_location="/opt/OracleCloud/MYDB",
           wallet_password=wallet_pw)
    • Beispiel: Wenn Sie unter Windows eine Verbindung als ADMIN-Benutzer mit oracledb.connect und dem Netzwerkservicenamen db2024_low herstellen möchten (der Servicename befindet sich in tnsnames.ora):

      connection=oracledb.connect(
           config_dir=r"C:\opt\OracleCloud\MYDB",
           user="admin",
           password=password,
           dsn="db2024_low",
           wallet_location=r"C:\opt\OracleCloud\MYDB",
           wallet_password=wallet_pw)

      Die Verwendung einer "raw"-Zeichenfolge r"..." bedeutet, dass umgekehrte Schrägstriche als Verzeichnistrennzeichen behandelt werden.

    Wie in diesem Beispiel gezeigt, werden wallet_location und config_dir auf dasselbe Verzeichnis gesetzt (und das Verzeichnis enthält tnsnames.ora und ewallet.pem). Es ist nicht erforderlich, dasselbe Verzeichnis für diese Dateien anzugeben.

Wenn Sie sich hinter einer Firewall befinden, können Sie TLS/SSL-Verbindungen über einen Proxy tunneln, indem Sie HTTPS_PROXY im Verbindungsdeskriptor verwenden oder Verbindungsattribute festlegen. Die erfolgreiche Verbindung hängt von bestimmten Proxykonfigurationen ab. Oracle empfiehlt die Verwendung eines Proxys in einer Produktionsumgebung aufgrund möglicher Auswirkungen auf die Performance nicht.

Im Thin-Modus können Sie einen Proxy angeben, indem Sie die Parameter https_proxy und http_proxy_port hinzufügen.

Beispiel unter Linux:

connection=oracledb.connect(
     config_dir="/opt/OracleCloud/MYDB",
     user="admin",
     password=password,
     dsn="db2024_low",
     wallet_location="/opt/OracleCloud/MYDB",
     wallet_password=wallet_pw,
     https_proxy='myproxy.example.com',
     https_proxy_port=80)

Beispiel für Windows:

connection=oracledb.connect(
     config_dir=r"C:\opt\OracleCloud\MYDB",
     user="admin",
     password=password,
     dsn="db2024_low",
     wallet_location=r"C:\opt\OracleCloud\MYDB",
     wallet_password=wallet_pw,
     https_proxy='myproxy.example.com',
     https_proxy_port=80)

Python-Anwendung mit python-oracledb Thick Mode mit einem Wallet (mTLS) ausführen

Standardmäßig wird python-oracledb im Thin-Modus ausgeführt, der sich direkt bei Oracle Database anmeldet. Zusätzliche python-oracledb-Funktionen sind verfügbar, wenn der Treiber im Thick-Modus ausgeführt wird.
Hinweis

Im Thick-Modus müssen die Oracle-Client-Librarys dort installiert sein, wo Sie Python ausführen. Sie müssen auch oracledb.init_oracle_client() in Ihrem Python-Code aufrufen.

Im Thick-Modus sind die folgenden drei Dateien aus der Wallet-ZIP-Datei erforderlich:

  • tnsnames.ora: Enthält die Net Service-Namen, die für Anwendungsverbindungszeichenfolgen verwendet werden, und ordnet die Zeichenfolgen den Datenbankservices zu.

  • sqlnet.ora: Gibt die clientseitige SQL*Net-Konfiguration an.

  • cwallet.sso: Enthält das automatisch geöffnete SSO-Wallet.

So stellen Sie Verbindungen im Thick-Modus her:

  1. Speichern Sie die Dateien tnsnames.ora, sqlnet.ora und cwallet.sso auf dem System.

    Verwenden Sie eine von zwei Optionen, um diese Dateien auf Ihrem System zu speichern:

    • Wenn Sie Instant Client verwenden, verschieben Sie die Dateien in eine Unterverzeichnishierarchie network/admin unter dem Instant Client-Verzeichnis. Abhängig von der Architektur oder Ihrem Clientsystem und dem Ort, an dem Sie Instant Client installiert haben, sollten die Dateien sich in einem Verzeichnis befinden, z. B.:

      /home/myuser/instantclient_19_21/network/admin

      oder

      /usr/lib/oracle/19.21/client64/lib/network/admin

      Beispiel: Wenn Sie unter Linux den vollständigen Oracle-Client verwenden, verschieben Sie die Dateien in $ORACLE_HOME/network/admin.

    • Alternativ können Sie die Dateien in ein beliebiges zugängliches Verzeichnis verschieben.

      Beispiel: Verschieben Sie die Dateien unter Linux in das Verzeichnis /opt/OracleCloud/MYDB, und bearbeiten Sie sqlnet.ora, um das Wallet-Speicherortverzeichnis in das Verzeichnis zu ändern, das die Datei cwallet.sso enthält.

      Beispiel: Bearbeiten Sie unter Linux sqlnet.ora wie folgt:

      WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB")))
      SSL_SERVER_DN_MATCH=yes

      Wenn sich die Konfigurationsdateien nicht im Standardspeicherort befinden, muss Ihre Anwendung angeben, wo sie sich befinden, entweder mit dem Parameter config_dir im Aufruf oracledb.init_oracle_client() oder durch Festlegen der Umgebungsvariablen TNS_ADMIN.

      Hinweis

      Keine dieser Einstellungen ist erforderlich. Sie müssen sqlnet.ora nicht bearbeiten, wenn Sie alle Konfigurationsdateien im Verzeichnis network/admin ablegen.
  2. Legen Sie in Ihrer Python-Anwendung die folgenden Initialisierungs- und Verbindungsparameter fest, um eine Verbindung zur Autonomous Database-Instanz herzustellen:
    • config_dir: Gibt das Konfigurationsverzeichnis an, wenn Sie die Konfigurationsdateien speichern. Dies ist nur erforderlich, wenn die Konfigurationsdateien in einem Verzeichnis außerhalb des Instant Client Configuration Directory network/admin abgelegt werden.
    • dsn: Gibt den gewünschten Netzwerkalias aus der Datei tnsnames.ora an.
    • password: Gibt das Kennwort des Datenbankbenutzers an.
    • user: Gibt den Datenbankbenutzer an.

    Stellen Sie im ersten Fall für die Platzierung der Konfigurationsdateien mit Ihren Datenbankzugangsdaten eine Verbindung zur Autonomous Database-Instanz her, indem Sie den Parameter dsn von tnsnames.ora auf den gewünschten Netzwerkalias setzen.

    Beispiel: So stellen Sie eine Verbindung als ADMIN-Benutzer mit oracledb.init_oracle_client her und stellen eine Verbindung zum Netzwerkservicenamen db2024_low her (wo der Servicename in tnsnames.ora enthalten ist):

    oracledb.init_oracle_client()
       connection=oracledb.connect(
           user="admin",
           password=password,
           dsn="db2024_low")

    Wenn sich Konfigurationsdateien in einem Verzeichnis außerhalb des Instant Client-Konfigurationsverzeichnisses befinden, legen Sie den Parameter config_dir fest, wenn Sie oracledb.init_oracle_client aufrufen.

    • Beispiel: Melden Sie sich unter Linux als ADMIN-Benutzer mit dem Netzwerkservicenamen db2024_low an:

      oracledb.init_oracle_client(config_dir="/opt/OracleCloud/MYDB")
         connection=oracledb.connect(
            user="admin",
            password=password,
            dsn="db2024_low")
    • Beispiel: Stellen Sie unter Windows eine Verbindung als ADMIN-Benutzer mit dem Netzwerkservicenamen db2024_low her:

      oracledb.init_oracle_client(config_dir=r"C:\opt\OracleCloud\MYDB")
         connection=oracledb.connect(
            user="admin",
            password=password,
            dsn="db2024_low")

      Die Verwendung einer "raw"-Zeichenfolge r"..." bedeutet, dass umgekehrte Schrägstriche als Verzeichnistrennzeichen behandelt werden.

Wenn Sie sich hinter einer Firewall befinden, können Sie TLS/SSL-Verbindungen über einen Proxy tunneln, indem Sie HTTPS_PROXY im Verbindungsdeskriptor verwenden oder Verbindungsattribute festlegen. Die erfolgreiche Verbindung hängt von bestimmten Proxykonfigurationen ab. Oracle empfiehlt die Verwendung eines Proxys in einer Produktionsumgebung aufgrund möglicher Auswirkungen auf die Performance nicht.

Im Thick-Modus können Sie einen Proxy angeben, indem Sie die Datei sqlnet.ora bearbeiten und eine Zeile hinzufügen:

SQLNET.USE_HTTPS_PROXY=on

Bearbeiten Sie außerdem tnsnames.ora, und fügen Sie einen HTTPS_PROXY-Proxynamen und einen HTTPS_PROXY_PORT-Port zur Verbindungsdeskriptor-Adressliste eines beliebigen Servicenamens hinzu, den Sie verwenden möchten.

Beispiel:

mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)

Informationen zum Thick-Modus finden Sie unter Enabling python-oracledb Thick mode.