Crear, gestionar y supervisar hipervínculos de tabla

Muestra los pasos para crear, gestionar y supervisar hipervínculos de tabla.

Generar un hiperenlace de tabla para una tabla o una vista

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

Cuando se ejecuta un hiperenlace de tabla, utiliza los privilegios otorgados al usuario de la base de datos que genera el hiperenlace de tabla. El usuario que genera un hiperenlace de tabla 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.CREATE_URL como usuario ADMIN.

Para utilizar un hiperenlace de tabla 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 el hiperenlace de tabla y cree una política de VPD para restringir los datos que exponga. Consulte Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.CREATE_URL para generar el hiperenlace de tabla.
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.CREATE_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    El parámetro expiration_minutes especifica que el hiperenlace de tabla caduca y se invalida después de 360 minutos.

    Consulte CREATE_URL Procedure para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

    {
    "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"
    }

Generar un hiperenlace de tabla con una sentencia Select

Muestra los pasos para generar un hiperenlace de tabla que proporciona acceso a los datos mediante una sentencia de consulta SQL.

Cuando se ejecuta un hiperenlace de tabla, utiliza los privilegios otorgados al usuario de la base de datos que genera el hiperenlace de tabla. El usuario que genera un hiperenlace de tabla 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.CREATE_URL como usuario ADMIN.

Para utilizar un hiperenlace de tabla 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 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 el hiperenlace de tabla y cree una política de VPD para restringir los datos que exponga. Consulte Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.CREATE_URL para generar el hiperenlace de tabla.

    Tiene dos opciones, dependiendo de si desea incluir valores de variables de enlace por defecto (si incluye variables de enlace en la sentencia select).

    1. Proporcione una sentencia select y no utilice el parámetro opcional default_bind_values.

      Por ejemplo:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.CREATE_URL(
                sql_statement        => 'SELECT species, height FROM TREE_DATA',
                expiration_minutes   => 360,
                result               => status);
             dbms_output.put_line(status);
          END;
      /
      El valor sql_statement debe ser una sentencia SELECT. La sentencia SELECT soporta variables ligadas. Si las variables de enlace se incluyen en la sentencia select, los valores de las variables de enlace se deben agregar al hiperenlace de tabla generado como parámetro de consulta al acceder a los datos.
    2. Proporcione una sentencia select e incluya el parámetro default_bind_values.

      Por ejemplo:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.CREATE_URL(
                sql_statement => 'select * FROM TREE_DATA WHERE COUNTY = :countyNAME',
                default_bind_values  => '{"countyNAME" : "First"}',
                expiration_minutes   => 360,
                result               => status);
             dbms_output.put_line(status);
          END;
      /

      El parámetro sql_statement debe ser una sentencia SELECT. La sentencia SELECT soporta variables ligadas.

      El parámetro default_bind_values especifica valores para una o más variables de enlace en sql_statement. Cuando default_bind_values se incluye con DBMS_DATA_ACCESS.CREATE_URL:

      • Para las variables de enlace especificadas en default_bind_values, puede omitir los valores de las variables de enlace al acceder a los datos. El valor por defecto se utiliza para una variable de enlace especificada si no se proporciona una sustitución en la URL de hiperenlace de tabla como parámetro de consulta al acceder a los datos.

      • Puede sustituir un valor de variable de enlace por defecto especificado en default_bind_values si agrega el valor de variable de enlace en la URL de hiperenlace de tabla como parámetro de consulta al acceder a los datos.

      • Si se incluye una variable de enlace en la sentencia select y no se especifica un valor por defecto para la variable de enlace en el parámetro default_bind_values, debe agregar un valor de variable de enlace a la URL de hiperenlace de tabla 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.

    En estos ejemplos, el parámetro expiration_minutes especifica que el hiperenlace de tabla caduca y se invalida después de 360 minutos.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye el hiperenlace de tabla.

    {
    "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"}
    }

Generar un hiperenlace de tabla con funciones de interfaz de usuario especificadas en columnas

Al generar un hiperenlace de tabla, puede utilizar el parámetro column_lists para especificar las funciones de 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 de column_lists Descripción
order_by_columns

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

filter_columns

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

default_color_columns

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

group_by_columns

