Generación, enumeración, invalidación y supervisión de URL de PAR

Muestra los pasos que se deben generar. Enumere, invalide o supervise las URL de PAR.

Generación de una URL de PAR para una tabla o una vista

Muestra los pasos para generar una URL de PAR que puede utilizar para compartir el acceso a un objeto de esquema (tabla o vista).

Cuando se ejecuta una URL de PAR, utiliza los privilegios otorgados al usuario de la base de datos que genera la URL de PAR. El usuario que genera una URL de PAR debe tener los privilegios mínimos necesarios para proporcionar acceso a los datos. Para mantener la seguridad, Oracle recomienda que no ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL como usuario ADMIN.

Para utilizar una URL de PAR para proporcionar acceso a los datos como objeto de esquema (tabla o vista):

  1. Identifique la tabla o vista que desea compartir.

    Si hay restricciones en los datos que desea que estén disponibles, utilice el parámetro application_user_id al generar la URL de PAR y cree una política de VPD para restringir los datos que expone. Consulte Definición de una política de base de datos privada virtual para proteger los datos de URL de PAR para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar la URL de PAR.
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name         => 'HIGH',
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre la URL de PAR.

    {
    "status":"SUCCESS","id":"wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qH",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-pPLdrbUTcLUrZLExyzxyzabc_1w/data",
    "expiration_ts":"2024-10-22T22:37:18.805Z",
    "expiration_count":null
    }
    También puede:
    • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR. Consulte Lista de URL de PAR para obtener más información.
    • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de una URL de PAR. Consulte procedimiento EXTEND_URL para obtener más información.
    • Genere URL de PAR atendidas con garantías y recursos de nivel de servicio diferentes. Por ejemplo, el acceso a un objeto o sentencia SQL se puede asignar a los servicios HIGH o MEDIUM, mientras que el acceso a otro objeto o sentencia SQL se puede asignar al servicio LOW. Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

Generación de una URL de PAR con una sentencia Select

Muestra los pasos para generar una URL de PAR que proporcione acceso a los datos mediante una sentencia de consulta SQL.

Cuando se ejecuta una URL de PAR, utiliza los privilegios otorgados al usuario de la base de datos que genera la URL de PAR. El usuario que genera una URL de PAR debe tener los privilegios mínimos necesarios para proporcionar acceso a los datos. Para mantener la seguridad, Oracle recomienda que no ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL como usuario ADMIN.

Para utilizar una URL de PAR para proporcionar acceso a los datos como una sentencia de consulta SQL arbitraria:

  1. Identifique la tabla o vista que contiene la información que desea compartir, así como la sentencia SELECT en la tabla o vista que desea utilizar.

    Si hay restricciones en los datos que desea que estén disponibles, utilice el parámetro application_user_id al generar la URL de PAR y cree una política de VPD para restringir los datos que expone. Consulte Definición de una política de base de datos privada virtual para proteger los datos de URL de PAR para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar la URL de PAR.
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              sql_statement        => 'SELECT species, height FROM TREE_DATA',
              expiration_count     => 10,
              service_name         => 'HIGH',
              result               => status);
           dbms_output.put_line(status);
        END;
    /

    El valor del parámetro sql_statement debe ser una sentencia SELECT. La sentencia SELECT soporta variables de enlace. Si las variables de enlace se incluyen en la sentencia SELECT, el valor de la variable de enlace se debe agregar a la URL de PAR generada como parámetro de consulta al acceder a los datos. El soporte de variables de enlace está disponible para los tipos de columna NUMBER y VARCHAR2.

    Este parámetro expiration_count de ejemplo especifica que la URL de PAR caduca y se invalida después de 10 usos. Cuando no se especifica expiration_time, el tiempo de caducidad se define en el valor por defecto, 90 días.

    Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye la URL de PAR.

    {
    "status":"SUCCESS","id":"LCvtpALqZgcHGL4Lxyzabcxyza-QVEFngwh1UGhg8jjuFAHOQJLGFi",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/RIabc_xyz7Kw8ZLyZ2JzCXZQXpc/data",
    "expiration_ts":"2025-01-20T16:42:49.527Z",
    "expiration_count":10}
    }
    También puede:
    • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR. Consulte Lista de URL de PAR para obtener más información.
    • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de una URL de PAR. Consulte procedimiento EXTEND_URL para obtener más información.
    • Genere URL de PAR atendidas con garantías y recursos de nivel de servicio diferentes. Por ejemplo, el acceso a un objeto o sentencia SQL se puede asignar a los servicios HIGH o MEDIUM, mientras que el acceso a otro objeto o sentencia SQL se puede asignar al servicio LOW. Consulte GET_PREAUTHENTICATED_URL Procedimiento para obtener más información.

