Python-Anwendungen mit mTLS verbinden

Gilt nur für: Anwendbar Exadata Cloud@Customer

Sie können Python-Anwendungen mit mTLS mit Ihrer Autonomous AI Database-Instanz verbinden.

Die Verbindung einer Python-Anwendung mit mTLS bietet verbesserte Sicherheit für Authentifizierung und Verschlüsselung, und 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 mTLS mit einer autonomen KI-Datenbankinstanz 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 Mode (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 (mTLS) ausführen

Python und den python-oracledb-Treiber installieren

Um von Ihrer Python-Anwendung aus eine Verbindung zur autonomen KI-Datenbank herzustellen, installieren Sie Python und den python-oracledb-Treiber.

  1. Installieren Sie Python 3, wenn es noch nicht verfügbar ist.

    Die von Ihnen verwendete Version von Python hängt von Ihrem clientseitigen Betriebssystem und Ihrer Hardware ab. Beispiel: Windows, Linux, macOS und andere.

    Hinweis: Oracle empfiehlt, dass Sie mit den Treiberreleases "Python" und "python-oracledb" auf dem neuesten Stand sind.

  2. Installieren Sie den python-oracledb-Treiber von PyPI.

    Der python-oracledb-Treiber ist ein Erweiterungsmodul der Python-Programmiersprache, mit dem Python-Programme eine Verbindung zu Oracle Database herstellen können. Der python-oracledb-Treiber ist das umbenannte, neue Major Release des beliebten cx_Oracle-Treibers.

    Unterstützte python-oracledb-Treiberversionen: python-oracledb 1.0 (oder höher)

    Führen Sie den folgenden Befehl aus, um ein Upgrade von python durchzuführen:

     python -m pip install oracledb --upgrade
    

    Daraufhin sollte in der folgenden Ausgabe Folgendes angezeigt werden:

     Collecting oracledb
       Downloading oracledb-1.0.3-cp310-cp310-win_amd64.whl (1.0 MB)
    
          ---------------------------------------- 1.0/1.0 MB 1.8 MB/s eta 0:00:00
     Collecting cryptography>=3.4
       Downloading cryptography-37.0.4-cp36-abi3-win_amd64.whl (2.4 MB)
    
          ---------------------------------------- 2.4/2.4 MB 3.5 MB/s eta 0:00:00
     Collecting cffi>=1.12
       Downloading cffi-1.15.1-cp310-cp310-win_amd64.whl (179 kB)
    
          ---------------------------------------- 179.1/179.1 kB 5.4 MB/s eta 0:00:00
     Collecting pycparser
       Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
    
          ---------------------------------------- 118.7/118.7 kB 7.2 MB/s eta 0:00:00
     Installing collected packages: pycparser, cffi, cryptography, oracledb
     Successfully installed cffi-1.15.1 cryptography-37.0.4 oracledb-1.0.3 pycparser-2.21
    

    Hinweise zur Installation von python-oracledb:

    • Wenn Sie sich hinter einem Proxy befinden, verwenden Sie die Option --proxy, um dem Befehl einen Proxyserver hinzuzufügen. Beispiel:

      python -m pip install oracledb --upgrade --proxy=http://proxy.example.com:80
      
    • Wenn Sie nicht zum Schreiben in Systemverzeichnisse berechtigt sind, nehmen Sie die Option --user auf. Beispiel:

      python -m pip install oracledb --upgrade --user
      
    • Wenn für Ihre Plattform kein Binärpackage verfügbar ist, lädt die Ausführung von pip stattdessen das Quellpackage herunter. Die Quelle wird kompiliert und die resultierende Binärdatei installiert.

    Weitere Optionen und Tipps finden Sie unter Installing python-oracledb.

  3. Wenn Sie den python-oracledb-Treiber im Thick-Modus verwenden möchten, installieren Sie die Oracle Client-Software.

    Standardmäßig wird python-oracledb im Thin-Modus ausgeführt, der sich direkt bei Oracle Database anmeldet. Im Thin-Modus sind keine Oracle-Clientbibliotheken erforderlich. Einige zusätzliche Funktionen sind jedoch verfügbar, wenn python-oracledb im Thick-Modus ausgeführt wird.

    Hinweis: Informationen zu unterstützten Funktionen im Thin- und Thick-Modus von python-oracledb finden Sie unter Oracle Database-Features, die von python-oracledb unterstützt werden. Nicht alle in diesem Link angezeigten Features sind in Autonomous AI Database verfügbar.

    Python-oracledb verwendet den Thick-Modus, wenn Sie entweder die Oracle Instant Client-Librarys oder die Oracle Database Client-Librarys verwenden und oracledb.init_oracle_client() in Ihrem Python-Code aufrufen.

    Bei der Installation der Oracle Client-Software bestehen die erforderlichen Mindestversionen für mTLS- und TLS-Verbindungen wie folgt:

    • Gegenseitige TLS-(mTLS-)Verbindungen:

      • Wenn sich Ihre Datenbank auf einem Remotecomputer befindet, laden Sie das kostenlose Oracle Instant Client-Package "Basic" oder "Basic Light" für Ihre Betriebssystemarchitektur herunter. Verwenden Sie eine unterstützte Version: Oracle Instant Client: 18.19 (oder höher), 19.2 (oder höher) oder 21 (Basisrelease oder höher).

      • Alternativ können Sie die vollständigen Oracle Database-Clientbibliotheken verwenden, wenn sie auf Ihrem System verfügbar sind (einschließlich Full Oracle Database Client: Oracle Database Client: 18.19 (oder höher), 19.2 (oder höher) oder 21 (Basisrelease oder höher).

    • TLS-Verbindungen: Oracle Call Interface-(OCI-)Clients unterstützen die TLS-Authentifizierung, wenn Sie die folgenden Clientversionen verwenden:

      • Oracle Instant Client/Oracle Database Client 19.14 (oder höher) und 21.5 (oder höher) - alle Plattformen

      • Alternativ können Sie die vollständigen Oracle Database-Clientbibliotheken verwenden, wenn sie auf Ihrem System verfügbar sind, einschließlich Full Oracle Database Client 19.14 (oder höher) und 21.5 (oder höher).

Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkkonnektivität aktivieren

Rufen Sie Client-Sicherheitszugangsdaten ab, um eine Verbindung zu einer autonomen AI-Datenbankinstanz herzustellen.

  1. Laden Sie eine Wallet-Datei aus der Instanz der autonomen KI-Datenbank herunter, um eine ZIP-Datei mit den Clientsicherheitszugangsdaten und den Netzwerkkonfigurationseinstellungen abzurufen, die für den Zugriff auf eine autonome KI-Datenbankinstanz 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 AI 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 Mode (mTLS) ausführen

Standardmäßig verwendet python-oracledb den Thin-Modus, um eine direkte Verbindung zur Instanz der autonomen KI-Datenbank herzustellen.

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

So stellen Sie Verbindungen im Thin-Modus her:

  1. Verschieben Sie die Dateien tnsnames.ora und ewallet.pem in einen Speicherort auf dem System.

    Linux

    Beispiel unter Linux:

     /opt/OracleCloud/MYDB
    

    Windows

    Beispiel für Windows:

     C:\opt\OracleCloud\MYDB
    
  2. Legen Sie in Ihrer Python-Anwendung die folgenden Verbindungsparameter fest, um eine Verbindung zu einer autonomen AI-Datenbankinstanz 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.

    Linux

    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)
    

    Windows

    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 mit HTTPS_PROXY im Verbindungsdeskriptor oder durch Festlegen von Verbindungsattributen tunneln. 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. Weitere Informationen finden Sie unter HTTPS_PROXY in der Oracle Database 19c Database Net Services-Referenz oder in der Oracle Database 26ai Database Net Services-Referenz.

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 (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:

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 Instanz der autonomen KI-Datenbank 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 Instanz der autonomen KI-Datenbank her, indem Sie den Parameter dsn aus 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.

    Linux

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

    Windows

    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 mit HTTPS_PROXY im Verbindungsdeskriptor oder durch Festlegen von Verbindungsattributen tunneln. 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. Weitere Informationen finden Sie unter HTTPS_PROXY in der Oracle Database 19c Database Net Services-Referenz oder in der Oracle Database 26ai Database Net Services-Referenz.

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.

Verwandte Inhalte

Verbindung zu einer dedizierten autonomen KI-Datenbank herstellen