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 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 intelligence artificielle à l'aide d'un portefeuille (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 mince : Exécuter l'application Python avec le mode mince python-oracledb avec un portefeuille (mTLS)
  4. Effectuez cette étape si vous voulez vous connecter en mode Épais : Exécuter l'application Python avec le mode Épais python-oracledb avec un portefeuille (mTLS)

Rubriques

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) :

    Note

    Protégez le fichier wallet.zip et son contenu pour empêcher l'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 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 :

  1. Déplacez les fichiers tnsnames.ora et ewallet.pem vers un emplacement de votre système.
    • Par exemple, sous Linux :

      /opt/OracleCloud/MYDB
    • 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.
    • 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)
    • 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 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 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 :

  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 un sous-répertoire 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.

    • 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=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.

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.