Connecter des applications Python à l'aide de mTLS

APPLICATIONS À : Applicable 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 :

  1. Installer Python et le pilote python-oracledb
  2. Obtenir les données d'identification de sécurité (Oracle Wallet) et activer la connectivité réseau
  3. Effectuez cette étape si vous voulez seulement vous connecter en mode fin : Exécuter l'application Python avec le mode fin python-oracledb (mTLS)
  4. 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.

  1. 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.

  2. 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 --upgrade
    

    La 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.21
    

    Notes pour l'installation de python-oracledb :

    • Si vous êtes derrière un mandataire, utilisez l'option --proxy pour 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 pip té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.

  3. 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.

  1. 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.zip et son contenu pour empêcher tout accès non autorisé à la base de données.

  2. 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 :

Pour vous connecter en mode mince :

  1. Déplacez les fichiers tnsnames.ora et ewallet.pem vers un emplacement de votre système.

    Linux

    Par exemple sous Linux :

     /opt/OracleCloud/MYDB
    

    Windows

    Par exemple sous Windows :

     C:\opt\OracleCloud\MYDB
    
  2. 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 contenant tnsnames.ora.

    • dsn : Permet de spécifier l'alias de réseau souhaité à partir du fichier tnsnames.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 fichier wallet.zip.

    Linux

    Par exemple, sous Linux pour se connecter en tant qu'utilisateur ADMIN à l'aide de oracledb.connect avec le nom du service de réseau db2024_low (le nom du service se trouve dans tnsnames.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.connect avec le nom du service de réseau db2024_low (le nom du service se trouve dans tnsnames.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_location et config_dir sont réglés au même répertoire (et le répertoire contient tnsnames.ora et ewallet.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 :

Pour vous connecter en mode Épais :

  1. Placez les fichiers tnsnames.ora, sqlnet.ora et cwallet.sso sur 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/admin sous 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/admin
      

      ou

      /usr/lib/oracle/19.21/client64/lib/network/admin
      

      Par 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/MYDB et modifiez sqlnet.ora pour remplacer le répertoire d'emplacement du portefeuille par le répertoire contenant le fichier cwallet.sso.

      Par exemple, sous Linux, modifiez sqlnet.ora comme suit :

      WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB")))
      SSL_SERVER_DN_MATCH=yes
      

      Lorsque 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_dir dans l'appel oracledb.init_oracle_client(), soit en définissant la variable d'environnement TNS_ADMIN.

      Note : Aucun de ces paramètres n'est nécessaire et vous n'avez pas besoin de modifier sqlnet.ora si vous placez tous les fichiers de configuration dans le répertoire network/admin.

  2. 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 fichier tnsnames.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 de tnsnames.ora.

    Par exemple, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de oracledb.init_oracle_client et vous connecter au nom du service de réseau db2024_low (où le nom du service se trouve dans tnsnames.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_dir lorsque vous appelez oracledb.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