Connecter des applications Python à l'aide de mTLS
APPLICATIONS À :
Exadata Cloud@Customer seulement
Vous pouvez connecter des applications Python à votre instance Autonomous AI Database à l'aide de mTLS.
La connexion d'une application Python avec mTLS offre une sécurité améliorée pour l'authentification et le chiffrement, et la sécurité est appliquée à l'aide des données d'identification du client (en fournissant un nom d'utilisateur et un mot de passe).
Le "mode mince" par défaut du pilote python-oracledb se connecte directement à Oracle Database. Le pilote peut éventuellement utiliser les bibliothèques Oracle Client, "Mode épais", pour certaines fonctionnalités supplémentaires. Les bibliothèques du client Oracle peuvent provenir d'Oracle Instant Client, du client Oracle complet ou d'une installation Oracle Database.
Suivez ces étapes pour connecter votre application Python à une instance de base de données autonome avec l'IA à l'aide de mTLS :
- Installer Python et le pilote python-oracledb
- Obtenir les données d'identification de sécurité (Oracle Wallet) et activer la connectivité réseau
- Effectuez cette étape si vous voulez seulement vous connecter en mode fin : Exécuter l'application Python avec le mode fin python-oracledb (mTLS)
- Effectuez cette étape si vous voulez vous connecter en mode Épais : Exécuter l'application Python avec le mode Épais python-oracledb (mTLS)
Installer Python et le pilote python-oracledb
Pour vous connecter à Autonomous AI Database à 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 du système d'exploitation et du matériel côté client. Par exemple Windows, Linux, macOS et autres.
Note : Oracle vous recommande de rester à jour avec les versions de pilote Python et python-oracledb.
-
Installez le pilote python-oracledb à partir de 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 populaire.
Versions du 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 être semblable à la suivante :
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.21Notes pour l'installation de python-oracledb :
-
Si vous êtes derrière un mandataire, utilisez l'option
--proxypour ajouter un serveur mandataire à la commande. Par exemple :python -m pip install oracledb --upgrade --proxy=http://proxy.example.com:80 -
Si vous n'êtes pas autorisé à écrire dans les répertoires de système, incluez l'option
--user. Par exemple :python -m pip install oracledb --upgrade --user -
Si aucun ensemble binaire n'est disponible pour votre plate-forme, l'exécution de
piptéléchargera l'ensemble source à la place. La source est compilée et le binaire résultant est installé.
Voir Installation de python-oracledb pour des options et des conseils supplémentaires.
-
-
Si vous souhaitez utiliser le pilote python-oracledb en mode Épais, installez le logiciel Oracle Client.
Par défaut, python-oracledb s'exécute en mode mince qui se connecte directement à Oracle Database. Le mode mince 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.
Note : Voir Fonctions Oracle Database prises en charge par python-oracledb pour plus d'informations sur les fonctions prises en charge dans les modes python-oracledb Thin et Thick. Toutes les fonctions 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 du client Oracle Instant ou les bibliothèques du client Oracle Database et que vous appelez
oracledb.init_oracle_client()dans votre code Python.Lorsque vous installez le logiciel client Oracle, il existe des différences entre les versions minimales requises pour les connexions mTLS et TLS, comme suit :
-
Connexions TLS mutuelles (mTLS) :
-
Si votre base de données se trouve sur un ordinateur distant, téléchargez l'ensemble 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 de 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 Oracle Database complètes lorsqu'elles sont disponibles sur votre système, notamment Full Oracle Database Client 19.14 (ou version ultérieure) et 21.5 (ou version ultérieure).
-
-
Obtenir les données d'identification de sécurité (Oracle Wallet) et activer la connectivité réseau
Obtenez les données d'identification de sécurité du client pour vous connecter à une instance de base de données Autonomous AI Database.
-
Téléchargez un fichier de portefeuille à partir de l'instance de base de données du service d'intelligence artificielle autonome pour obtenir un fichier zip contenant les données d'identification de sécurité du client et les paramètres de configuration de réseau requis pour accéder à une instance de base de données du service d'intelligence artificielle autonome.
Obtenez les données d'identification de sécurité du client (fichier
wallet.zip) :-
Utilisateur ADMIN : Dans la console Oracle Cloud Infrastructure, cliquez sur Connexion à la base de données. Voir Télécharger des données d'identification de client (portefeuilles).
-
Autre utilisateur (non administrateur) : Obtenez Oracle Wallet auprès de l'administrateur de votre instance de base de données Autonomous AI Database.
Note : Protégez le fichier
wallet.zipet son contenu pour empêcher tout accès non autorisé à la base de données.
-
-
Décompressez le fichier de données d'identification du client (
wallet.zip).
Exécuter l'application Python avec le mode fin python-oracledb (mTLS)
Par défaut, python-oracledb utilise le mode mince pour se connecter directement à votre instance de base de données d'IA autonome.
En mode mince, seuls deux fichiers du fichier zip du portefeuille sont nécessaires :
-
tnsnames.ora: Mappe les noms de service réseau utilisés pour les chaînes de connexion d'application à vos services de base de données. -
ewallet.pem: Active les connexions SSL/TLS en mode mince.
Pour vous connecter en mode mince :
-
Déplacez les fichiers
tnsnames.oraetewallet.pemvers un emplacement de votre système.Linux
Par exemple sous Linux :
/opt/OracleCloud/MYDBWindows
Par exemple sous Windows :
C:\opt\OracleCloud\MYDB -
Dans votre application Python, définissez les paramètres de connexion suivants pour vous connecter à une instance de base de données d'intelligence artificielle autonome :
-
config_dir: Spécifie le répertoire contenanttnsnames.ora. -
dsn: Permet de spécifier l'alias de réseau souhaité à partir du fichiertnsnames.ora. -
password: Spécifie le mot de passe de l'utilisateur de base de données. -
user: Spécifie l'utilisateur de base de données. -
wallet_location: Spécifie le répertoire contenant le fichier PEM (ewallet.pem). -
wallet_password: Spécifie le mot de passe pour le 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 se connecter en tant qu'utilisateur ADMIN à l'aide de
oracledb.connectavec le nom du service de réseaudb2024_low(le nom du 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 du service de réseaudb2024_low(le nom du 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épertoires.Comme illustré dans cet exemple,
wallet_locationetconfig_dirsont réglés au même répertoire (et le répertoire contienttnsnames.oraetewallet.pem). Il n'est pas nécessaire d'indiquer le même répertoire pour ces fichiers. -
Si vous êtes derrière un pare-feu, vous pouvez faire passer les connexions TLS/SSL par un mandataire à l'aide de HTTPS_PROXY dans le descripteur de connexion ou en définissant des attributs de connexion. La connexion réussie dépend de configurations de mandataire spécifiques. Oracle ne recommande pas l'utilisation d'un mandataire dans un environnement de production, en raison de l'incidence possible sur les performances. Pour plus d'informations, voir HTTPS_PROXY dans Informations de référence sur les services nets de base de données pour Oracle Database 19c ou Informations de référence sur les services nets de base de données pour Oracle Database 26ai.
En mode mince, vous pouvez spécifier un mandataire en ajoutant les paramètres https_proxy et http_proxy_port.
Par exemple, sous 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 l'application Python avec le mode épais python-oracledb (mTLS)
Par défaut, python-oracledb s'exécute en mode mince qui se connecte directement à Oracle Database. D'autres fonctionnalités python-oracledb sont disponibles lorsque le pilote s'exécute en mode Épais.
Note : Le mode Épais nécessite que les bibliothèques du 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 mappe les chaînes à vos services de base de données. -
sqlnet.ora: Spécifie la configuration côté client SQL*Net. -
cwallet.sso: Contient le portefeuille à authentification unique à ouverture automatique.
Pour vous connecter en mode Épais :
-
Placez les fichiers
tnsnames.ora,sqlnet.oraetcwallet.ssosur votre système.Utilisez l'une des deux options suivantes 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, selon l'architecture ou le système client et l'endroit où vous avez installé Instant Client, les fichiers doivent être placés dans un emplacement de répertoire tel que :/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 où ils se trouvent, soit avec le paramètre
config_dirdans l'appeloracledb.init_oracle_client(), soit en définissant la variable d'environnementTNS_ADMIN.Note : 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 vous connecter à l'instance de base de données Autonomous AI Database :
-
config_dir: Spécifie 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 en dehors du répertoire de configuration client instantanénetwork/admin. -
dsn: Spécifie l'alias de réseau souhaité à partir du fichiertnsnames.ora. -
password: Spécifie le mot de passe de l'utilisateur de base de données. -
user: Spécifie l'utilisateur de base de données.
Dans le premier cas pour le positionnement des fichiers de configuration, connectez-vous à l'instance de base de données du service d'intelligence artificielle autonome à l'aide de vos données d'identification de base de données en réglant le paramètre
dsnà l'alias de réseau souhaité à partir detnsnames.ora.Par exemple, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de
oracledb.init_oracle_clientet vous connecter au nom du service de réseaudb2024_low(où le nom du service se trouve danstnsnames.ora) :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 en dehors du répertoire de configuration client instantané, définissez le paramètre
config_dirlorsque vous appelezoracledb.init_oracle_client.Linux
Par exemple, sous Linux pour se connecter en tant qu'utilisateur ADMIN à l'aide du nom de service de 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 de 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épertoires. -
Si vous êtes derrière un pare-feu, vous pouvez faire passer les connexions TLS/SSL par un mandataire à l'aide de HTTPS_PROXY dans le descripteur de connexion ou en définissant des attributs de connexion. La connexion réussie dépend de configurations de mandataire spécifiques. Oracle ne recommande pas l'utilisation d'un mandataire dans un environnement de production, en raison de l'incidence possible sur les performances. Pour plus d'informations, voir HTTPS_PROXY dans Informations de référence sur les services nets de base de données pour Oracle Database 19c ou Informations de référence sur les services nets de base de données pour Oracle Database 26ai.
En mode Épais, vous pouvez spécifier un mandataire 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 mandataire 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.
Par exemple :
mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)
Voir Activation du mode Épais python-oracledb pour plus d'informations sur le mode Épais.
Contenu connexe
À propos de la connexion à une base de données d'intelligence artificielle autonome dédiée