Connexion d'applications Python avec un portefeuille (mTLS)

Vous pouvez connecter des applications Python à votre instance Autonomous Database 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 Database. Le pilote peut éventuellement utiliser les bibliothèques client Oracle, "Mode épais", pour des fonctionnalités supplémentaires. Les bibliothèques d'Oracle Client peuvent provenir d'Oracle Instant Client, d'Oracle Client complet ou d'une installation d'Oracle Database.

Pour connecter votre application Python à une instance Autonomous Database à l'aide d'un portefeuille (mTLS), procédez comme suit :

  1. Installation de Python et du pilote python-oracledb
  2. Obtention des informations d'identification de sécurité (Oracle Wallet) et activation de la connectivité réseau
  3. Effectuez cette étape si vous souhaitez uniquement vous connecter en mode léger : Exécuter une application Python avec le mode léger python-oracledb avec un portefeuille (mTLS)
  4. Effectuez cette étape si vous souhaitez vous connecter en mode Épais : Exécuter une application Python avec le mode Épais python-oracledb avec un portefeuille (mTLS)

Sujets

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

  1. Téléchargez un fichier de portefeuille à partir de l'instance Autonomous Database pour obtenir un fichier ZIP qui contient les informations d'identification de sécurité client et les paramètres de configuration réseau requis pour accéder à une instance Autonomous Database.

    Obtenez les informations d'identification de sécurité du client (fichier wallet.zip) :

    Remarque

    Protégez le fichier wallet.zip et son contenu pour éviter tout accès non autorisé à la base de données.
  2. 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 Autonomous Database.

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 :

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

    Sur Linux, par exemple :

    /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 la connexion à une instance Autonomous Database :
    • config_dir : indique le répertoire contenant tnsnames.ora.
    • dsn : permet d'indiquer l'alias réseau souhaité dans le fichier tnsnames.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 fichier wallet.zip.

    Par exemple, sous Linux, pour vous connecter en tant qu'utilisateur ADMIN à l'aide de oracledb.connect avec le nom de service réseau db2024_low (le nom de 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 de service réseau db2024_low (le nom de 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épertoire.

    Comme indiqué dans cet exemple, wallet_location et config_dir sont définis sur le même répertoire (et le répertoire contient tnsnames.ora et ewallet.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 Database. Des fonctionnalités python-oracledb supplémentaires sont disponibles lorsque le pilote s'exécute en mode épais.
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 :

  1. Placez les fichiers tnsnames.ora, sqlnet.ora et cwallet.sso sur 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/admin sous 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/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 leur emplacement, soit avec le paramètre config_dir dans l'appel oracledb.init_oracle_client(), soit en définissant la variable d'environnement TNS_ADMIN.

      Remarque

      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 la connexion à l'instance Autonomous Database :
    • config_dir : indique 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 situé en dehors du répertoire de configuration client instantané network/admin.
    • dsn : indique l'alias réseau souhaité dans le fichier tnsnames.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 Autonomous Database à l'aide de vos informations d'identification de base de données en définissant le paramètre dsn sur l'alias 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 avec le nom de service réseau db2024_low (où le nom de service se trouve dans tnsnames.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_dir lorsque vous appelez oracledb.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=on

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