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 erweiterte Sicherheit für Authentifizierung und Verschlüsselung. Die Sicherheit wird dabei mit Clientzugangsdaten durchgesetzt (durch Angabe eines Benutzernamens und Kennworts).

Der standardmäßige "Thin-Modus" des Treibers python-oracledb stellt eine direkte Verbindung zu Oracle Database her. Der Treiber kann optional Oracle-Client-Librarys, den "Thick-Modus", für 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.

So verbinden Sie Ihre Python-Anwendung mit einem Wallet (mTLS) mit einer Autonomous Database-Instanz:

  1. Python und den python-oracledb-Treiber installieren
  2. Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkverbindung aktivieren
  3. Führen Sie diesen Schritt aus, wenn Sie nur im Thin-Modus eine Verbindung 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 die Verbindung im Thick-Modus herstellen möchten: Python-Anwendung mit python-oracledb-Thick-Modus mit einem Wallet (mTLS) ausführen

Themen

Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkverbindung aktivieren

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

  1. Sie können eine Wallet-Datei von der Autonomous Database-Instanz herunterladen, um eine ZIP-Datei mit den Clientsicherheitszugangsdaten und den Netzwerkkonfigurationseinstellungen für den Zugriff auf eine Autonomous Database-Instanz zu erhalten.

    Beziehen Sie die Clientsicherheitszugangsdaten (Datei wallet.zip):

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

    • Sonstiger Benutzer (kein Administrator): Beziehen Sie das Oracle Wallet vom Administrator für die Autonomous Database-Instanz.

    Hinweis

    Schützen Sie die Datei wallet.zip und ihren Inhalt, um einen nicht autorisierten Datenbankzugriff zu verhindern.
  2. Dekomprimieren Sie die Clientzugangsdatendatei (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 der Wallet-ZIP-Datei benötigt:

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

  • ewallet.pem: Ermöglicht SSL-/TLS-Verbindungen im Thin-Modus.

So verbinden Sie sich im Thin-Modus:

  1. Verschieben Sie die Dateien tnsnames.ora und ewallet.pem in ein Verzeichnis auf Ihrem System.

    Beispiel unter Linux:

    /opt/OracleCloud/MYDB

    Beispiel für Windows:

    C:\opt\OracleCloud\MYDB
  2. Legen Sie in der Python-Anwendung die folgenden Verbindungsparameter für die Verbindung mit einer Autonomous Database-Instanz fest:
    • config_dir: Gibt das Verzeichnis an, in dem tnsnames.ora enthalten ist.
    • dsn: Geben Sie den gewünschten Netzwerkalias aus der Datei tnsnames.ora an.
    • password: Gibt Sie das Kennwort des Datenbankbenutzers an.
    • user: Gibt den Datenbankbenutzer an.
    • wallet_location: Gibt das Verzeichnis an, das die PEM-Datei enthält (ewallet.pem).
    • wallet_password: Gibt das Kennwort für die PEM-Datei (ewallet.pem) an. Sie legen dieses Kennwort fest, wenn Sie die Datei wallet.zip herunterladen.

    Beispiel: Melden Sie sich unter Linux als ADMIN-Benutzer mit oracledb.connect und dem Netzwerkservicenamen db2024_low 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: Unter Windows können Sie sich als ADMIN-Benutzer mit oracledb.connect und dem Netzwerkservicenamen db2024_low anmelden (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, sind wallet_location und config_dir auf dasselbe Verzeichnis gesetzt (und das Verzeichnis enthält tnsnames.ora und ewallet.pem). Für diese Dateien muss nicht dasselbe Verzeichnis angegeben 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. Eine erfolgreiche Verbindung hängt von bestimmten Proxykonfigurationen ab. Oracle empfiehlt die Verwendung eines Proxys in einer Produktionsumgebung nicht, da sich dies möglicherweise auf die Performance auswirkt.

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-Modus mit einem Wallet (mTLS) ausführen

Standardmäßig wird python-oracledb im Thin-Modus ausgeführt, mit dem eine direkte Verbindung zu Oracle Database hergestellt wird. Bei der Ausführung des Treibers im Thick-Modus sind zusätzliche python-oracledb-Features verfügbar.
Hinweis

Im Modus "Dick" müssen die Oracle-Client-Librarys dort installiert sein, wo Sie Python ausführen. Außerdem müssen Sie 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 clientbezogene SQL*Net-Konfiguration an.

  • cwallet.sso: Enthält das automatisch offene SSO-Wallet.

So verbinden Sie sich im Thick-Modus:

  1. Speichern Sie die Dateien tnsnames.ora, sqlnet.ora und cwallet.sso in Ihrem 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 sich die Dateien in einem Verzeichnis wie dem folgenden befinden:

      /home/myuser/instantclient_19_21/network/admin

      or

      /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: Bei Linux verschieben Sie die Dateien in das Verzeichnis /opt/OracleCloud/MYDB, und bearbeiten Sie sqlnet.ora, um das Verzeichnis des Wallet-Speicherorts in das Verzeichnis zu ändern, das die Datei cwallet.sso enthält.

      Beispiel: Unter Linux bearbeiten Sie 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 Standardverzeichnis befinden, muss Ihre Anwendung angeben, wo sie sich befinden. Verwenden Sie dazu den Parameter config_dir im Aufruf oracledb.init_oracle_client(), oder legen Sie die Umgebungsvariable TNS_ADMIN fest.

      Hinweis

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

    Im ersten Fall für die Platzierung der Konfigurationsdateien melden Sie sich mit Ihren Datenbankzugangsdaten bei der Autonomous Database-Instanz an, indem Sie den Parameter dsn auf den gewünschten Netzwerkalias aus tnsnames.ora setzen.

    Beispiel: So melden Sie sich als ADMIN-Benutzer mit oracledb.init_oracle_client an und mit dem Netzwerkservicenamen db2024_low an (wo sich der Servicename in tnsnames.ora befindet):

    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: Unter Linux eine Verbindung als ADMIN-Benutzer mit dem Netzwerkservicennamen db2024_low herstellen:

    oracledb.init_oracle_client(config_dir="/opt/OracleCloud/MYDB")
       connection=oracledb.connect(
          user="admin",
          password=password,
          dsn="db2024_low")

    Beispiel: Unter Windows, um sich als ADMIN-Benutzer mit dem Netzwerkservicenamen db2024_low anzumelden:

    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. Eine erfolgreiche Verbindung hängt von bestimmten Proxykonfigurationen ab. Oracle empfiehlt die Verwendung eines Proxys in einer Produktionsumgebung nicht, da sich dies möglicherweise auf die Performance auswirkt.

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 für jeden Servicenamen, den Sie verwenden möchten, einen HTTPS_PROXY-Proxynamen und einen HTTPS_PROXY_PORT-Port zur Adressliste des Verbindungsdeskriptors hinzu.

Beispiele:

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

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