Paquete DBMS_DATA_ACCESS

El paquete DBMS_DATA_ACCESS proporciona rutinas para generar y gestionar URL de solicitud autenticada previamente (PAR) para juegos de datos.

Visión general de DBMS_DATA_ACCESS

Describe el uso del paquete DBMS_DATA_ACCESS.

DBMS_DATA_ACCESS soporta estas operaciones:

  • Generación de una URL de SAP
  • Invalidación manual de una URL de PAR
  • Lista de URL de PAR activas

DBMS_DATA_ACCESS Modelo de Seguridad

La seguridad de este paquete se puede controlar otorgando EXECUTE en este paquete a los usuarios o roles seleccionados.

Cuando se le ha otorgado a un usuario EXECUTE en DBMS_DATA_ACCESS, puede crear, mostrar o invalidar las URL de PAR que crea el usuario. Además, por defecto, el usuario ADMIN tiene los siguientes privilegios:
  • El usuario ADMIN con el rol PDB_DBA tiene el privilegio EXECUTE en DBMS_DATA_ACCESS.
  • El usuario ADMIN con el rol PDB_DBA puede mostrar o invalidar cualquier URL de PAR en una instancia de Autonomous Database.

Resumen de los subprogramas DBMS_DATA_ACCESS

En esta sección se tratan los subprogramas DBMS_DATA_ACCESS que proporciona Autonomous Database.

Subprograma Descripción

Procedimiento GET_PREAUTHENTICATED_URL

Este procedimiento genera una URL de PAR.

Procedimiento INVALIDATE_URL

Este procedimiento invalida una URL de PAR.

Función LIST_ACTIVE_URLS

Esta función muestra todas las URL de PAR activas actualmente.

Procedimiento GET_PREAUTHENTICATED_URL

Este procedimiento genera una URL de PAR.

Hay dos formularios, uno para generar la URL de PAR para un objeto específico (tabla o vista). El formulario sobrecargado, mediante el parámetro sql_statement, genera una URL de PAR para una sentencia SQL.

Sintaxis

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL( 
    schema_name           IN VARCHAR2,
    schema_object_name    IN VARCHAR2,
    application_user_id   IN VARCHAR2,
    expiration_minutes    IN NUMBER,
    expiration_count      IN NUMBER,
    result                OUT CLOB);

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL( 
    sql_statement          IN CLOB,
    application_user_id    IN VARCHAR2,
    expiration_minutes     IN NUMBER,
    expiration_count       IN NUMBER,
    result                 OUT CLOB);

Parámetros

parámetro Descripción

schema_name

Especifica el propietario del objeto.

schema_object_name

Especifica el objeto de esquema (tabla o vista).

sql_statement

Especifica el texto de la consulta de la sentencia SELECT. Las URL de PAR no aceptan variables de enlace.

application_user_id

Especifica un valor de ID de usuario de aplicación. Cuando se accede a la URL de PAR, el valor de application_user_id especificado durante la generación de la URL de PAR está disponible a través de:

sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')

Puede definir políticas de VPD que utilicen este valor en el contexto de aplicación para restringir las filas visibles para el usuario de la aplicación.

expiration_minutes

Duración en minutos de validez de la URL de PAR.

El tiempo de caducidad máximo permitido es de 90 días (129600 minutos). Si el valor se establece en mayor que 129600, el valor utilizado es 129600 minutos (90 días).

Si se especifica expiration_minutes como un valor no nulo, expiration_count no se debe definir en un valor no nulo. Ambos no pueden ser no nulos al mismo tiempo.

Valor por defecto: cuando no se proporciona expiration_minutes o cuando se proporciona expiration_minutes como NULL, el valor se define en 90 días (129600 minutos).

expiration_count

Número de accesos permitidos en la URL de PAR.

No hay ningún valor por defecto.

Si no se especifica expiration_count y no se especifica expiration_minutes, expiration_minutes se define en 90 días (129600 minutos).

Si se especifica expiration_count como un valor no nulo, expiration_minutes no se debe definir en un valor no nulo. Ambos no pueden ser no nulos al mismo tiempo.

result

(CLOB)

