Uso de URL de solicitud autenticada previamente para el acceso a datos de solo lectura en Autonomous Database

Puede generar y gestionar URL de solicitud autenticada previamente (PAR) para datos en Autonomous Database.

El uso de una URL de PAR permite recuperar datos fácilmente de la base de datos, sin necesidad de proporcionar información adicional que no sea la URL de PAR para acceder a los datos. Cualquier usuario puede acceder a los datos proporcionando la URL de PAR en un explorador o mediante un cliente REST, según los controles de seguridad que aplique la base de datos. Los usuarios pueden ver los datos recuperados en formato tabular desde un explorador agregando un parámetro de consulta a la URL de PAR.

Acerca de las URL de solicitud autenticada previamente (PAR) en Autonomous Database

En función de cómo genere una URL de solicitud autenticada previamente (SAP), una URL de PAR proporciona acceso a los datos de tablas o vistas o mediante la ejecución de una consulta SQL.

Al generar una URL de PAR, especifica una caducidad, ya sea como hora de caducidad, por ejemplo, defina que la URL de PAR caduque después de 120 minutos o como recuento de caducidad, por ejemplo, la URL de PAR caduque después de que se utilice 10 veces.

Las URL de PAR proporcionan lo siguiente:

  • Acceso público: mediante una URL de PAR, un destinatario de datos de la red pública de Internet puede acceder a los datos cuando estos residen en una instancia de Autonomous Database en una subred privada.

  • Vencimiento: un proveedor de datos especifica la caducidad de una URL de PAR, lo que significa que la URL de PAR tiene un tiempo limitado antes de que caduque (hasta un máximo de 90 días).

  • Límites de recuento de uso de caducidad: un proveedor de datos puede especificar un límite en el número de veces que un destinatario puede utilizar una URL de PAR para acceder a los datos.

  • Transparencia de punto final: un proveedor de datos puede ocultar el nombre de Autonomous Database para que no esté visible en una URL de PAR.

Casos de uso de URL de PAR

La generación y el suministro de URL de PAR soporta los siguientes casos de uso:

Ejemplo Descripción

Colaboración dentro de la organización

Puede utilizar URL de PAR para el acceso a datos de emergencia. En situaciones en las que se necesita una respuesta rápida, como durante una investigación de incidentes críticos, proporcione una URL de PAR para permitir el acceso inmediato y temporal a datos específicos sin necesidad de crear nuevas cuentas de base de datos ni de modificar los permisos existentes.

Aplicaciones BB (de negocio a negocio)

Un socio comercial puede acceder fácilmente a los datos. Mediante el uso de una URL de PAR, una empresa puede proporcionar a un partner de negocio una forma sencilla de acceder a datos o informes. Esto puede eliminar la necesidad de generar informes manuales y distribuir correos electrónicos.

Auditorías y revisiones de terceros

Cuando un auditor o revisor externo requiere acceso a datos específicos durante un tiempo limitado, una URL de PAR puede proporcionarles el acceso que necesitan sin comprometer la seguridad general de la base de datos.

Datos como producto (comercio digital)

Los proveedores pueden otorgar acceso limitado o de uso único al contenido o los datos adquiridos mediante una URL de PAR. Una vez accedida, la URL caduca, lo que protege la exclusividad del producto y garantiza una entrega eficiente y segura.

Mejores prácticas de seguridad para URL de PAR