Generación de una URL de PAR con funciones de interfaz de usuario especificadas en columnas

Al generar una URL de PAR, puede utilizar el parámetro column_lists para especificar las funciones de la interfaz de usuario para las columnas especificadas.

El parámetro column_lists es un valor JSON que especifica opciones por columna. Los valores soportados en column_lists son uno o más de los siguientes:

Valor column_lists Descripción
order_by_columns

Especifica las columnas que admiten la ordenación. Las columnas se especifican en una matriz de JSON.

filter_columns

Especifica las columnas que admiten el filtrado. Las columnas se especifican en una matriz de JSON.

default_color_columns

Especifica que sólo se utilice el color por defecto para las columnas especificadas. Las columnas se especifican en una matriz de JSON.

group_by_columns

Especifica que Agrupar por está permitido para las columnas especificadas (se permite ver los datos agrupando la columna especificada). Las columnas se especifican en una matriz de JSON.

Para especificar las funciones de IU de nivel de columna de vista de tabla para una URL de PAR:

  1. Identifique la tabla o vista o seleccione la sentencia que desea compartir.

    En este ejemplo se genera una URL de PAR mediante el parámetro column_lists con una tabla. También puede utilizar este parámetro al generar una URL de PAR con una sentencia SELECT.

    Consulte Generación de una URL de PAR para una tabla o vista y Generación de una URL de PAR con una sentencia Select para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar la URL de PAR y especifique la opción de agrupar por columnas para verla con un explorador:

    Por ejemplo, para especificar agrupar por columnas:

    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name          => 'HIGH',
              column_lists          => '{ "group_by_columns": ["COUNTY", "SPECIES"] }',
              result                => status);
    
           dbms_output.put_line(status);
        END;
    /

    El parámetro column_lists es JSON que contiene una lista de matrices JSON de columnas que definen la funcionalidad PAR-URL. Utilice este parámetro para especificar las columnas de una o más de las opciones: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Por ejemplo:

    column_lists => '{ 
            "group_by_columns":["COUNTY", "SPECIES"], 
            "order_by_columns":["COUNTY"] }'

    Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre la URL de PAR.

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzWlANP5RmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    Consulte Uso de URL de PAR para acceder a datos con la opción Agrupar por en formato de tabla para obtener un ejemplo que muestre el uso de grupo por columnas.

  4. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar la URL de PAR y especificar una opción de formato de interfaz de usuario.

    Por ejemplo, para definir las columnas que se pueden ordenar, utilice la opción column_lists order_by_columns:

    DECLARE
       status CLOB;
       column_lists CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name          => 'HIGH',
              column_lists          => '{ "order_by_columns": ["COUNTY", "SPECIES"] }',
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    El parámetro column_lists es JSON que contiene una lista de matrices JSON de columnas que definen la funcionalidad PAR-URL. Utilice este parámetro para especificar las columnas de una o más de las opciones: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  5. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre la URL de PAR.

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzk3EmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    Consulte Uso de URL de PAR en formato de tabla con ordenación de columnas para obtener un ejemplo que muestre el uso de orden por columnas.

También puede:

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR. Consulte Lista de URL de PAR para obtener más información.
  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de una URL de PAR. Consulte procedimiento EXTEND_URL para obtener más información.
  • Genere URL de PAR atendidas con garantías y recursos de nivel de servicio diferentes. Por ejemplo, el acceso a un objeto o sentencia SQL se puede asignar a los servicios HIGH o MEDIUM, mientras que el acceso a otro objeto o sentencia SQL se puede asignar al servicio LOW. Consulte procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

