Python-Anwendungen mit einem Wallet (mTLS) verbinden
Sie können Python-Anwendungen mit einer Wallet mit Ihrer Autonomous AI 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 AI 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 AI Database-Installation stammen.
Führen Sie die folgenden Schritte aus, um Ihre Python-Anwendung mit einem Wallet (mTLS) mit einer autonomen AI-Datenbankinstanz zu verbinden:
- Python und den python-oracledb-Treiber installieren
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 komprimierte Datei zu erhalten, die die Clientsicherheitszugangsdaten und Netzwerkkonfigurationseinstellungen enthält, 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
Hinweis: Schützen Sie die Dateiwallet.zipund ihren Inhalt, um nicht autorisierten Datenbankzugriff zu verhindern. -
-
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 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.Beispiel unter Linux:
/opt/OracleCloud/MYDBBeispiel 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.
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)Beispiel: Stellen Sie unter Windows eine Verbindung als ADMIN-Benutzer mit
oracledb.connectund dem Netzwerkservicenamendb2024_lowher (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 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 eine direkte Verbindung zu Oracle AI Database herstellt. Zusätzliche python-oracledb-Funktionen sind verfügbar, wenn der Treiber im Thick-Modus ausgeführt wird.
Hinweis
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 nach
$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
Hinweis: Keine dieser Einstellungen ist erforderlich. Sie müssensqlnet.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: Um sich als ADMIN-Benutzer mit
oracledb.init_oracle_clientanzumelden und eine Verbindung mit dem Netzwerkservicenamendb2024_lowherzustellen (wobei 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 Configuration Directory befinden, legen Sie den Parameter
config_dirfest, wenn Sieoracledb.init_oracle_clientaufrufen.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")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 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=onBearbeiten 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.