Connecter des applications Python avec un portefeuille (mTLS)
Vous pouvez connecter des applications Python à votre instance Autonomous AI Database à l'aide d'un portefeuille.
La connexion d'une application Python avec un portefeuille (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 AI 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 AI Database.
Suivez ces étapes pour connecter votre application Python à une instance de base de données autonome avec intelligence artificielle à l'aide d'un portefeuille (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
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 Autonomous AI Database pour obtenir un fichier compressé contenant les données d'identification de sécurité du client et les paramètres de configuration réseau requis pour accéder à une instance Autonomous AI Database.
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
Note : Protégez le fichierwallet.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 en mode python-oracledb Thin avec un portefeuille (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.Par exemple, sous Linux :
/opt/OracleCloud/MYDBPar 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.
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)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 tunneliser les connexions TLS/SSL au moyen d'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.
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 avec un portefeuille (mTLS)
Par défaut, python-oracledb s'exécute en mode mince, qui se connecte directement à Oracle AI Database. D'autres fonctionnalités python-oracledb sont disponibles lorsque le pilote s'exécute en mode Épais.
Note
Note : Le mode Épais nécessite que les bibliothèques du client Oracle soient installées à l'endroit 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 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 suivantes pour placer ces fichiers sur votre système :
-
Si vous utilisez Instant Client, déplacez les fichiers vers un sous-répertoire
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
Note : Aucun de ces paramètres n'est nécessaire et vous n'avez pas besoin de modifiersqlnet.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.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")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 tunneliser les connexions TLS/SSL au moyen d'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.
En mode Épais, vous pouvez spécifier un mandataire en modifiant le fichier sqlnet.ora et en ajoutant une ligne :
SQLNET.USE_HTTPS_PROXY=onEn 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.
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.