Realizar llamadas externas mediante una cartera gestionada por el cliente
Cuando la instancia de la base de datos de IA autónoma está en un punto final privado, puede utilizar una cartera gestionada por el cliente con los procedimientos UTL_HTTP, DBMS_LDAP, UTL_SMTP o UTL_TCP. También puede utilizar una cartera gestionada por el cliente cuando el programador envía notificaciones de correo electrónico SMTP para varios eventos relacionados con trabajos del programador.
Acerca del Uso de Carteras Gestionadas por el Cliente con Llamadas Externas
Cuando la instancia de la base de datos de IA autónoma está en un punto final privado, puede utilizar una cartera gestionada por el cliente para gestionar llamadas externas o con el programador cuando el programador envía un correo electrónico para varios eventos relacionados con los trabajos del programador.
En Autonomous AI Database puede realizar llamadas externas para cualquiera de los siguientes fines:
-
Para utilizar servicios web con
UTL_HTTP. -
Para acceder a los datos desde servidores LDAP mediante
DBMS_LDAP. -
Para enviar correo electrónico a
UTL_SMTP. -
Para comunicarse con servidores basados en TCP/IP externos mediante TCP/IP con
UTL_TCP. -
Para las notificaciones de correo electrónico del trabajo de Oracle Scheduler.
Por defecto, cuando se utilizan procedimientos en estos paquetes, Autonomous AI Database mantiene una cartera interna y siempre utiliza conexiones seguras (la cartera gestionada por Oracle contiene más de 90 de los certificados SSL intermedio y raíz de confianza más comunes). Cuando su base de datos de IA autónoma reside en un punto final privado, tiene la opción de utilizar la cartera gestionada por Oracle por defecto con las certificaciones SLL intermedias y de confianza, o bien puede proporcionar una cartera gestionada por el cliente.
Cuando la base de datos de IA autónoma reside en un punto final privado, puede especificar una cartera gestionada por el cliente para UTL_HTTP, UTL_SMTP, DBMS_LDAP y DBMS_NETWORK_ACL_ADMIN mediante los siguientes procedimientos PL/SQL:
UTL_HTTP.SET_WALLET (
path IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
UTL_HTTP.REQUEST (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_HTTP.REQUEST_PIECES (
wallet_p ath IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL,
UTL_HTTP.CREATE_REQUEST_CONTEXT (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_TCP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL);
UTL_SMTP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
DBMS_LDAP.OPEN_SSL(
sslwrl IN VARCHAR2,
sslwalletpasswd IN VARCHAR2)
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE
wallet_path IN VARCHAR2
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACL(
wallet_path IN VARCHAR2En estas llamadas, según el procedimiento, utilice el parámetro path o wallet_path para especificar una cartera gestionada por el cliente. El directorio de cartera se define con el prefijo DIR: e incluye una ruta de acceso de cartera. Por ejemplo:
UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password');El usuario actual que llama a la API debe tener privilegios READ en el objeto de directorio o tener otorgado el privilegio del sistema CREATE ANY DIRECTORY.
El prefijo DIR: es el formulario preferido que se debe utilizar para especificar una cartera gestionada por el cliente. Además, está soportado el prefijo file:. Por ejemplo:
UTL_HTTP.set_wallet('file:WALLET_DIR/wallet.sso', 'password');Consulte Uso de Cartera Gestionada por el Cliente para Llamadas Externas con UTL_HTTP para obtener más información:
Acerca del Uso de Carteras Gestionadas por el Cliente con el Servidor de Correo Electrónico del Planificador
El servidor de correo electrónico del programador está disponible para enviar notificaciones de correo electrónico para varios eventos relacionados con el programador, como la notificación de trabajos iniciados, fallidos o completados. Por defecto, el servidor de correo electrónico SMTP del programador utiliza la cartera definida en la propiedad SSL_WALLET para las comunicaciones SSL/TLS. Opcionalmente, puede utilizar una cartera gestionada por el cliente con el servidor de correo electrónico SMTP del programador.
Los siguientes atributos globales admiten el uso de una cartera gestionada por el cliente:
-
EMAIL_SERVER_WALLET_DIRECTORY: se define en un objeto de directorio que especifica la ruta de acceso en la que reside la cartera SSL. -
EMAIL_SERVER_WALLET_CREDENTIAL: se define en un objeto de credencial con un par username/password, donde username es cualquier valor y password es la contraseña de cartera SSL.
Los valores para estos atributos se definen mediante DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE.
Puede obtener más información en los siguientes enlaces:
Requisitos para utilizar una cartera gestionada por el cliente con llamadas externas
Muestra los pasos necesarios para utilizar una cartera gestionada por el cliente con llamadas externas o notificaciones de correo electrónico SMTP del programador.
Realice los pasos previos necesarios:
-
Verifique que la instancia de la base de datos de IA autónoma está configurada con un punto final privado.
Consulte Configuración de acceso de Red con puntos finales privados para más información.
-
Defina el parámetro
private_targeten el valorTRUEcuando otorgue las ACL necesarias condbms_network_acl_admin.append_wallet_aceo defina la propiedad de base de datosROUTE_OUTBOUND_CONNECTIONS.Consulte Uso de una cartera gestionada por el cliente para llamadas externas con UTL_HTTP y Seguridad mejorada para conexiones salientes con puntos finales privados y para obtener más información.
-
Obtenga o cree una cartera gestionada por el cliente.
Por ejemplo, para crear una cartera con
orapki:-- Create an SSL Wallet and load the Root CERTs using orapki utility $ORACLE_HOME/bin/orapki wallet create -wallet /u01/web/wallet -pwd ******** $ORACLE_HOME/bin/orapki wallet add -wallet /u01/web/wallet -trusted_cert -cert MyWebServer.cer -pwd ******** -- Store the credentials in the SSL Wallet using mkstore utility $ORACLE_HOME/bin/mkstore -wrl /u01/web/wallet -createCredential secret-from-the-wallet 'example@oracle.com' ******** Enter wallet password: ********Consulte Gestión de elementos de infraestructura de claves públicas (PKI) para obtener más información.
-
Almacene la cartera en un cubo de Cloud Object Storage.
Después de obtener o crear la cartera gestionada por el cliente que contiene certificados autofirmados, almacene la cartera en una ubicación de Cloud Object Storage.
Uso de una cartera gestionada por el cliente para llamadas externas con UTL_HTTP
Cuando su instancia de base de datos de IA autónoma está en un punto final privado, puede utilizar una cartera gestionada por el cliente para gestionar llamadas externas.
En estos pasos se describe el uso de una cartera gestionada por el cliente con UTL_HTTP. Los pasos son los mismos para los otros paquetes soportados, incluidos: DMBS_LDAP, UTL_SMTP y UTL_TCP.
Realice los pasos necesarios para utilizar una cartera gestionada por el cliente. Consulte Requisitos para utilizar una cartera gestionada por el cliente con llamadas externas para obtener más información.
Para configurar una base de datos de IA autónoma para utilizar una cartera gestionada por el cliente:
-
Cree una credencial mediante
DBMS_CLOUD.CREATE_CREDENTIALpara acceder a Cloud Object Storage.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Los valores que proporcione para
usernameypassworddependen del servicio de Cloud Object Storage que utilice.Esto crea la credencial que utiliza para acceder a Cloud Object Storage donde reside la cartera gestionada por el cliente.
No es necesario crear una credencial para acceder al almacén de objetos de Oracle Cloud Infrastructure si activa las credenciales de entidad de recurso. Consulte Uso de la entidad de recurso para acceder a recursos de Oracle Cloud Infrastructure para obtener más información.
-
Utilice un directorio existente o cree un nuevo directorio para el archivo de cartera.
Por ejemplo:
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';Consulte Crear directorio en base de datos de IA autónoma para obtener información sobre la creación de directorios.
-
Utilice
DBMS_CLOUD.GET_OBJECTpara cargar la cartera gestionada por el cliente en el directorio que ha creado en el paso anterior, WALLET_DIR.Por ejemplo:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /En este ejemplo,
namespace-stringes el espacio Oracle Cloud Infrastructure Object Storage Namepace, ybucketnamees el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información. -
Otorgue las ACL necesarias para permitirle leer las credenciales del directorio especificado.
BEGIN dbms_network_acl_admin.append_wallet_ace( wallet_path => 'dir:WALLET_DIR', ace => xs$ace_type( privilege_list => xs$name_list('use_client_certificates', 'use_passwords'), principal_name => '*USER_NAME*', principal_type => xs_acl.ptype_db) ); END; / -
Defina la ruta de acceso de cartera para utilizarla con procedimientos
UTL_HTTP.BEGIN UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password'); END; /Para especificar el directorio de cartera con
UTL_HTTP.set_walletpuede utilizar el prefijodir:o el prefijofile:.El prefijo
dir:solo está disponible en Autonomous AI Database. Consulte UTL_HTTP para obtener información sobre el prefijofile:. -
Ahora puede ejecutar procedimientos
UTL_HTTPpara acceder a un punto final mediante la cartera gestionada por el cliente con un certificado autofirmado.Por ejemplo:
SELECT UTL_HTTP.REQUEST('https://example.com') from dual;
Uso de Carteras Gestionadas por el Cliente con Notificaciones por Correo Electrónico del Planificador
Describe los pasos para utilizar el servidor de correo electrónico SMTP del programador con una cartera gestionada por el cliente.
Realice los pasos necesarios para utilizar una cartera gestionada por el cliente. Consulte Requisitos para utilizar una cartera gestionada por el cliente con llamadas externas para obtener más información.
Para utilizar una cartera gestionada por el cliente con el servidor de correo electrónico del programador:
-
Cree una credencial mediante
DBMS_CLOUD.CREATE_CREDENTIALpara acceder a Cloud Object Storage.Por ejemplo:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Los valores que proporcione para
usernameypassworddependen del servicio de Cloud Object Storage que utilice.Esto crea la credencial que utiliza para acceder a Cloud Object Storage donde reside la cartera gestionada por el cliente.
No es necesario crear una credencial para acceder al almacén de objetos de Oracle Cloud Infrastructure si activa las credenciales de entidad de recurso. Consulte Uso de la entidad de recurso para acceder a recursos de Oracle Cloud Infrastructure para obtener más información.
-
Utilice un directorio existente o cree un nuevo directorio para el archivo de cartera.
Por ejemplo:
CREATE DIRECTORY WALLET_DIR AS '*directory_path_of_your_choice*';Consulte Crear directorio en base de datos de IA autónoma para obtener información sobre la creación de directorios.
-
Utilice
DBMS_CLOUD.GET_OBJECTpara cargar la cartera en el directorio que creó en el paso anterior, WALLET_DIR.Por ejemplo:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /En este ejemplo,
namespace-stringes el espacio Oracle Cloud Infrastructure Object Storage Namepace, ybucketnamees el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información. -
Ejecute los comandos para configurar el programador para que envíe el correo electrónico SMTP para las notificaciones de trabajos del programador.
Por ejemplo:
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER','smtp.email.us-ashburn-1.oci.oraclecloud.com:587'); DBMS_CLOUD.create_credential('EMAIL_CRED', 'ocid1.user.oc1..username', 'password'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_CREDENTIAL','ADMIN.EMAIL_CRED'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_ENCRYPTION','STARTTLS'); END; /Estos comandos definen el servidor SMTP de correo electrónico del programador, crean el objeto de credencial que contiene las credenciales SMTP y definen el atributo del programador para las credenciales SMTP, y especifican que se utilice TLS para el correo electrónico enviado para la notificación del trabajo del programador.
Consulte Procedimiento SET_SCHEDULER_ATTRIBUTE para obtener más información.
-
Cree una credencial para almacenar la contraseña para la cartera gestionada por el cliente.
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'WALLET_CRED', username => '*any_user*', password => 'password'); END; /Esto crea la credencial que utiliza en el siguiente paso para proporcionar la contraseña para la cartera gestionada por el cliente.
-
Defina el directorio de cartera del programador y la credencial de cartera.
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_DIRECTORY','WALLET_DIR'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_CREDENTIAL', 'ADMIN.WALLET_CRED'); END; / -
Consulte la vista
DBA_SCHEDULER_GLOBAL_ATTRIBUTEpara verificar los valores definidos en los pasos anteriores.SELECT attribute_name, value FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE attribute_name LIKE 'EMAIL_SERVER%' ORDER BY 1, 2;ATTRIBUTE_NAME VALUE ------------------------------ ----------------------------------------------- EMAIL_SERVER smtp.email.us-ashburn-1.oci.oraclecloud.com:587 EMAIL_SERVER_CREDENTIAL "ADMIN"."EMAIL_CRED" EMAIL_SERVER_ENCRYPTION STARTTLS EMAIL_SERVER_WALLET_CREDENTIAL "ADMIN"."WALLET_CRED" EMAIL_SERVER_WALLET_DIRECTORY "WALLET_DIR"
Notas para el Uso de Carteras Gestionadas por el Cliente con Llamadas Externas
Proporciona notas para el uso de una cartera gestionada por el cliente con llamadas externas.
-
Las solicitudes
DBMS_CLOUDno respetan la cartera personalizada definida conUTL_HTTP.set_wallet. Esto incluyeDBMS_CLOUD.SEND_REQUESTy todo el acceso de almacenamiento de objetos para las tablas externasDBMS_CLOUDque defina conDBMS_CLOUD.CREATE_EXTERNAL_TABLE,DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEoDBMS_CLOUD.CREATE_HYBRID_PART_TABLE. Al realizar una consulta en una tabla externa que ha creado con un procedimientoDBMS_CLOUD, las consultas no respetan la cartera personalizada definida conUTL_HTTP.set_wallet. -
Las solicitudes
APEX_WEB_SERVICEno respetan la cartera personalizada definida conUTL_HTTP.set_wallet.Para utilizar una cartera gestionada por el cliente con APEX, especifique el parámetro
p_wallet_pathen las llamadas de APIAPEX_WEB_SERVICEo defina la configuración de la instancia de la ruta de acceso de cartera en los servicios de administración de APEX.Consulte Acceso a los servicios de administración de Oracle APEX para obtener más información.
-
Están soportadas las carteras de conexión automática y las carteras protegidas por contraseña. Al utilizar una cartera de conexión automática, especifique
NULLpara el parámetrowallet_password. -
El usuario actual que llama a la API
UTL_HTTP.set_walletdebe tener privilegiosREADen el objeto de directorio o tener otorgado el privilegio del sistemaCREATE ANY DIRECTORY. -
Se permite la API
UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET. Consulte el procedimiento SET_AUTHENTICATION_FROM_WALLET para obtener más información. -
El prefijo
file:está soportado conUTL_HTTP.set_walletsiempre que la ruta de acceso del archivo especificada sea compatible conPATH_PREFIX.Puede determinar la conformidad
PATH_PREFIXpara una ruta de acceso proporcionada como entrada con el procedimientoDBMS_PDB_IS_VALID_PATH(otorgada aPUBLIC, incluido el usuarioADMIN).Por ejemplo:
with function check_path_prefix_compliance(file_path varchar2) return varchar2 as BEGIN if dbms_pdb_is_valid_path(file_path) then return 'YES'; else return 'NO'; end if; END; SELECT check_path_prefix_compliance('/u03/dbfs/1276CDexample/data/dpdump') as PATH_PREFIX_COMPLIANT, check_path_prefix_compliance('/u01/app/oracle/diag') as PATH_PREFIX_COMPLIANT FROM dual; / -
Para garantizar la compatibilidad con versiones anteriores cuando se utiliza
UTL_HTTP.set_wallet, en los casos en los que se ignora la ruta de acceso de cartera, se aceptan valores de entrada comofile:,NULL, etc. Estos valores se ignoran y especifican que se utilice la ruta de acceso de cartera SSL por defecto conUTL_HTTP.set_wallet. -
Están soportadas las API de ACL de cartera
DBMS_NETWORK_ACL_ADMIN, comoAPPEND_WALLET_ACL. Estos procedimientos permiten otorgar/revocar privilegios de ACL de cartera. Consulte DBMS_NETWORK_ACL_ADMIN para obtener más información. -
Para soportar el uso de las credenciales de contraseña en una cartera SSL para la autenticación, el usuario actual que llama a las API
UTL_HTTPdebe tener el privilegio de ACL "use-passwords" en la ruta de acceso de la cartera. -
Notas para definir
EMAIL_SERVER_WALLET_DIRECTORYyEMAIL_SERVER_WALLET_CREDENTIALconDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE:-
Para definir los valores de atributo con
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE, debe ser un usuario administrativo o un usuario con privilegiosMANAGE SCHEDULER(el usuario ADMIN tiene estos privilegios). -
Además del privilegio
MANAGE SCHEDULER, el usuario que llama aDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEdebe tener el privilegioREADen el objeto de directorio definido conEMAIL_SERVER_WALLET_DIRECTORYy el privilegioEXECUTEen el objeto de credencial definido conEMAIL_SERVER_WALLET_CREDENTIAL.
-