Especifica que se permite agrupar por 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 la interfaz de usuario de nivel de columna de vista de tabla para un hiperenlace de tabla:

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

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

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

  2. Ejecute DBMS_DATA_ACCESS.CREATE_URL para generar el hiperenlace de tabla y especificar la opción Agrupar por columnas para ver con un explorador:

    Por ejemplo, para especificar el agrupamiento por columnas:

    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.CREATE_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              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 de hiperenlace de tabla. Utilice este parámetro para especificar las columnas para 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 CREATE_URL Procedure para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

    {
    "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"
    }

    Consulte Uso de hiperenlaces de tabla para acceder a datos con la opción Agrupar por en formato de tabla para ver un ejemplo que muestra el uso de agrupar por columnas.

  4. Ejecute DBMS_DATA_ACCESS.CREATE_URL para generar el hiperenlace de tabla 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.CREATE_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              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 de hiperenlace de tabla. Utilice este parámetro para especificar las columnas para una o más de las opciones: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Consulte CREATE_URL Procedure para obtener más información.

  5. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

    {
    "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"
    }

    Consulte Uso de hipervínculos de tabla en formato de tabla con ordenación de columnas para ver un ejemplo que muestra el uso de orden por columnas.

También puede:

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tabla. Consulte Lista de hiperenlaces de tablas y grupos de hiperenlaces de tablas para obtener más información.
  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de un hiperenlace de tabla. Consulte EXTEND_URL Procedure para obtener más información.
  • Generar hiperenlaces de tabla a los que se presta servicio con diferentes garantías y recursos de nivel de servicio. 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 CREATE_URL Procedure para obtener más información.

Creación de un hiperenlace de tabla protegida con contraseña

Al crear un hiperenlace de tabla, puede especificar una contraseña de hiperenlace de tabla.

Cuando un usuario accede a un hiperenlace de tabla protegido por contraseña, debe autenticarse mediante la contraseña especificada cuando se crea el hiperenlace de tabla. Esto proporciona un paso de seguridad adicional para evitar el acceso malicioso, en el caso de que un hiperenlace de tabla esté expuesto a un público más amplio de lo previsto.

Para crear un hiperenlace de tabla protegido con contraseña:

  1. Identifique la tabla, vista o sentencia de consulta para los datos que desea compartir.

    Puede especificar un hiperenlace de tabla o un grupo de hiperenlaces de tabla protegidos por contraseña.

  2. Al crear un hiperenlace de tabla o un grupo de hiperenlaces de tabla, especifique el parámetro password.

    Por ejemplo:

    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.CREATE_URL(
              schema_name => 'SCOTT',
              schema_object_name          => 'TREE_DATA',
              password                    => passwd,
              max_failed_access_attempts  => 15,
              result                      => status);
           dbms_output.put_line(status);
        END;
    /

    El parámetro password especifica la contraseña necesaria para acceder al hiperenlace de tabla (o grupo de hiperenlaces de tabla). Además de la contraseña, todas las protecciones de seguridad que se aplican a un hipervínculo de tabla, como el tiempo de caducidad y el recuento de caducidad, también se aplican a un hipervínculo de tabla protegido por contraseña.

    El parámetro max_failed_access_attempts especifica el número máximo de intentos de contraseña fallidos secuenciales; si se supera este valor, se invalidará el hiperenlace de tabla. El valor por defecto para este parámetro es 10. El recuento para realizar un seguimiento del número de intentos de acceso fallidos secuenciales se restablece a 0 cuando el usuario proporciona la contraseña correcta.

    Consulte CREATE_URL Procedure para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

    {
      "status" : "SUCCESS",
      "id" : "wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qHabc_1",
      "url" : "https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-pPLdrbUTcLUr1XetvO0tekak4p92m0HCjaMt8s/data",
      "expiration_ts" : "2025-11-06T22:41:14.779Z"
    }