Nota de Uso

  • Hay un límite de 128 URL de PAR activas en una instancia de Autonomous Database.

  • Al utilizar una URL de PAR desde un explorador, se soportan las siguientes opciones:
    • Para ver los datos devueltos en formato de tabla sin colorear (por defecto), agregue el parámetro de consulta ?view=table a la URL de PAR.
    • Vea los datos devueltos en formato de tabla y seleccione la columna o columnas que desea que tengan colores predefinidos según los valores de columna. Para ello, agregue el parámetro de consulta ?view=table&colored_column_names=column_name_1,column_name_2,...column_name_n a la URL de PAR, donde de column_name_1 a column_name_n son los nombres de las columnas que desea colorear.
    • Para ver los datos devueltos en formato de tabla y seleccionar un tipo de dato de columna específico con colores predefinidos, agregue el parámetro de consulta ?view=table&colored_column_types=data_type. Los valores de parámetro data_type soportados son VARCHAR y NONE.

Ejemplos

DECLARE
   status CLOB;
   BEGIN
   DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
      schema_name => 'USER1',
      schema_object_name => 'STUDENTS_VIEW',
      expiration_minutes => 120,
      result => status);
   dbms_output.put_line(status);
END;
/
DECLARE
   status CLOB;
   par_url_app_string CLOB;
   BEGIN
       par_url_app_string := 1919292929;
       DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
            sql_statement => 'SELECT student_id, student_name FROM STUDENTS_VIEW ORDER BY student_id',
            application_user_id => par_url_app_string,
            expiration_count => 25,
            result => status);
END;
/

Procedimiento INVALIDATE_URL

Este procedimiento invalida una URL de PAR.

Sintaxis

DBMS_DATA_ACCESS.INVALIDATE_URL(
    id                  IN VARCHAR2,
    kill_sessions       IN BOOLEAN DEFAULT FALSE,
    result              OUT CLOB);

Parámetros

parámetro Descripción

id

Especifica el propietario del objeto.

kill_sessions

Por defecto, las sesiones existentes que pueden estar en medio del acceso a los datos mediante una URL de PAR no se matan. Cuando es TRUE, este parámetro especifica que dichas sesiones existentes se deben matar, de modo que la invalidación no deje ningún acceso continuo al juego de datos.

Valores válidos: TRUE | FALSE.

result

Proporciona JSON para indicar si la invalidación es correcta o fallida (CLOB).

Función LIST_ACTIVE_URLS

Esta función muestra todas las URL de PAR activas actualmente.

Sintaxis

DBMS_DATA_ACCESS.LIST_ACTIVE_URLS RETURN CLOB;

Parámetros

parámetro Descripción
RETURN

El valor devuelto es una matriz de JSON.

Ejemplo

DECLARE
   result CLOB;
   BEGIN
       result := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;
       DBMS_OUTPUT.PUT_LINE(result);
   END;

[
    {
        "id": "89fa6081-ec6b-4179-9b06-a93af8fbd4b7",
        "schema_name": "SCOTT",
        "schema_object_name": "EMPLOYEE",
        "created_by": "ADMIN",
        "application_user_id": "AMIT",
        "expiration_time": "2023-01-14T23:41:01.029Z",
        "expiration_count": 100,
        "access_count": 9,
        "created": "2023-01-10T19:41:01.285Z"
    },
    {
        "id": "263d2cd7-3bc0-41a7-8cb9-438a2d843481",
        "sql_statement": "select name from v$pdbs",
        "created_by": "ADMIN",
        "application_user_id": "AMIT",
        "expiration_time": "2023-01-15T00:04:30.578Z",
        "expiration_count": 100,
        "access_count": 0,
        "created": "2023-01-10T20:04:30.607Z"
    }
]

Nota de Uso

  • El comportamiento de DBMS_DATA_ACCESS.LIST_ACTIVE_URLS depende del invocador. Si el invocador es ADMIN o cualquier usuario con el rol PDB_DBA, la función muestra todas las URL de PAR activas, independientemente del usuario que haya generado la URL de PAR. Si el invocador no es el usuario ADMIN ni un usuario con el rol PDB_DBA, la lista incluye solo las URL de PAR activas generadas por el invocador.