A continuación se muestran algunas mejores prácticas para generar y utilizar URL de PAR:

  • Definir un tiempo de caducidad corto: una URL de PAR solo debe ser válida durante el tiempo mínimo necesario. Cuanto más corto sea el período de validez, menor será el riesgo si la URL de PAR se ve comprometida.

  • Invalidación de PAR: invalide una URL de PAR inmediatamente cuando ya no sea necesaria.

  • Usar permisos adecuados: una URL de PAR se ejecuta con los privilegios otorgados al usuario de 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.

  • Seguridad del contenido: para mitigar el riesgo de compartir datos dinámicos no deseados:

    • Cree una vista sobre los datos que desea compartir en una URL de PAR y controle que la definición de vista está actualizada.

    • Según sea necesario, cree una política de VPD al generar una URL de PAR. Puede utilizar políticas de VPD para restringir las filas visibles para los usuarios de URL de PAR.

  • Supervisión de carga: supervise la carga de consultas de URL de PAR mediante PerfHub y la supervisión SQL.

    Active la escala automática de recursos informáticos y asegúrese de que el recuento de CPU tenga el tamaño adecuado para el tamaño del juego de datos y la carga de consultas de 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, se utilizan los privilegios otorgados al usuario de 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 crear 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,
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    El procedimiento DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL no acepta variables de enlace.

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

  3. Check the result.

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

    {
    "status":"SUCCESS",
    "id":"Vd1Px7QWASdqDbnndiuwTA_example",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Vdtv..._example_wxd0PN/data",
    "expiration_ts":"2023-12-04T23:51:35.334Z"
    }
    También puede utilizar DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR. Consulte Lista de URL de PAR 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, se utilizan los privilegios otorgados al usuario de 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 sentencia de consulta SQL arbitraria:

  1. Identifique la tabla o vista que contiene la información que desea compartir, así como la sentencia SELECT de 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 crear 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,
              result               => status);
           dbms_output.put_line(status);
        END;
    /

    El procedimiento DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL no acepta variables de enlace en la sentencia SQL que proporciona con sql_statement.

    Nota

    El valor sql_statement debe ser una sentencia SELECT.

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

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

  3. Check the result.

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

    {
       "status":"SUCCESS", 
       "id":"xA6iRGexmapleARc_zz",
       "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/XA2_example_m4s/data",
       "expiration_ts":"2024-05-16T17:01:08.226Z",
       "expiration_count":10
    }

    Puede utilizar DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar las URL de PAR. Consulte Lista de URL de PAR 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 control de acceso detallado para que solo un subjuego de datos, filas, esté 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 usuarios y 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 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 conceda 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. Piense en 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 ha especificado al generar la URL de PAR.
  2. Cree la 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 para obtener más información.

  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 para obtener más información.

Mostrar 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;
/

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

Uso de una URL de PAR para acceder a los datos

Los datos de URL de PAR se recuperan y devuelven en formato JSON y se paginan.

Puede acceder a los datos mediante una URL de PAR con un explorador o mediante cualquier cliente REST. Los datos devueltos se paginan para permitirle acceder a un máximo de 100 registros a la vez, con el tamaño total de los datos en la respuesta limitado a 1 MB. Puede proporcionar el parámetro de consulta limit para limitar el número de registros recuperados. La recuperación de datos de URL de PAR se bloquea si falla la autenticación de URL de PAR o si la URL de PAR solicitada ha caducado.

Para facilitar la legibilidad humana, los datos devueltos se pueden ver en formato tabular cuando se accede desde un explorador y se agrega un parámetro de consulta a la URL de PAR. Consulte Uso de URL de PAR para acceder a datos y ver en formato de tabla para obtener instrucciones.

Por ejemplo, utilice una URL de PAR:

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data

La respuesta de URL de PAR incluye enlaces para cualquier página anterior o siguiente, cuando los datos incluyen más de una página. Esto le permite navegar en cualquier dirección al recuperar datos. El JSON también incluye un enlace self que apunta a la página actual, así como un atributo hasMore que indica si hay más datos disponibles para recuperar.

A continuación se muestra el formato de respuesta:

{
    "items": [],                 <-- Array of records from database
    "hasMore": true OR false,    <-- Indicates if there are more records to fetch or not
    "limit": Number,             <-- Indicates number of records in the page. Maximum allowed number is 100.
    "offset": Number,            <-- Offset indicating the start of the current page
    "count": Number,             <-- Count of records in the current page
    "links": [
        {
            "rel": "self",
            "href": "{Link to preauth url for the current page}"
        },
        {
            "rel": "previous",
            "href": "{Link to preauth url for the previous page}"
        },
        {
            "rel": "next",
            "href": "{Link to preauth url for the next page}"
        }
    ]
}

Por ejemplo, a continuación se muestra una respuesta de ejemplo de una URL de PAR (con nuevas líneas agregadas para mayor claridad):

