Conexión de aplicaciones Python con una cartera (mTLS)
Puede conectar aplicaciones Python a su instancia de base de datos de IA autónoma con una cartera.
La conexión de una aplicación Python con una cartera (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 AI Database. De manera opcional, el controlador puede utilizar las bibliotecas del cliente de Oracle, "Thick mode", para algunas funciones adicionales. Las bibliotecas de los clientes de Oracle pueden ser de Oracle Instant Client, de Oracle Client completo o de una instalación de Oracle AI Database.
Siga estos pasos para conectar la aplicación Python a una instancia de base de datos de IA autónoma mediante una cartera (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
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 comprimido 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 Administrador): obtenga Oracle Wallet del administrador para su instancia de base de datos de IA autónoma.
Nota
Nota: Proteja el archivowallet.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 con una cartera (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.En Linux, por ejemplo:
/opt/OracleCloud/MYDBPor 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.
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)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 mediante 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.
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 con una cartera (mTLS)
Por defecto, python-oracledb se ejecuta en modo Thin, que se conecta directamente a Oracle AI Database. Las funciones adicionales de python-oracledb están disponibles cuando el controlador se ejecuta en modo grueso.
Nota
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
/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
Nota: Ninguno de estos valores es necesario y no es necesario editarsqlnet.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.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á detrás de un firewall, puede establecer un túnel de las conexiones TLS/SSL mediante 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.
En el modo Thick puede especificar un proxy editando el archivo sqlnet.ora y agregando una línea:
SQLNET.USE_HTTPS_PROXY=onAdemás, edite tnsnames.ora y agregue 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 desee 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.