Conexión de aplicaciones Python con una cartera

Puede conectar aplicaciones de Python a la instancia de Autonomous Database con una cartera.

La conexión de una aplicación Python con una cartera (mTLS) proporciona seguridad mejorada para la autenticación y el cifrado. Además, la seguridad se aplica mediante credenciales de cliente (proporcionando un nombre de usuario y una contraseña).

El "modo fino" por defecto del controlador python-oracledb se conecta directamente a Oracle Database. De manera opcional, el controlador puede utilizar bibliotecas de Oracle Client, "modo grueso", para algunas funciones adicionales. Las bibliotecas de Oracle Client pueden ser de Oracle Instant Client, el cliente de Oracle completo o de una instalación de Oracle Database.

Siga estos pasos para conectar la aplicación Python a una instancia de Autonomous Database mediante una cartera (mTLS):

  1. Instalación de Python y el controlador python-oracledb
  2. Obtener credenciales de seguridad (Oracle Wallet) y activar la conectividad de red
  3. Realice este paso si solo desea conectarse en modo fino: Ejecute la aplicación Python con modo fino python-oracledb con una cartera
  4. Realice este paso si desea conectarse en modo grueso: Ejecutar aplicación Python con modo grueso python-oracledb con una cartera (mTLS)

Temas

Obtener credenciales de seguridad (Oracle Wallet) y activar la conectividad de red

Obtenga credenciales de seguridad de cliente para conectarse a una instancia de Autonomous Database.

  1. Descargue un archivo de cartera de la instancia de Autonomous Database para obtener un archivo zip que contiene las credenciales de seguridad del cliente y los valores de configuración de red necesarios para acceder a una instancia de Autonomous Database.

    Obtenga las credenciales de seguridad del cliente (archivo wallet.zip):

    • Usuario ADMIN: en la consola de Oracle Cloud Infrastructure, haga clic en Conexión a base de datos. Consulte Download Client Credentials (Wallets).

    • Otros usuarios (no administradores): obtenga Oracle Wallet del administrador para su instancia de Autonomous Database.

    Nota

    Proteja el archivo wallet.zip y su contenido para evitar el acceso no autorizado a la base de datos.
  2. Deszip el archivo de credenciales del cliente (wallet.zip).

Ejecución de la aplicación Python con modo fino python-oracledb con una cartera (mTLS)

Por defecto, python-oracledb utiliza el modo fino para conectarse directamente a la instancia de Autonomous Database.

En el modo grueso solo se necesitan dos archivos del zip de cartera:

  • tnsnames.ora: asigna nombres de servicio de red utilizados para cadenas de conexión de aplicaciones a los servicios de base de datos.

  • ewallet.pem: activa las conexiones SSL/TLS en modo fino.

Para conectarse en modo fino:

  1. Mueva los archivos tnsnames.ora y ewallet.pem a una ubicación del sistema.

    Por ejemplo, en Linux:

    /opt/OracleCloud/MYDB

    Por ejemplo, en Windows:

    C:\opt\OracleCloud\MYDB
  2. En la aplicación Python, defina los siguientes parámetros de conexión para conectarse a una instancia de Autonomous Database:
    • config_dir: especifica el directorio que contiene tnsnames.ora.
    • dsn: se utiliza para especificar el alias de red deseado del archivo tnsnames.ora.
    • password: especifica la contraseña del usuario de la base de datos.
    • user: especifica el usuario de base de datos.
    • wallet_location: especifica el directorio que contiene el archivo PEM (ewallet.pem).
    • wallet_password: especifica la contraseña para el archivo PEM (ewallet.pem). Esta contraseña se define al descargar el archivo wallet.zip.

    Por ejemplo, en Linux para conectarse como usuario ADMIN mediante oracledb.connect con el nombre de servicio de red db2024_low (el nombre de servicio se encuentra en 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)

    Por ejemplo, en Windows para conectarse como usuario ADMIN mediante oracledb.connect con el nombre de servicio de red db2024_low (el nombre de servicio se encuentra en 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)

    El uso de una cadena 'raw' r"..." significa que las barras invertidas se tratan como separadores de directorio.

    Como se muestra en este ejemplo, wallet_location y config_dir se definen en el mismo directorio (y el directorio contiene tnsnames.ora y ewallet.pem. No es necesario especificar el mismo directorio para estos archivos.

Si está protegido por un firewall, puede establecer un túnel de las conexiones TLS/SSL a través de un proxy mediante HTTPS_PROXY en el descriptor de conexión o mediante la configuración de atributos de conexión. La conexión correcta depende de configuraciones de proxy específicas. Oracle no recomienda el uso de un proxy en un entorno de producción, debido al posible impacto en el rendimiento.

En el modo fino, puede agregar los parámetros https_proxy y http_proxy_port para especificar un proxy.

Por ejemplo, en 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)

Por ejemplo, en 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)

Ejecución de la aplicación Python con modo grueso python-oracledb con una cartera (mTLS)

