Connexion d'applications Python avec un portefeuille (mTLS)
Vous pouvez connecter des applications Python à votre instance de base de données Autonomous AI avec un portefeuille.
La connexion d'une application Python à un portefeuille (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 AI 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 AI Database.
Pour connecter votre application Python à une instance de base de données Autonomous AI à l'aide d'un portefeuille (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
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 compressé 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
Remarque : protégez le fichierwallet.zipet son contenu afin d'empêcher 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 avec un portefeuille (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.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 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.
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)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 à l'aide de 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.
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 en mode épais python-oracledb avec un portefeuille (mTLS)
Par défaut, python-oracledb s'exécute en mode léger qui se connecte directement à Oracle AI Database. D'autres fonctionnalités python-oracledb sont disponibles lorsque le pilote s'exécute en mode épais.
Remarque
Remarque : le mode épais nécessite 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 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.
Remarque
Remarque : 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 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. Cette opération n'est requise 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.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")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 à l'aide de 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.
En mode épais, vous pouvez indiquer un proxy 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 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.
Par 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.