Tenga en cuenta lo siguiente al incluir el parámetro password con DBMS_DATA_ACCESS.CREATE_URL:

  • El resultado incluye el atributo url con el valor URL de hiperenlace de tabla. Sin el parámetro password, el atributo de resultado es preauth_url. Esta diferencia le permite distinguir un hipervínculo de tabla protegido por contraseña en el resultado.

  • La longitud mínima de la contraseña es de 12 caracteres y debe incluir al menos una letra en mayúscula, una letra en minúscula y un carácter numérico. Estas reglas son las mismas que las que se aplican para las reglas de complejidad de contraseñas para un usuario de base de datos asociado a un PVF NULL (función de verificación de contraseña). Si se llama a CREATE_URL con el parámetro de contraseña y la contraseña proporcionada no cumple con estas reglas, por ejemplo, la contraseña tiene menos de 12 caracteres, la creación de la URL falla y se produce un error.

    Consulte Gestión de la complejidad de las contraseñas en Autonomous Database para obtener más información.

  • No hay opción para cambiar o restablecer una contraseña después de definirla. Si ejecuta CREATE_URL y, posteriormente, no ha guardado o no puede recordar la contraseña definida, debe crear un nuevo hipervínculo de tabla.

  • No hay ninguna asociación entre la contraseña de un hiperenlace de tabla protegido por contraseña y la contraseña del usuario que crea la URL. Si el usuario SCOTT crea un hiperenlace de tabla protegido por contraseña con CREATE_URL, no hay ninguna asociación entre la contraseña para la URL de hiperenlace de tabla que se crea y la contraseña para el usuario SCOTT.

Invalidar hiperenlaces de tablas

En cualquier momento, un usuario con los privilegios adecuados puede invalidar un hiperenlace de tabla.

Para invalidar un hipervínculo de tabla, necesita el hipervínculo de tabla id. Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para generar una lista de hiperenlaces de tabla y su id asociado.

Utilice DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar un hiperenlace de tabla. Por ejemplo:

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

También puede utilizar DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar un grupo de hipervínculos de tabla.

Consulte Invalidate a Table Hyperlink Group y INVALIDATE_URL Procedure para obtener más información.

Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla

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

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 un hiperenlace de tabla, el valor de application_user_id especificado durante la generación del hiperenlace de tabla 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, las filas y el usuario de la aplicación.

Cualquier usuario al que se le conceda acceso para leer datos con un hiperenlace de tabla 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 un hiperenlace de tabla, 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 un hiperenlace de tabla. 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 el hiperenlace de tabla.
  2. Cree la política de VPD en la base de datos en la que ha generado el hiperenlace de tabla.
    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.

Supervisión y visualización del uso del hiperenlace de la tabla

Autonomous Database proporciona vistas que permiten supervisar el uso del hiperenlace de tabla.

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

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

Notas para la creación de un hiperenlace de tabla

Notas para generar un hiperenlace de tabla con DBMS_DATA_ACCESS.CREATE_URL:

  • Puede utilizar el parámetro opcional service_name para especificar que el hiperenlace de tabla generado tenga un servicio de garantía y recursos de nivel de servicio específicos. Por ejemplo, utilice el parámetro service_name para especificar que el acceso a la sentencia SQL se asigne al servicio HIGH.

  • Puede utilizar el parámetro opcional inherit_acl si desea limitar el acceso a los datos de hiperenlace de tabla. Establezca este parámetro en TRUE para heredar las ACL. Cuando el valor de este parámetro es TRUE, la dirección IP de un consumidor de hiperenlace de tabla entrante se valida con las ACL en la base de datos del productor antes de permitir el acceso a los datos. Si la base de datos del productor no tiene ACL configuradas, se ignora el valor inherit_acl y se permite el acceso a los datos sin ninguna comprobación de ACL.

    Consulte Configuración del acceso de red con reglas de control de acceso (ACL) para obtener más información.

  • Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado, el resultado incluye un nombre private_preauth_url con el valor del formulario: "https://private-endpoint/adb/p/parurl-token/data".

    Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado y el punto final privado está configurado con Permitir acceso público activado, el resultado incluye tanto preauth_url para el punto final público como private_preauth_url.

    Consulte Configuración de puntos finales privados y Uso de un punto final privado con acceso público permitido para obtener más información.

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tabla. Consulte Lista de hiperenlaces de tablas y grupos de hiperenlaces de tablas para obtener más información.

  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de un hiperenlace de tabla. Consulte EXTEND_URL Procedure para obtener más información.