Por defecto, python-oracledb se ejecuta en modo Grueso, que se conecta directamente a Oracle Database. Hay disponibles funciones adicionales de python-oracledb cuando el controlador se ejecuta en modo grueso.
Nota

El modo grueso necesita que las bibliotecas de Oracle Client estén instaladas donde se ejecuta Python. También debe llamar a oracledb.init_oracle_client() en el código de Python.

En el modo Grueso, se necesitan los siguientes tres archivos del archivo zip de cartera:

  • tnsnames.ora: contiene los nombres de servicio de red utilizados para las cadenas de conexión de aplicaciones y asigna las cadenas a los servicios de base de datos.

  • sqlnet.ora: especifica la configuración del cliente de SQL*Net.

  • cwallet.sso: contiene la cartera de SSO de apertura automática.

Para conectarse en modo grueso:

  1. Coloque los archivos tnsnames.ora, sqlnet.ora y cwallet.sso en el sistema.

    Utilice una de las dos opciones para colocar estos archivos en el sistema:

    • Si va a utilizar Instant Client, mueva los archivos a la jerarquía de subdirectorio network/admin en el directorio de Instant Client. Por ejemplo, en función de la arquitectura o el sistema cliente y de dónde haya instalado Instant Client, los archivos deben estar ubicados en una ubicación de directorio como:

      /home/myuser/instantclient_19_21/network/admin

      o

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

      Por ejemplo, en Linux, si va a utilizar Oracle Client completo, mueva los archivos a $ORACLE_HOME/network/admin.

    • También puede mover los archivos a cualquier directorio accesible.

      Por ejemplo, en Linux, mueva los archivos al directorio /opt/OracleCloud/MYDB y edite sqlnet.ora para cambiar el directorio de ubicación de cartera al directorio que contiene el archivo cwallet.sso.

      Por ejemplo, en Linux, edite sqlnet.ora de la siguiente manera:

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

      Cuando los archivos de configuración no están en la ubicación por defecto, la aplicación debe indicar dónde están, ya sea con el parámetro config_dir en la llamada oracledb.init_oracle_client() o definiendo la variable de entorno TNS_ADMIN.

      Nota

      Ninguno de estos valores es necesario y no necesita editar sqlnet.ora si coloca todos los archivos de configuración en el directorio network/admin.
  2. En la aplicación Python, defina los siguientes parámetros de inicialización y conexión para conectarse a la instancia de Autonomous Database:
    • config_dir: especifica el directorio de configuración al colocar los archivos de configuración. Esto sólo es necesario cuando los archivos de configuración se colocan en un directorio fuera del directorio de configuración del cliente instantáneo network/admin.
    • dsn: especifica el alias de red deseado del archivo tnsnames.ora.
    • password: especifica la contraseña del usuario de la base de datos.
    • user: especifica el usuario de base de datos.

    En el primer caso para la colocación de los archivos de configuración, conéctese a la instancia de Autonomous Database mediante las credenciales de base de datos definiendo el parámetro dsn en el alias de red deseado de tnsnames.ora.

    Por ejemplo, para conectarse como usuario ADMIN mediante oracledb.init_oracle_client y el nombre de servicio de red db2024_low (donde el nombre de servicio se encuentra en tnsnames.ora):

    oracledb.init_oracle_client()
       connection=oracledb.connect(
           user="admin",
           password=password,
           dsn="db2024_low")

    Cuando los archivos de configuración están en un directorio fuera del directorio de configuración de cliente instantáneo, defina el parámetro config_dir al llamar a oracledb.init_oracle_client.

    Por ejemplo, en Linux para conectarse como usuario ADMIN mediante el nombre de servicio de red db2024_low:

    oracledb.init_oracle_client(config_dir="/opt/OracleCloud/MYDB")
       connection=oracledb.connect(
          user="admin",
          password=password,
          dsn="db2024_low")

    Por ejemplo, en Windows para conectarse como usuario ADMIN mediante el nombre de servicio de red db2024_low:

    oracledb.init_oracle_client(config_dir=r"C:\opt\OracleCloud\MYDB")
       connection=oracledb.connect(
          user="admin",
          password=password,
          dsn="db2024_low")

    El uso de una cadena 'raw' r"..." significa que las barras invertidas se tratan como separadores de directorio.

Si está protegido por un firewall, puede establecer un túnel de las conexiones TLS/SSL a través de un proxy mediante HTTPS_PROXY en el descriptor de conexión o mediante la configuración de atributos de conexión. La conexión correcta depende de configuraciones de proxy específicas. Oracle no recomienda el uso de un proxy en un entorno de producción, debido al posible impacto en el rendimiento.

En el modo Grueso, puede especificar un proxy editando el archivo sqlnet.ora y agregando una línea:

SQLNET.USE_HTTPS_PROXY=on

También puede editar tnsnames.ora y agregar un nombre de proxy HTTPS_PROXY y un puerto HTTPS_PROXY_PORT a la lista de direcciones del descriptor de conexión de cualquier nombre de servicio que tenga previsto utilizar.

Por ejemplo:

mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)

Consulte Activación del modo grueso de python-oracledb para obtener información sobre el modo Grueso.