Enumerar URL de PAR

Puede mostrar las URL de PAR activas que ha generado en una instancia de Autonomous Database y el usuario ADMIN puede mostrar todas las URL de PAR activas.

Ejecute DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR activas. Por ejemplo:

DECLARE    
    result CLOB;
    BEGIN
       result := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;           
       dbms_output.put_line(result);
    END;
/

Este ejemplo muestra el siguiente resultado:

[{
"id":"lsB5yJzrG2E-o_Diwf7O86p1TphhHs3abcdefgoPuK",
"schema_name":"ADMIN",
"schema_object_name":"TREE_DATA",
"created_by":"ADMIN",
"service_name":"HIGH",
"expiration_time":"2024-10-31T03:02:31.996Z",
"access_count":0,
"created":"2024-10-30T21:02:32.041Z",
"column_lists":{"group_by_columns":["COUNTY","SPECIES"]}
}]

Consulte Función LIST_ACTIVE_URLS para obtener más información.

Nota

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 y no un usuario con el rol PDB_DBA, la lista incluye solo las URL de PAR activas generadas por el invocador.

Invalidación de las URL de PAR

En cualquier momento, un usuario con los privilegios adecuados puede invalidar una URL de PAR.

Para invalidar una URL de PAR, necesita la URL de PAR id. Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar cada URL de PAR y su id asociado.

Utilice DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar una URL de PAR. Por ejemplo:

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.INVALIDATE_URL(
        id => 'Vd1Px7QWASdqDbnndiuwTAyyEstv82PCHqS_example',
        result => status);           
       dbms_output.put_line(status);
    END;
/

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

Definición de una política de base de datos privada virtual para proteger los datos de URL de PAR

Al definir políticas de Oracle Virtual Private Database (VPD) para los datos que comparte con una URL de PAR, puede proporcionar un control de acceso detallado para que solo un subjuego de datos, filas, sea visible para una URL de PAR específica.

Oracle Virtual Private Database (VPD) es una función de seguridad que permite controlar el acceso a los datos de forma dinámica a nivel de fila para los usuarios y las aplicaciones mediante la aplicación de filtros en el mismo juego de datos. Cuando se accede a una 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 el valor de este contexto de aplicación para restringir los datos y las filas visibles para el usuario de la aplicación.

Cualquier usuario al que se le otorgue acceso para leer datos con una URL de PAR puede acceder a los datos y utilizarlos (ya sea una tabla, una vista o los datos proporcionados con una sentencia SELECT). Al definir una política de VPD en la base de datos que ha generado una URL de PAR, puede utilizar el valor application_user_id en una regla SYS_CONTEXT para proporcionar un control más detallado. Considere un ejemplo en el que los datos están disponibles con una URL de PAR. Si desea restringir el acceso a algunos de los datos, puede agregar una política de VPD.

Por ejemplo:

  1. Obtenga el valor application_user_id que especificó al generar la URL de PAR.
  2. Cree una política de VPD en la base de datos en la que ha generado la URL de PAR.
    CREATE OR REPLACE FUNCTION limit_sal (v_schema IN VARCHAR2, v_objname IN VARCHAR2)
      RETURN VARCHAR2 authid current_user AS
    BEGIN
         RETURN 'employee_id = SYS_CONTEXT(''DATA_ACCESS_CONTEXT$'', ''USER_IDENTITY'')';
    END;
    

    Consulte DBMS_RLS.

  3. Registre la política de VPD.
    BEGIN
       DBMS_RLS.ADD_POLICY( 
            object_schema        => 'HR',
            object_name          => 'EMPLOYEE',
            policy_name          => 'POL',
            policy_function      => 'LIMIT_SAL');
    END;
    /

    Consulte DBMS_RLS.

Supervisión y visualización del uso de URL de PAR

Autonomous Database proporciona vistas que permiten supervisar el uso de la URL de PAR.

vistas Descripción
Vistas V$DATA_ACCESS_URL_STATS y GV$DATA_ACCESS_URL_STATS

Estas vistas realizan un seguimiento del uso de la URL de PAR, incluido el tiempo transcurrido, el tiempo de CPU y la información adicional.