Conexión de aplicaciones Python mediante mTLS
SE APLICA A:
Solo Exadata Cloud@Customer
Puede conectar aplicaciones Python a su instancia de base de datos de IA autónoma mediante mTLS.
La conexión de una aplicación de Python con mTLS proporciona una seguridad mejorada para la autenticación y el cifrado, y la seguridad se aplica mediante credenciales de cliente (al proporcionar un nombre de usuario y una contraseña).
El "modo fino" predeterminado del controlador python-oracledb se conecta directamente a Oracle Database. De manera opcional, el controlador puede utilizar las bibliotecas del cliente de Oracle, "Thick mode", para algunas funciones adicionales. Las bibliotecas de clientes de Oracle pueden ser de Oracle Instant Client, de Oracle Client completo o de una instalación de Oracle Database.
Siga estos pasos para conectar la aplicación Python a una instancia de base de datos de IA autónoma mediante mTLS:
- Instalación de Python y el controlador python-oracledb
- Obtención de credenciales de seguridad (Oracle Wallet) y activación de la conectividad de red
- Realice este paso si solo desea conectarse en modo Thin: Ejecute la aplicación Python con el modo Thin oracledb de python (mTLS)
- Realice este paso si desea conectarse en modo grueso: Ejecute la aplicación Python con el modo grueso de python-oracledb (mTLS)
Instalación de Python y el controlador python-oracledb
Para conectarse a Autonomous AI Database desde su aplicación Python, instale Python y el controlador python-oracledb.
-
Instale Python 3, si aún no está disponible.
La versión de Python que utilice depende del sistema operativo y el hardware del cliente. Por ejemplo, Windows, Linux, macOS y otros.
Nota: Oracle recomienda mantenerse al día con las versiones de controladores Python y python-oracledb.
-
Instale el controlador python-oracledb desde PyPI.
El controlador python-oracledb es un módulo de extensión de lenguaje de programación Python que permite a los programas Python conectarse a Oracle Database. El controlador python-oracledb es la nueva versión principal renombrada del popular controlador cx_Oracle.
Versiones admitidas del controlador python-oracledb: python-oracledb 1.0 (o posterior)
Ejecute el siguiente comando para actualizar python:
python -m pip install oracledb --upgradeDeberá ver una salida similar a la siguiente:
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.21Notas para la instalación de python-oracledb:
-
Si está detrás de un proxy, utilice la opción
--proxypara agregar un servidor proxy al comando. Por ejemplo:python -m pip install oracledb --upgrade --proxy=http://proxy.example.com:80 -
En el caso de que no tenga permiso para escribir en directorios del sistema, incluya la opción
--user. Por ejemplo:python -m pip install oracledb --upgrade --user -
Si un paquete binario no está disponible para su plataforma, al ejecutar
pip, se descargará el paquete de origen. El origen se compila y se instala el binario resultante.
Consulte Installing python-oracledb para obtener opciones y consejos adicionales.
-
-
Si desea utilizar el controlador python-oracledb en modo grueso, instale el software del cliente de Oracle.
Por defecto, python-oracledb se ejecuta en modo Thin, que se conecta directamente a Oracle Database. El modo Thin no necesita bibliotecas de cliente de Oracle. Sin embargo, algunas funcionalidades adicionales están disponibles cuando python-oracledb se ejecuta en modo grueso.
Nota: Consulte Funciones de Oracle Database soportadas por python-oracledb para obtener información sobre las funciones soportadas en los modos Thin y Thick de python-oracledb. No todas las funciones que se muestran en este enlace están disponibles con Autonomous AI Database.
Python-oracledb utiliza el modo Thick cuando se utilizan las bibliotecas de Oracle Instant Client o las bibliotecas de Oracle Database Client y se llama a
oracledb.init_oracle_client()en el código Python.Al instalar el software de cliente de Oracle, existen diferencias en las versiones mínimas necesarias para las conexiones mTLS y TLS, de la siguiente manera:
-
Conexiones mutuas de TLS (mTLS):
-
Si la base de datos está en un equipo remoto, descargue el paquete gratuito de Oracle Instant Client 'Basic' o 'Basic Light' para la arquitectura de su sistema operativo. Utilice una versión admitida: Oracle Instant Client: 18.19 (o posterior), 19.2 (o posterior) o 21 (versión base o posterior).
-
También puede utilizar las bibliotecas de cliente de Oracle Database completas cuando estén disponibles en el sistema (incluido el cliente de Oracle Database completo: Oracle Database Client: 18.19 (o posterior), 19.2 (o posterior) o 21 (versión base o posterior).
-
-
Conexiones TLS: los clientes de Oracle Call Interface (OCI) soportan la autenticación TLS si utiliza las siguientes versiones de cliente:
-
Oracle Instant Client/Oracle Database Client 19.14 (o posterior) y 21.5 (o posterior): todas las plataformas
-
También puede utilizar las bibliotecas de cliente de Oracle Database completas cuando estén disponibles en el sistema, incluido el cliente de Oracle Database completo 19.14 (o posterior) y 21.5 (o posterior).
-
-
Obtención de credenciales de seguridad (Oracle Wallet) y activación de la conectividad de red
Obtenga credenciales para conectarse a una instancia de base de datos de IA autónoma.
-
Descargue un archivo de cartera de la instancia de la base de datos de IA autónoma para obtener un archivo zip que contenga las credenciales de seguridad del cliente y los valores de configuración de red necesarios para acceder a una instancia de la base de datos de IA autónoma.
Obtenga las credenciales de seguridad del cliente (archivo
wallet.zip):-
Usuario ADMIN: en la consola de Oracle Cloud Infrastructure, haga clic en Conexión de base de datos. Consulte Descarga de credenciales de cliente (carteras).
-
Otro usuario (no administrativo): obtenga Oracle Wallet del administrador para su instancia de base de datos de IA autónoma.
Nota: Proteja el archivo
wallet.zipy su contenido para evitar el acceso no autorizado a la base de datos.
-
-
Descomprima el archivo de credenciales de cliente (
wallet.zip).
Ejecución de la aplicación Python con el modo delgado python-oracledb (mTLS)
Por defecto, python-oracledb utiliza el modo Thin para conectarse directamente a su instancia de base de datos de IA autónoma.
En el modo Thin solo se necesitan dos archivos del zip de cartera:
-
tnsnames.ora: asigna los nombres de servicio de red utilizados para las cadenas de conexión de aplicación a los servicios de base de datos. -
ewallet.pem: activa las conexiones SSL/TLS en modo Thin.
Para conectarse en modo Thin:
-
Mueva los archivos
tnsnames.orayewallet.pema una ubicación del sistema.Linux
En Linux, por ejemplo:
/opt/OracleCloud/MYDBWindows
Por ejemplo en Windows:
C:\opt\OracleCloud\MYDB -
En la aplicación Python, defina los siguientes parámetros de conexión para conectarse a una instancia de base de datos de IA autónoma:
-
config_dir: especifica el directorio que contienetnsnames.ora. -
dsn: se utiliza para especificar el alias de red deseado del archivotnsnames.ora. -
password: especifica la contraseña de usuario de la base de datos. -
user: especifica el usuario de la 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 archivowallet.zip.
Linux
Por ejemplo, en Linux para conectarse como usuario ADMIN mediante
oracledb.connectcon el nombre de servicio de reddb2024_low(el nombre de servicio se encuentra entnsnames.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
Por ejemplo, en Windows para conectarse como usuario ADMIN mediante
oracledb.connectcon el nombre de servicio de reddb2024_low(el nombre de servicio se encuentra entnsnames.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_locationyconfig_dirse definen en el mismo directorio (y el directorio contienetnsnames.orayewallet.pem). No es necesario especificar el mismo directorio para estos archivos. -
Si está detrás de 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 definición de atributos de conexión. La conexión correcta depende de configuraciones de proxy específicas. Oracle no recomienda utilizar un proxy en un entorno de producción, debido al posible impacto en el rendimiento. Consulte HTTPS_PROXY en Referencia de servicios de red de base de datos de Oracle Database 19c u Referencia de servicios de red de base de datos de Oracle Database 26ai para obtener más información.
En el modo Thin puede especificar un proxy agregando los parámetros https_proxy y http_proxy_port.
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 el modo grueso python-oracledb (mTLS)
Por defecto, python-oracledb se ejecuta en modo Thin, que se conecta directamente a Oracle Database. Las funciones adicionales de python-oracledb están disponibles cuando el controlador se ejecuta en modo grueso.
Nota: El modo grueso requiere que las bibliotecas del cliente de Oracle estén instaladas donde se ejecuta Python. También debe llamar a oracledb.init_oracle_client() en el código Python.
En el modo Thick se necesitan los tres archivos siguientes del archivo zip de cartera:
-
tnsnames.ora: contiene los nombres de servicio de red utilizados para las cadenas de conexión de la aplicación 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:
-
Coloque los archivos
tnsnames.ora,sqlnet.oraycwallet.ssoen 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 una jerarquía de subdirectorio
network/adminen el directorio Instant Client. Por ejemplo, en función de la arquitectura o del sistema cliente y donde haya instalado Instant Client, los archivos deben estar en una ubicación de directorio, como:/home/myuser/instantclient_19_21/network/admino bien,
/usr/lib/oracle/19.21/client64/lib/network/adminPor ejemplo, en Linux, si utiliza el cliente de Oracle 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/MYDBy editesqlnet.orapara cambiar el directorio de ubicación de cartera al directorio que contiene el archivocwallet.sso.Por ejemplo, en Linux edite
sqlnet.orade la siguiente manera:WALLET_LOCATION = (SOURCE = (METHOD=file) (METHOD_DATA = (DIRECTORY="/opt/OracleCloud/MYDB"))) SSL_SERVER_DN_MATCH=yesCuando 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_diren la llamadaoracledb.init_oracle_client()o definiendo la variable de entornoTNS_ADMIN.Nota: Ninguno de estos valores es necesario y no necesita editar
sqlnet.orasi coloca todos los archivos de configuración en el directorionetwork/admin.
-
-
En la aplicación Python, defina los siguientes parámetros de inicialización y conexión para conectarse a la instancia de la base de datos de IA autónoma:
-
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áneonetwork/admin. -
dsn: especifica el alias de red deseado del archivotnsnames.ora. -
password: especifica la contraseña de usuario de la base de datos. -
user: especifica el usuario de la base de datos.
En el primer caso para la ubicación de los archivos de configuración, conéctese a la instancia de base de datos de IA autónoma mediante las credenciales de la base de datos definiendo el parámetro
dsnen el alias de red deseado detnsnames.ora.Por ejemplo, para conectarse como usuario ADMIN mediante
oracledb.init_oracle_clienty conectarse con el nombre de servicio de reddb2024_low(donde el nombre de servicio se encuentra entnsnames.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 del cliente instantáneo, defina el parámetro
config_diral llamar aoracledb.init_oracle_client.Linux
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")Windows
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á detrás de 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 definición de atributos de conexión. La conexión correcta depende de configuraciones de proxy específicas. Oracle no recomienda utilizar un proxy en un entorno de producción, debido al posible impacto en el rendimiento. Consulte HTTPS_PROXY en Referencia de servicios de red de base de datos de Oracle Database 19c u Referencia de servicios de red de base de datos de Oracle Database 26ai para obtener más información.
En el modo Thick puede especificar un proxy editando el archivo sqlnet.ora y agregando una línea:
SQLNET.USE_HTTPS_PROXY=on
Además, edite tnsnames.ora y agregue un nombre de proxy HTTPS_PROXY y un puerto HTTPS_PROXY_PORT a la lista de direcciones de descriptor de conexión de cualquier nombre de servicio que desee utilizar.
Por ejemplo:
mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)
Consulte Enabling python-oracledb Thick mode para obtener información sobre el modo Thick.
Contenido relacionado
Acerca de la conexión a una base de datos de IA autónoma dedicada