Python-Anwendungen mit mTLS verbinden
Gilt nur für:
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:
- Python und den python-oracledb-Treiber installieren
- Sicherheitszugangsdaten (Oracle Wallet) abrufen und Netzwerkkonnektivität aktivieren
- 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
- 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.
-
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.
-
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 --upgradeDaraufhin 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.21Hinweise 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
--userauf. 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
pipstattdessen das Quellpackage herunter. Die Quelle wird kompiliert und die resultierende Binärdatei installiert.
Weitere Optionen und Tipps finden Sie unter Installing python-oracledb.
-
-
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.
-
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.zipund ihren Inhalt, um einen nicht autorisierten Datenbankzugriff zu verhindern.
-
-
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:
-
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:
-
Verschieben Sie die Dateien
tnsnames.oraundewallet.pemin einen Speicherort auf dem System.Linux
Beispiel unter Linux:
/opt/OracleCloud/MYDBWindows
Beispiel für Windows:
C:\opt\OracleCloud\MYDB -
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, dastnsnames.oraenthält. -
dsn: Hiermit geben Sie den gewünschten Netzwerkalias aus der Dateitnsnames.oraan. -
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 Dateiwallet.zipherunterladen.
Linux
Beispiel: Melden Sie sich unter Linux mit
oracledb.connectund dem Netzwerkservicenamendb2024_lowals ADMIN-Benutzer an (der Servicename befindet sich intnsnames.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.connectund dem Netzwerkservicenamendb2024_lowherstellen möchten (der Servicename befindet sich intnsnames.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_locationundconfig_dirauf dasselbe Verzeichnis gesetzt (und das Verzeichnis enthälttnsnames.oraundewallet.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:
-
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:
-
Speichern Sie die Dateien
tnsnames.ora,sqlnet.oraundcwallet.ssoauf 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/adminunter 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/adminOder
/usr/lib/oracle/19.21/client64/lib/network/adminBeispiel: 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 Siesqlnet.ora, um das Wallet-Speicherortverzeichnis in das Verzeichnis zu ändern, das die Dateicwallet.ssoenthält.Beispiel: Bearbeiten Sie unter Linux
sqlnet.orawie folgt:WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB"))) SSL_SERVER_DN_MATCH=yesWenn sich die Konfigurationsdateien nicht im Standardspeicherort befinden, muss Ihre Anwendung angeben, wo sie sich befinden, entweder mit dem Parameter
config_dirim Aufruforacledb.init_oracle_client()oder durch Festlegen der UmgebungsvariablenTNS_ADMIN.Hinweis: Keine dieser Einstellungen ist erforderlich. Sie müssen
sqlnet.oranicht bearbeiten, wenn Sie alle Konfigurationsdateien im Verzeichnisnetwork/adminablegen.
-
-
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 Directorynetwork/adminabgelegt werden. -
dsn: Gibt den gewünschten Netzwerkalias aus der Dateitnsnames.oraan. -
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
dsnaustnsnames.oraauf den gewünschten Netzwerkalias setzen.Beispiel: So stellen Sie eine Verbindung als ADMIN-Benutzer mit
oracledb.init_oracle_clienther und stellen eine Verbindung zum Netzwerkservicenamendb2024_lowher (wo der Servicename intnsnames.oraenthalten 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_dirfest, wenn Sieoracledb.init_oracle_clientaufrufen.Linux
Beispiel: Melden Sie sich unter Linux als ADMIN-Benutzer mit dem Netzwerkservicenamen
db2024_lowan: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_lowher: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