Notas sobre los paquetes PL/SQL para Autonomous Database

Notes for Oracle Database PL/SQL packages in Autonomous Database.

Paquetes PL/SQL no disponibles

  • DBMS_DEBUG_JDWP

  • DBMS_DEBUG_JDWP_CUSTOM

  • UTL_INADDR

Notas sobre los paquetes PL/SQL

  • DBMS_LDAP

    • No está permitido especificar una dirección IP en el nombre de host.

    • El único puerto permitido es el 636.

    • Los argumentos SSLWRL y SSLWALLETPASSWD del procedimiento OPEN_SSL se ignoran. El valor por defecto para la propiedad SSLWRL se define en la cartera que utilizan UTL_HTTP y DBMS_CLOUD para realizar solicitudes web salientes en Autonomous Database.

    • Los subprogramas DBMS_LDAP.SIMPLE_BIND_S y DBMS_LDAP.BIND_S realizan la autenticación en el servidor de directorios.

      Los subprogramas DBMS_LDAP.SIMPLE_BIND_S y DBMS_LDAP.BIND_S se modifican para aceptar objetos de credenciales como argumento.

      A continuación, se muestran las notas de uso y los ejemplos de estos subprogramas modificados:

      • Los subprogramas SIMPLE_BIND_S y BIND_S modificados permiten transferir objetos de credenciales para definir la autenticación del servidor de directorios. Los objetos de credenciales son objetos de esquema, por lo que solo los usuarios con privilegios pueden acceder a ellos y permiten configurar privilegios de nivel de esquema para acceder al control de credenciales. La transferencia de credenciales del programador es una forma adecuada y segura de almacenar y gestionar el nombre de usuario, la contraseña y las claves para la autenticación.

      • Los subprogramas SIMPLE_BIND_S y BIND_S modificados son una alternativa segura y práctica a los subprogramas SIMPLE_BIND_S y BIND_S que existían anteriormente.

        Consulte FUNCTION simple_bind_s y FUNCTION bind_s para obtener más información.

      • El argumento CREDENTIAL de las funciones SIMPLE_BIND_S y BIND_S se utiliza para realizar la autenticación basada en credenciales en el servidor de directorios.

      • Por ejemplo:
        • Cree un objeto de credencial:

          BEGIN DBMS_CLOUD.CREATE_CREDENTIAL (
              credential_name => 'LDAP_CRED',
              username        => 'web_app_user',
              password        => 'password' );
          END;

          Esto crea un objeto de credencial que crea un par de nombre de usuario/contraseña almacenado.

          Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

          Consulte Especificación de Credenciales de Trabajo del Planificador para obtener más información.

        • Llame a DBMS_LDAP.SIMPLE_BIND_S:

          DECLARE
                l_mail_conn DBMS_LDAP.INIT;
              BEGIN 
                l_ldap_conn   := DBMS_LDAP.INIT('ldap.example.com', 636);
                l_auth_result := DBMS_LDAP.SIMPLE_BIND_S(l_ldap_conn, 'LDAP_CRED');
                ...
          END;
          

          El código de este ejemplo llama primero a la función DBMS_LDAP.INIT que inicializa una sesión con un servidor LDAP y establece una conexión con el servidor LDAP ldap.example.com en el número de puerto 636. El valor l_ldap_conn de la función SIMPLE_BIND_S es el identificador de sesión LDAP y LDAP_CRED es el nombre de las credenciales.

        • function bind_s realiza una autenticación compleja en el servidor de directorios. Por ejemplo:

          DECLARE
                l_mail_conn DBMS_LDAP.INIT;
              BEGIN 
                l_ldap_conn   := DBMS_LDAP.INIT('ldap.example.com', 636);
                l_auth_result := DBMS_LDAP.BIND_S(l_ldap_conn, 'LDAP_CRED', METH => DBMS_LDAP.AUTH_SIMPLE);
                ...
          END;
          

          El código de este ejemplo llama primero a la función DBMS_LDAP.INIT que inicializa una sesión con un servidor LDAP y establece una conexión con el servidor LDAP ldap.example.com en el número de puerto 636. El valor l_ldap_conn de la función BIND_S es el identificador de sesión LDAP y LDAP_CRED es el nombre de las credenciales. METH es el método de autenticación. El único valor válido es DBMS_LDAP_UTL.AUTH_SIMPLE.

      • Los privilegios EXECUTE en DBMS_CLOUD o DWROLE son necesarios para crear credenciales de programador.

      • Las credenciales transferidas deben estar presentes en el esquema de usuario actual y estar en estado activado.

      • Se puede proporcionar un sinónimo público o privado que apunte a una credencial en un esquema de usuario diferente como valor para el parámetro CREDENTIAL siempre que tenga el privilegio EXECUTE en el objeto de credencial base al que apunta el sinónimo. Consulte Visión general de los sinónimos para obtener más información.

    • El uso de DBMS_LDAP se audita por defecto. No puede desactivar la auditoría para DBMS_LDAP.

    • SSL/TLS se aplica para todas las comunicaciones que se producen entre el servidor LDAP y Autonomous Database.

    • Cuando la instancia de Autonomous Database esté configurada con un punto final privado, defina el parámetro de base de datos ROUTE_OUTBOUND_CONNECTIONS en 'PRIVATE_ENDPOINT' para especificar que todas las conexiones salientes están sujetas a las reglas de salida de la VCN del punto final privado de la instancia de Autonomous Database. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.

    Para utilizar DBMS_LDAP para una conexión en un punto final privado, utilice DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE y especifique el parámetro private_target con el valor TRUE.

    Nota

    Si define ROUTE_OUTBOUND_CONNECTIONS en PRIVATE_ENDPOINT, no es necesario definir el parámetro private_target en TRUE en esta API. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.
  • UTL_HTTP

    • Las conexiones mediante direcciones IP no están permitidas.

    • Solo se permite HTTPS cuando la instancia de Autonomous Database está en un punto final público. Cuando la instancia de Autonomous Database está en un punto final privado, se permiten conexiones HTTPS y HTTP_PROXY (las conexiones HTTP no están permitidas tanto para puntos finales públicos como privados).

    • La API UTL_HTTP.set_proxy se permite cuando la instancia de Autonomous Database está en un punto final privado.

    • Cuando la instancia de Autonomous Database está en un punto final privado y utiliza HTTP_PROXY o la API UTL_HTTP.SET_PROXY:

      • Las solicitudes DBMS_CLOUD no respetan el servidor proxy definido con UTL_HTTP.SET_PROXY. Esto incluye DBMS_CLOUD.SEND_REQUEST y todo el acceso de almacenamiento de objetos para las tablas externas DBMS_CLOUD que defina con DBMS_CLOUD.CREATE_EXTERNAL_TABLE, DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE o DBMS_CLOUD.CREATE_HYBRID_PART_TABLE.

      • Las solicitudes APEX_WEB_SERVICE no respetan el servidor proxy definido con UTL_HTTP.SET_PROXY.

    • Todos los servicios web deben estar protegidos. El único puerto permitido es 443 cuando la instancia de Autonomous Database está en un punto final público. Cuando la instancia de Autonomous Database está en un punto final privado, esta restricción no se aplica.

      La instancia de Autonomous Database está preconfigurada con una instancia de Oracle Wallet que contiene más de 90 certificados SSL intermedios y de raíz de confianza de uso habitual. Oracle Wallet se gestiona de forma centralizada. Puede configurar UTL_HTTP para que utilice una cartera para un sitio protegido mediante certificados SSL autofirmados. Consulte Uso de una cartera gestionada por el cliente para llamadas externas con UTL_HTTP para obtener más información.

    • El procedimiento SET_AUTHENTICATION_FROM_WALLET no está permitido.

    • Los argumentos WALLET_PATH y WALLET_PASSWORD para los procedimientos CREATE_REQUEST_CONTEXT, REQUEST y REQUEST_PIECES se ignoran.

    • El argumento CREDENTIAL del procedimiento SET_CREDENTIAL se utiliza para transferir el objeto de credencial como entrada al procedimiento. Consulte Especificación de credenciales de trabajo del programador y Procedimiento CREATE_CREDENTIAL para obtener más información.

    • Los privilegios EXECUTE en DBMS_CLOUD o DWROLE son necesarios para crear objetos de credenciales.

    • Las credenciales transferidas deben estar presentes en el esquema de usuario actual y estar en estado activado.

    • Se puede proporcionar un sinónimo público o privado que apunte a una credencial en un esquema de usuario diferente como valor para el parámetro CREDENTIAL siempre que tenga el privilegio EXECUTE en el objeto de credencial base al que apunta el sinónimo. Consulte Visión general de los sinónimos para obtener más información.

    • No se puede modificar la configuración de Oracle Wallet. Todos los argumentos para el procedimiento SET_WALLET se ignoran.

    • El uso de UTL_HTTP se audita por defecto. No puede desactivar la auditoría para UTL_HTTP.

    • Cuando la instancia de Autonomous Database esté configurada con un punto final privado, defina el parámetro de base de datos ROUTE_OUTBOUND_CONNECTIONS en 'PRIVATE_ENDPOINT' para especificar que todas las conexiones UTL_HTTP de salida están sujetas a las reglas de salida de la VCN del punto final privado de la instancia de Autonomous Database. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.

  • UTL_SMTP

    • El único proveedor de correo electrónico soportado es el servicio Email Delivery de Oracle Cloud Infrastructure. Consulte Descripción general del servicio Email Delivery para obtener más información.

    • No se permite el correo con una dirección IP en el nombre de host.

    • Los únicos puertos permitidos son 25 y 587.

    • El argumento CREDENTIAL de la función SET_CREDENTIAL se utiliza para transferir el objeto de credenciales del programador como entrada a la función. Consulte Especificación de credenciales de trabajo del programador y Procedimiento CREATE_CREDENTIAL para obtener más información.

    • Los privilegios EXECUTE en DBMS_CLOUD o DWROLE son necesarios para crear objetos de credenciales.

    • El argumento CREDENTIAL del procedimiento SET_CREDENTIAL se utiliza para transferir el objeto de objetos de credenciales como entrada al procedimiento. Consulte Especificación de Credenciales de Trabajo del Planificador para obtener más información.

    • Las credenciales transferidas deben estar presentes en el esquema de usuario actual y estar en estado activado.

    • Se puede proporcionar un sinónimo público o privado que apunte a una credencial en un esquema de usuario diferente como valor para el parámetro CREDENTIAL siempre que tenga el privilegio EXECUTE en el objeto de credencial base al que apunta el sinónimo. Consulte Visión general de los sinónimos para obtener más información.

    • El uso de UTL_SMTP se audita por defecto. No puede desactivar la auditoría para UTL_SMTP.

    • Cuando la instancia de Autonomous Database esté configurada con un punto final privado, defina el parámetro de base de datos ROUTE_OUTBOUND_CONNECTIONS en 'PRIVATE_ENDPOINT' para especificar que todas las conexiones UTL_SMTP de salida están sujetas a las reglas de salida de la VCN del punto final privado de la instancia de Autonomous Database. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.

  • UTL_TCP

    • La dirección IP no está permitida en el nombre de host.

    • Los únicos puertos permitidos son: 443 (HTTP) 25 y 587 (SMTP).

    • Para el puerto 443, solo se permiten URL HTTPS.

    • Los argumentos WALLET_PATH y WALLET_PASSWORD para el procedimiento OPEN_CONNECTION se ignoran. El valor por defecto para las propiedades WALLET_PATH y WALLET_PASSWORD se define en la cartera que utilizan UTL_HTTP y DBMS_CLOUD para realizar solicitudes web salientes en Autonomous Database.

    • El uso de UTL_TCP se audita por defecto. No puede desactivar la auditoría para UTL_TCP.

    • SSL/TLS se aplica para todas las comunicaciones que se produzcan a través de conexiones TCP/IP.

    • Cuando la instancia de Autonomous Database esté configurada con un punto final privado, defina el parámetro de base de datos ROUTE_OUTBOUND_CONNECTIONS en 'PRIVATE_ENDPOINT' para especificar que todas las conexiones UTL_TCP de salida están sujetas a las reglas de salida de la VCN del punto final privado de la instancia de Autonomous Database. Consulte Seguridad mejorada para conexiones de salida con puntos finales privados para obtener más información.

  • DBMS_NETWORK_ACL_ADMIN

    • No está permitido otorgar privilegios de ACL en direcciones IP.

    • La ACL HTTP_PROXY está permitida en puntos finales privados.

  • UTL_HTTP Errores

    En la siguiente tabla, se muestran los mensajes de error y las posibles causas de estos mensajes de error al utilizar UTL_HTTP:

    Mensaje de Error Posible causa

    ORA-12545: Connect failed because target host or object does not exist

    El host o objeto de destino no existe o es privado.

    ORA-24247: network access denied by access control list (ACL)

    No se ha encontrado la lista de control de acceso (ACL) para el host especificado.

    ORA-29024: Certificate validation failure

    El certificado del host no existe o no está entre los certificados soportados.

    ORA-29261: Bad argument

    Las credenciales transferidas no son válidas o están desactivadas o el usuario no tiene privilegios suficientes en la credencial.

  • UTL_SMTP Error

    Mensaje de Error Posible causa

    ORA-29261: Bad argument

    Las credenciales transferidas no son válidas o están desactivadas o el usuario no tiene privilegios suficientes en la credencial.

  • DBMS_LDAP Error

    Mensaje de Error Posible causa

    ORA-31400: Missing or invalid scheduler credential

    Las credenciales transferidas son NULL o no válidas.

Consulte UTL_HTTP, DBMS_LDAP, UTL_SMTP, UTL_TCP y DBMS_NETWORK_ACL_ADMIN en PL/SQL Packages and Types Reference para obtener más información.