Connexion d'applications Python à l'aide de l'authentification mTLS
S'applique à :
Exadata Cloud@Customer uniquement
Vous pouvez connecter des applications Python à votre instance de base de données Autonomous AI à l'aide de mTLS.
La connexion d'une application Python avec mTLS offre une sécurité améliorée pour l'authentification et le cryptage, et la sécurité est appliquée à l'aide des informations d'identification client (en fournissant un nom utilisateur et un mot de passe).
Le "mode léger" par défaut du pilote python-oracledb se connecte directement à Oracle Database. Le pilote peut éventuellement utiliser les bibliothèques client Oracle, "Mode épais", pour d'autres fonctionnalités. Les bibliothèques d'Oracle Client peuvent provenir d'Oracle Instant Client, d'Oracle Client complet ou d'une installation d'Oracle Database.
Pour connecter votre application Python à une instance de base de données Autonomous AI à l'aide de mTLS, procédez comme suit :
- Installation de Python et du pilote python-oracledb
- Obtention des informations d'identification de sécurité (Oracle Wallet) et activation de la connectivité réseau
- Effectuez cette étape si vous souhaitez uniquement vous connecter en mode léger : Exécuter une application Python avec le mode léger python-oracledb (mTLS)
- Effectuez cette étape si vous souhaitez vous connecter en mode épais : Exécuter une application Python avec le mode épais python-oracledb (mTLS)
Installation de Python et du pilote python-oracledb
Pour vous connecter à la base de données Autonomous AI à partir de votre application Python, installez Python et le pilote python-oracledb.
-
Installez Python 3, s'il n'est pas déjà disponible.
La version de Python que vous utilisez dépend de votre système d'exploitation et de votre matériel côté client. Par exemple, Windows, Linux, macOS et autres.
Remarque : Oracle vous recommande de vous tenir au courant des versions des pilotes Python et python-oracledb.
-
Installez le pilote python-oracledb depuis PyPI.
Le pilote python-oracledb est un module d'extension de langage de programmation Python permettant aux programmes Python de se connecter à Oracle Database. Le pilote python-oracledb est la nouvelle version majeure renommée du pilote cx_Oracle.
Versions de pilote python-oracledb prises en charge : python-oracledb 1.0 (ou version ultérieure)
Exécutez la commande suivante pour mettre à niveau python :
python -m pip install oracledb --upgradeLa sortie doit se présenter comme suit :
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.21Remarques sur l'installation de python-oracledb :
-
Si vous êtes derrière un proxy, utilisez l'option
--proxypour ajouter un serveur proxy à la commande. Exemple :python -m pip install oracledb --upgrade --proxy=http://proxy.example.com:80 -
Si vous n'êtes pas autorisé à écrire dans les répertoires système, incluez l'option
--user. Exemple :python -m pip install oracledb --upgrade --user -
Si aucun package binaire n'est disponible pour votre plate-forme, l'exécution de
piptéléchargera le package source à la place. La source est compilée et le fichier binaire résultant est installé.
Reportez-vous à Installation de python-oracledb pour obtenir des options et des conseils supplémentaires.
-
-
Si vous souhaitez utiliser le pilote python-oracledb en mode Epais, installez le logiciel Oracle Client.
Par défaut, python-oracledb s'exécute en mode léger qui se connecte directement à Oracle Database. Le mode léger ne nécessite pas de bibliothèques client Oracle. Cependant, certaines fonctionnalités supplémentaires sont disponibles lorsque python-oracledb s'exécute en mode Épais.
Remarque : reportez-vous à Fonctionnalités Oracle Database prises en charge par python-oracledb pour plus d'informations sur les fonctionnalités prises en charge en modes python-oracledb fin et épais. Toutes les fonctionnalités affichées dans ce lien ne sont pas disponibles avec Autonomous AI Database.
Python-oracledb utilise le mode Épais lorsque vous utilisez les bibliothèques client Oracle Instant ou Oracle Database Client et que vous appelez
oracledb.init_oracle_client()dans votre code Python.Lorsque vous installez le logiciel client Oracle, les versions minimales requises pour les connexions mTLS et TLS diffèrent comme suit :
-
Connexions TLS mutuelles (mTLS) :
-
Si votre base de données se trouve sur un ordinateur distant, téléchargez le package gratuit "Basic" ou "Basic Light" d'Oracle Instant Client pour votre architecture de système d'exploitation. Utilisez une version prise en charge : Oracle Instant Client : 18.19 (ou version ultérieure), 19.2 (ou version ultérieure) ou 21 (version de base ou version ultérieure).
-
Vous pouvez également utiliser les bibliothèques client Oracle Database complètes lorsqu'elles sont disponibles sur votre système (y compris le client Oracle Database complet : client Oracle Database : 18.19 (ou version ultérieure), 19.2 (ou version ultérieure) ou 21 (version de base ou version ultérieure).
-
-
Connexions TLS : les clients Oracle Call Interface (OCI) prennent en charge l'authentification TLS si vous utilisez les versions client suivantes :
-
Oracle Instant Client/Oracle Database Client 19.14 (ou version ultérieure) et 21.5 (ou version ultérieure) - toutes les plates-formes
-
Vous pouvez également utiliser les bibliothèques client Full Oracle Database lorsqu'elles sont disponibles sur votre système, y compris Full Oracle Database Client 19.14 (ou version ultérieure) et 21.5 (ou version ultérieure).
-
-
Obtention des informations d'identification de sécurité (Oracle Wallet) et activation de la connectivité réseau
Obtenez les informations d'identification de sécurité client pour vous connecter à une instance Autonomous AI Database.
-
Téléchargez un fichier de portefeuille à partir de l'instance de base de données Autonomous AI pour obtenir un fichier ZIP contenant les informations d'identification de sécurité client et les paramètres de configuration réseau requis pour accéder à une instance de base de données Autonomous AI.
Obtenez les informations d'identification de sécurité du client (fichier
wallet.zip) :-
Utilisateur ADMIN : sur la console Oracle Cloud Infrastructure, cliquez sur Connexion à la base de données. Reportez-vous à Téléchargement des informations d'identification client (portefeuilles).
-
Autre utilisateur (non administrateur) : obtenez Oracle Wallet auprès de l'administrateur pour votre instance de base de données Autonomous AI.
Remarque : protégez le fichier
wallet.zipet son contenu pour éviter tout accès non autorisé à la base de données.
-
-
Décompressez le fichier d'informations d'identification client (
wallet.zip).
Exécuter une application Python en mode léger python-oracledb (mTLS)
Par défaut, python-oracledb utilise le mode léger pour se connecter directement à votre instance de base de données Autonomous AI.
En mode léger, seuls deux fichiers du fichier ZIP de portefeuille sont nécessaires :
-
tnsnames.ora: met en correspondance les noms de service réseau utilisés pour les chaînes de connexion d'application avec les services de base de données. -
ewallet.pem: active les connexions SSL/TLS en mode léger.
Pour vous connecter en mode léger :
-
Déplacez les fichiers
tnsnames.oraetewallet.pemvers un emplacement de votre système.Linux
Sur Linux, par exemple :
/opt/OracleCloud/MYDBWindows
Par exemple sous Windows :
C:\opt\OracleCloud\MYDB -
Dans votre application Python, définissez les paramètres de connexion suivants pour la connexion à une instance de base de données Autonomous AI :
-
config_dir: indique le répertoire contenanttnsnames.ora. -
dsn: permet d'indiquer l'alias réseau souhaité dans le fichiertnsnames.ora. -
password: indique le mot de passe de l'utilisateur de base de données. -
user: indique l'utilisateur de base de données. -
wallet_location: indique le répertoire contenant le fichier PEM (ewallet.pem). -
wallet_password: indique le mot de passe du fichier PEM (ewallet.pem). Vous définissez ce mot de passe lorsque vous téléchargez le fichierwallet.zip.
Linux
Par exemple, sous Linux, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de
oracledb.connectavec le nom de service réseaudb2024_low(le nom de service se trouve danstnsnames.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
Par exemple, sous Windows, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de
oracledb.connectavec le nom de service réseaudb2024_low(le nom de service se trouve danstnsnames.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'utilisation d'une chaîne "brut"
r..." signifie que les barres obliques inverses sont traitées comme des séparateurs de répertoire.Comme indiqué dans cet exemple,
wallet_locationetconfig_dirsont définis sur le même répertoire (et le répertoire contienttnsnames.oraetewallet.pem). Il n'est pas nécessaire de spécifier le même répertoire pour ces fichiers. -
Si vous êtes derrière un pare-feu, vous pouvez mettre en tunnel les connexions TLS/SSL via un proxy en utilisant HTTPS_PROXY dans le descripteur de connexion ou en définissant des attributs de connexion. Une connexion réussie dépend de configurations de proxy spécifiques. Oracle ne recommande pas l'utilisation d'un proxy dans un environnement de production, car cela peut avoir un impact sur les performances. Pour plus d'informations, reportez-vous à HTTPS_PROXY dans le manuel Oracle Database 19c Database Net Services Reference ou Oracle Database 26ai Database Net Services Reference.
En mode léger, vous pouvez indiquer un proxy en ajoutant les paramètres https_proxy et http_proxy_port.
Par exemple, sur 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)
Par exemple, sous 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)
Exécuter une application Python avec le mode épais python-oracledb (mTLS)
Par défaut, python-oracledb s'exécute en mode léger qui se connecte directement à Oracle Database. Des fonctionnalités python-oracledb supplémentaires sont disponibles lorsque le pilote s'exécute en mode épais.
Remarque : le mode épais exige que les bibliothèques client Oracle soient installées là où vous exécutez Python. Vous devez également appeler oracledb.init_oracle_client() dans votre code Python.
En mode épais, les trois fichiers suivants du fichier ZIP de portefeuille sont requis :
-
tnsnames.ora: contient les noms de service réseau utilisés pour les chaînes de connexion d'application et met en correspondance les chaînes avec les services de base de données. -
sqlnet.ora: indique la configuration côté client SQL*Net. -
cwallet.sso: contient le portefeuille SSO ouvert automatiquement.
Pour vous connecter en mode épais :
-
Placez les fichiers
tnsnames.ora,sqlnet.oraetcwallet.ssosur votre système.Utilisez l'une des deux options pour placer ces fichiers sur votre système :
-
Si vous utilisez Instant Client, déplacez les fichiers vers une hiérarchie de sous-répertoires
network/adminsous le répertoire Instant Client. Par exemple, en fonction de l'architecture ou de votre système client, et de l'emplacement d'installation d'Instant Client, les fichiers doivent se trouver dans un des répertoires suivants :/home/myuser/instantclient_19_21/network/adminou
/usr/lib/oracle/19.21/client64/lib/network/adminPar exemple, sous Linux, si vous utilisez le client Oracle complet, déplacez les fichiers vers
$ORACLE_HOME/network/admin. -
Vous pouvez également déplacer les fichiers vers n'importe quel répertoire accessible.
Par exemple, sous Linux, déplacez les fichiers vers le répertoire
/opt/OracleCloud/MYDBet modifiezsqlnet.orapour remplacer le répertoire d'emplacement du portefeuille par le répertoire contenant le fichiercwallet.sso.Par exemple, sous Linux, modifiez
sqlnet.oracomme suit :WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB"))) SSL_SERVER_DN_MATCH=yesLorsque les fichiers de configuration ne se trouvent pas à l'emplacement par défaut, votre application doit indiquer leur emplacement, soit avec le paramètre
config_dirdans l'appeloracledb.init_oracle_client(), soit en définissant la variable d'environnementTNS_ADMIN.Remarque : aucun de ces paramètres n'est nécessaire et vous n'avez pas besoin de modifier
sqlnet.orasi vous placez tous les fichiers de configuration dans le répertoirenetwork/admin.
-
-
Dans votre application Python, définissez les paramètres d'initialisation et de connexion suivants pour la connexion à l'instance de base de données Autonomous AI :
-
config_dir: indique le répertoire de configuration lorsque vous placez les fichiers de configuration. Ceci n'est requis que lorsque les fichiers de configuration sont placés dans un répertoire situé en dehors du répertoire de configuration client instantanénetwork/admin. -
dsn: indique l'alias réseau souhaité dans le fichiertnsnames.ora. -
password: indique le mot de passe de l'utilisateur de base de données. -
user: indique l'utilisateur de base de données.
Dans le premier cas pour le placement des fichiers de configuration, connectez-vous à l'instance de base de données Autonomous AI à l'aide de vos informations d'identification de base de données en définissant le paramètre
dsnsur l'alias réseau souhaité à partir detnsnames.ora.Par exemple, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de
oracledb.init_oracle_clientet avec le nom de service réseaudb2024_low(où le nom de service se trouve danstnsnames.ora), procédez comme suit :oracledb.init_oracle_client() connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")Lorsque les fichiers de configuration se trouvent dans un répertoire situé en dehors du répertoire de configuration du client instantané, définissez le paramètre
config_dirlorsque vous appelezoracledb.init_oracle_client.Linux
Par exemple, sous Linux, pour vous connecter en tant qu'utilisateur ADMIN à l'aide du nom de service réseau
db2024_low:oracledb.init_oracle_client(config_dir="/opt/OracleCloud/MYDB") connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")Windows
Par exemple, sous Windows, pour vous connecter en tant qu'utilisateur ADMIN à l'aide du nom de service réseau
db2024_low:oracledb.init_oracle_client(config_dir=r"C:\opt\OracleCloud\MYDB") connection=oracledb.connect( user="admin", password=password, dsn="db2024_low")L'utilisation d'une chaîne "brut"
r..." signifie que les barres obliques inverses sont traitées comme des séparateurs de répertoire. -
Si vous êtes derrière un pare-feu, vous pouvez mettre en tunnel les connexions TLS/SSL via un proxy en utilisant HTTPS_PROXY dans le descripteur de connexion ou en définissant des attributs de connexion. Une connexion réussie dépend de configurations de proxy spécifiques. Oracle ne recommande pas l'utilisation d'un proxy dans un environnement de production, car cela peut avoir un impact sur les performances. Pour plus d'informations, reportez-vous à HTTPS_PROXY dans le manuel Oracle Database 19c Database Net Services Reference ou Oracle Database 26ai Database Net Services Reference.
En mode épais, vous pouvez indiquer un proxy en modifiant le fichier sqlnet.ora et en ajoutant une ligne :
SQLNET.USE_HTTPS_PROXY=on
En outre, modifiez tnsnames.ora et ajoutez un nom de proxy HTTPS_PROXY et un port HTTPS_PROXY_PORT à la liste d'adresses du descripteur de connexion de tout nom de service que vous prévoyez d'utiliser.
Exemple :
mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)
Pour plus d'informations sur le mode épais, reportez-vous à la section Enabling python-oracledb Thick mode.
Contenu connexe
A propos de la connexion à une base de données d'IA autonome dédiée