{"items":[
{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Yew","HEIGHT":11},{"COUNTY":"First","SPECIES":"Willow","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":29},{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},{"COUNTY":"Main","SPECIES":"Spruce","HEIGHT":8},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},{"COUNTY":"First","SPECIES":"Maple","HEIGHT":16},
{"COUNTY":"Main","SPECIES":"Aspen","HEIGHT":35},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":27},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},{"COUNTY":"Main","SPECIES":"Pine","HEIGHT":37},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78},{"COUNTY":"Main","SPECIES":"Alder","HEIGHT":45},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51},{"COUNTY":"Main","SPECIES":"Hemlock","HEIGHT":17},
{"COUNTY":"Main","SPECIES":"Douglas-fir","HEIGHT":34},{"COUNTY":"First","SPECIES":"Larch","HEIGHT":12},
{"COUNTY":"Main","SPECIES":"Cedar","HEIGHT":21},{"COUNTY":"First","SPECIES":"Douglas-fir","HEIGHT":10},
{"COUNTY":"Main","SPECIES":"Redwood","HEIGHT":78}],

"hasMore":false,
"limit":100,
"offset":0,
"count":30,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data"}
]}

Uso de URL de PAR para acceder a datos y ver en formato de tabla

Los datos de URL de solicitud autenticada previamente (SAP) se recuperan y visualizan desde un explorador en formato de tabla.

Puede acceder a los datos mediante una URL de PAR con un explorador y ver los datos devueltos en formato de tabla de base de datos. El formato de tabla admite el desplazamiento, la ordenación, el filtrado y el color de los valores de celda. Para devolver datos en formato de tabla, agregue el parámetro de consulta ?view=table a cualquier URL de PAR.
Por ejemplo, desde un explorador, utilice una URL de PAR con ?view=table agregado:
https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table

A continuación se muestra una respuesta de ejemplo a una URL de PAR con ?view=table agregada:

A continuación se muestra la descripción de par_url_ui_default.png

Ordenación de Datos de Columna

Se pueden ordenar las columnas en orden ascendente o descendente. Para ello, haga clic en la columna flecha desplegable y seleccione Orden ascendente o Orden descendente.

A continuación se muestra una captura de pantalla de una tabla de ejemplo con la columna HEIGHT ordenada en orden descendente:

A continuación se muestra la descripción de par_url_ui_descending.png

Filtro de datos de columna

Puede filtrar valores de columna. Para filtrar una columna, haga clic en la flecha desplegable de la columna, introduzca el texto de filtro en el cuadro de texto de entrada y haga clic en Intro.

A continuación se muestra una captura de pantalla de una tabla de ejemplo con la columna ESPECIES filtrada para mostrar solo datos de árboles de picea:

A continuación se muestra la descripción de par_url_ui_filtered.png

Después de hacer clic en Intro, solo se muestran las filas de los árboles de abeto:A continuación se muestra la descripción de par_url_ui_spruce.png

Colorear datos de columna

Por defecto, ninguna de las columnas tiene color. Puede seleccionar las columnas que desea que tengan colores predefinidos en función de los valores de columna. Para especificar las columnas que desea colorear, proporcione los nombres de columna como parámetro de consulta colored_column_names.

Por ejemplo, para colorear column1 y column2:
https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_names=column1,column2

A continuación se muestra un ejemplo de URL de PAR y una captura de pantalla de una parte de la tabla resultante. La tabla resultante tiene datos de color para las columnas COUNTY y SPECIES. La columna SPECIES está ordenada en sentido ascendente:

https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_names=COUNTY,SPECIES

A continuación se muestra la descripción de par_url_ui_colored.png

Colorear tipos de dato de columna

También puede seleccionar un tipo de datos de columna específico para colorear proporcionando el tipo de datos como parámetro de consulta colored_column_types.

Este parámetro soporta colored_column_types=VARCHAR para colorear todas las columnas de cadena (VARCHAR) y colored_column_types=NONE para no colorear ningún tipo de dato.

Por ejemplo:

https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/F5Sn..._example/data?view=table&colored_column_types=VARCHAR

Invalidación de 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 el procedimiento INVALIDATE_URL para obtener más información.

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

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

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

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

Notas sobre el uso de URL de PAR para compartir datos

Proporciona notas para utilizar URL de PAR con Autonomous Database.

  • El procedimiento DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL no acepta variables de enlace, tanto si la URL de PAR está en una sentencia SQL como en un objeto específico.

  • Al ejecutar el procedimiento DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL con el parámetro sql_statement, la sentencia SQL debe ser una sentencia SELECT.

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