Connettere le applicazioni Python con mTLS
SI APPLICA A:
Solo Exadata Cloud@Customer
Puoi connettere le applicazioni Python all'istanza di Autonomous AI Database utilizzando mTLS.
La connessione di un'applicazione Python con mTLS fornisce una maggiore sicurezza per l'autenticazione e la cifratura e la sicurezza viene applicata utilizzando le credenziali del client (fornendo un nome utente e una password).
La "modalità sottile" predefinita del driver python-oracledb si connette direttamente a Oracle Database. Il driver può facoltativamente utilizzare le librerie Oracle Client, la "modalità Spessa", per alcune funzionalità aggiuntive. Le librerie Oracle Client possono provenire da Oracle Instant Client, dall'intero client Oracle o da un'installazione di Oracle Database.
Per connettere l'applicazione Python a un'istanza di Autonomous AI Database mediante mTLS, effettuare le operazioni riportate di seguito.
- Installare Python e il driver python-oracledb
- Ottenere le credenziali di sicurezza (Oracle Wallet) e abilitare la connettività di rete
- Eseguire questo passo se si desidera connettersi solo in modalità sottile: Eseguire l'applicazione Python con la modalità sottile python-oracledb (mTLS)
- Eseguire questo passo se si desidera eseguire la connessione in modalità Spessa: Esegui applicazione Python con modalità Spessa python-oracledb (mTLS)
Installare Python e il driver python-oracledb
Per connettersi a Autonomous AI Database dall'applicazione Python, installare Python e il driver python-oracledb.
-
Installare Python 3, se non è già disponibile.
La versione di Python utilizzata dipende dal sistema operativo e dall'hardware lato client. Ad esempio Windows, Linux, macOS e altri.
Nota: Oracle consiglia di rimanere aggiornati sulle release dei driver Python e python-oracledb.
-
Installare il driver python-oracledb da PyPI.
Il driver python-oracledb è un modulo di estensione linguaggio di programmazione Python che consente ai programmi Python di connettersi a Oracle Database. Il driver python-oracledb è la nuova e rinominata release principale del popolare driver cx_Oracle.
Versioni del driver python-oracledb supportate: python-oracledb 1.0 (o versione successiva)
Eseguire il comando seguente per aggiornare python:
python -m pip install oracledb --upgradeL'output dovrebbe essere simile al seguente:
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.21Note per l'installazione di python-oracledb:
-
Se si utilizza un proxy, utilizzare l'opzione
--proxyper aggiungere un server proxy al comando. Ad esempio:python -m pip install oracledb --upgrade --proxy=http://proxy.example.com:80 -
Nel caso in cui non si disponga dell'autorizzazione per scrivere nelle directory di sistema, includere l'opzione
--user. Ad esempio:python -m pip install oracledb --upgrade --user -
Se non è disponibile un pacchetto binario per la piattaforma in uso, l'esecuzione di
pipcomporta il download del pacchetto di origine. La sorgente è compilata e il binario risultante è installato.
Per ulteriori opzioni e suggerimenti, vedere Installazione di python-oracledb.
-
-
Se si desidera utilizzare il driver python-oracledb in modalità Spessa, installare il software Oracle Client.
Per impostazione predefinita, python-oracledb viene eseguito in modalità sottile che si connette direttamente a Oracle Database. La modalità thin non richiede librerie Oracle Client. Tuttavia, alcune funzionalità aggiuntive sono disponibili quando python-oracledb viene eseguito in modalità Spessa.
Nota: per informazioni sulle funzioni supportate nelle modalità Thin e Thick python-oracledb, vedere Funzioni di Oracle Database supportate da python-oracledb. Non tutte le funzioni mostrate in questo collegamento sono disponibili con Autonomous AI Database.
Python-oracledb utilizza la modalità Spessa quando si utilizzano le librerie client Oracle Instant o le librerie client Oracle Database e si chiama
oracledb.init_oracle_client()nel codice Python.Quando si installa Oracle Client Software, per le connessioni mTLS e TLS sono necessarie versioni minime diverse, come indicato di seguito.
-
Connessioni TLS (mTLS) reciproche:
-
Se il database si trova su un computer remoto, scaricare il pacchetto gratuito Oracle Instant Client 'Basic' o 'Basic Light' per l'architettura del sistema operativo. Utilizzare una versione supportata: Oracle Instant Client: 18.19 (o versione successiva), 19.2 (o versione successiva) o 21 (versione di base o versione successiva).
-
In alternativa, è possibile utilizzare le librerie client Full Oracle Database quando sono disponibili sul sistema (incluso Full Oracle Database Client: Oracle Database Client: 18.19 (o versione successiva), 19.2 (o versione successiva) o 21 (release di base o versione successiva).
-
-
Connessioni TLS: i client Oracle Call Interface (OCI) supportano l'autenticazione TLS se si utilizzano le versioni client riportate di seguito.
-
Oracle Instant Client/Oracle Database Client 19.14 (o versione successiva) e 21.5 (o versione successiva) - tutte le piattaforme
-
In alternativa, è possibile utilizzare le librerie client Oracle Database complete quando sono disponibili sul sistema, inclusi Full Oracle Database Client 19.14 (o versione successiva) e 21.5 (o versione successiva).
-
-
Ottenere le credenziali di sicurezza (Oracle Wallet) e abilitare la connettività di rete
Ottenere le credenziali di sicurezza del client per connettersi a un'istanza di Autonomous AI Database.
-
Scaricare un file wallet dall'istanza di Autonomous AI Database per ottenere un file zip contenente le credenziali di sicurezza client e le impostazioni di configurazione di rete necessarie per accedere a un'istanza di Autonomous AI Database.
Ottenere le credenziali di sicurezza del client (file
wallet.zip):-
Utente ADMIN: nella console di Oracle Cloud Infrastructure, fare clic su Connessione al database. Vedere Download delle credenziali client (wallet).
-
Altro utente (non amministratore): ottenere l'Oracle Wallet dall'amministratore per l'istanza di Autonomous AI Database.
Nota: proteggere il file
wallet.zipe il relativo contenuto per impedire l'accesso non autorizzato al database.
-
-
Decomprimere il file delle credenziali client (
wallet.zip).
Esegui applicazione Python con modalità Thin (mTLS) python-oracledb
Per impostazione predefinita, python-oracledb utilizza la modalità Thin per connettersi direttamente all'istanza di Autonomous AI Database.
In modalità Thin sono necessari solo due file dal file zip del wallet:
-
tnsnames.ora: consente di mappare i nomi dei servizi di rete utilizzati per le stringhe di connessione dell'applicazione ai servizi di database. -
ewallet.pem: abilita le connessioni SSL/TLS in modalità Thin.
Per connettersi in modalità Sottile:
-
Spostare i file
tnsnames.oraeewallet.pemin una posizione del sistema.Linux
Ad esempio, su Linux:
/opt/OracleCloud/MYDBWindows
Ad esempio, in Windows:
C:\opt\OracleCloud\MYDB -
Nell'applicazione Python impostare i parametri di connessione seguenti per connettersi a un'istanza di Autonomous AI Database:
-
config_dir: specifica la directory contenentetnsnames.ora. -
dsn: consente di specificare l'alias di rete desiderato dal filetnsnames.ora. -
password: specifica la password utente del database. -
user: specifica l'utente del database. -
wallet_location: specifica la directory contenente il file PEM (ewallet.pem). -
wallet_password: specifica la password per il file PEM (ewallet.pem). Impostare questa password quando si scarica il filewallet.zip.
Linux
Ad esempio, su Linux per connettersi come utente ADMIN utilizzando
oracledb.connectcon il nome del servizio di retedb2024_low(il nome del servizio si trova 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
Ad esempio, in Windows per connettersi come utente ADMIN utilizzando
oracledb.connectcon il nome del servizio di retedb2024_low(il nome del servizio si trova 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)L'uso di una stringa 'raw'
r"..." significa che le barre rovesciate vengono trattate come separatori di directory.Come mostrato in questo esempio,
wallet_locationeconfig_dirsono impostati sulla stessa directory (e la directory contienetnsnames.oraeewallet.pem). Non è necessario specificare la stessa directory per questi file. -
Se si è protetti da un firewall, è possibile eseguire il tunneling delle connessioni TLS/SSL tramite un proxy utilizzando HTTPS_PROXY nel descrittore di connessione o impostando gli attributi di connessione. La connessione riuscita dipende da specifiche configurazioni proxy. Oracle sconsiglia l'utilizzo di un proxy in un ambiente di produzione a causa del possibile impatto sulle prestazioni. Per ulteriori informazioni, vedere HTTPS_PROXY in Oracle Database 19c Database Net Services Reference o Oracle Database 26ai Database Net Services Reference.
In modalità Thin è possibile specificare un proxy aggiungendo i parametri https_proxy e http_proxy_port.
Ad esempio, su 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)
Ad esempio, in 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)
Esegui applicazione Python con modalità python-oracledb Thick (mTLS)
Per impostazione predefinita, python-oracledb viene eseguito in modalità sottile che si connette direttamente a Oracle Database. Ulteriori funzionalità di python-oracledb sono disponibili quando il driver viene eseguito in modalità Spessa.
Nota: la modalità Spessa richiede che le librerie del client Oracle siano installate dove si esegue Python. È inoltre necessario chiamare oracledb.init_oracle_client() nel codice Python.
In modalità Spessore sono necessari i tre file seguenti del file zip del wallet:
-
tnsnames.ora: contiene i nomi di servizio di rete utilizzati per le stringhe di connessione dell'applicazione e mappa le stringhe ai servizi di database. -
sqlnet.ora: specifica la configurazione lato client SQL*Net. -
cwallet.sso: contiene il wallet SSO con apertura automatica.
Per connettersi in modalità Spessa:
-
Inserire i file
tnsnames.ora,sqlnet.oraecwallet.ssonel sistema.Utilizzare una delle due opzioni per posizionare i file sul sistema.
-
Se si utilizza Instant Client, spostare i file in una gerarchia di sottodirectory
network/adminnella directory Instant Client. Ad esempio, a seconda dell'architettura o del sistema client e della posizione in cui è stato installato Instant Client, i file devono trovarsi in una posizione di directory come:/home/myuser/instantclient_19_21/network/admino
/usr/lib/oracle/19.21/client64/lib/network/adminAd esempio, in Linux, se si utilizza il client Oracle completo, spostare i file in
$ORACLE_HOME/network/admin. -
In alternativa, spostare i file in qualsiasi directory accessibile.
Ad esempio, su Linux spostare i file nella directory
/opt/OracleCloud/MYDBe modificaresqlnet.oraper cambiare la directory di posizione del wallet nella directory contenente il filecwallet.sso.Ad esempio, in Linux modificare
sqlnet.oracome segue:WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB"))) SSL_SERVER_DN_MATCH=yesQuando i file di configurazione non si trovano nella posizione predefinita, l'applicazione deve indicare dove si trovano, con il parametro
config_dirnella chiamataoracledb.init_oracle_client()o impostando la variabile di ambienteTNS_ADMIN.Nota: nessuna di queste impostazioni è necessaria e non è necessario modificare
sqlnet.orase si inseriscono tutti i file di configurazione nella directorynetwork/admin.
-
-
Nell'applicazione Python impostare i parametri di inizializzazione e connessione riportati di seguito per connettersi all'istanza di Autonomous AI Database.
-
config_dir: specifica la directory di configurazione durante l'inserimento dei file di configurazione. Questo è richiesto solo quando i file di configurazione vengono posizionati in una directory esterna alla directory di configurazione del client istantaneonetwork/admin. -
dsn: specifica l'alias di rete desiderato nel filetnsnames.ora. -
password: specifica la password utente del database. -
user: specifica l'utente del database.
Nel primo caso per il posizionamento dei file di configurazione, connettersi all'istanza di Autonomous AI Database utilizzando le credenziali del database impostando il parametro
dsnsull'alias di rete desiderato datnsnames.ora.Ad esempio, per connettersi come utente ADMIN utilizzando
oracledb.init_oracle_cliente connettersi con il nome del servizio di retedb2024_low(dove il nome del servizio si trova intnsnames.ora):oracledb.init_oracle_client() connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")Quando i file di configurazione si trovano in una directory esterna alla directory di configurazione del client istantaneo, impostare il parametro
config_dirquando si chiamaoracledb.init_oracle_client.Linux
Ad esempio, su Linux per connettersi come utente ADMIN utilizzando il nome del servizio di rete
db2024_low:oracledb.init_oracle_client(config_dir="/opt/OracleCloud/MYDB") connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")Windows
Ad esempio, in Windows per connettersi come utente ADMIN utilizzando il nome del servizio di rete
db2024_low:oracledb.init_oracle_client(config_dir=r"C:\opt\OracleCloud\MYDB") connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")L'uso di una stringa 'raw'
r"..." significa che le barre rovesciate vengono trattate come separatori di directory. -
Se si è protetti da un firewall, è possibile eseguire il tunneling delle connessioni TLS/SSL tramite un proxy utilizzando HTTPS_PROXY nel descrittore di connessione o impostando gli attributi di connessione. La connessione riuscita dipende da specifiche configurazioni proxy. Oracle sconsiglia l'utilizzo di un proxy in un ambiente di produzione a causa del possibile impatto sulle prestazioni. Per ulteriori informazioni, vedere HTTPS_PROXY in Oracle Database 19c Database Net Services Reference o Oracle Database 26ai Database Net Services Reference.
In modalità Spessore è possibile specificare un proxy modificando il file sqlnet.ora e aggiungendo una riga:
SQLNET.USE_HTTPS_PROXY=on
Inoltre, modificare tnsnames.ora e aggiungere un nome proxy HTTPS_PROXY e una porta HTTPS_PROXY_PORT alla lista di indirizzi del descrittore di connessione di qualsiasi nome di servizio che si prevede di utilizzare.
Ad esempio:
mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)
Per informazioni sulla modalità Spessa, vedere Enabling python-oracledb Thick mode.
Contenuto correlato
Informazioni sulla connessione a un database AI autonomo dedicato