Referencia de tabla del sistema de registro de auditorías

Importante

Esta característica está en versión preliminar pública.

En este artículo se describe el esquema de la tabla de registros de auditoría y se proporcionan consultas de ejemplo que puede usar con la tabla del sistema de registro de auditoría para responder a las preguntas comunes sobre el uso de cuentas. Para obtener información sobre los eventos de registro de auditoría, consulte Referencia del registro de diagnóstico.

La tabla del sistema de registro de auditoría se encuentra en system.access.audit.

Consideraciones sobre el registro de auditoría

  • La mayoría de los registros de auditoría solo están disponibles en la región del área de trabajo.
  • Solo los registros de nivel de cuenta de Unity Catalog están disponibles en todas las regiones.
  • Los registros de auditoría de nivel de cuenta registran workspace_id como 0.

Esquema de la tabla del sistema del registro de auditoría

La tabla del sistema del registro de auditoría usa el esquema siguiente:

Nombre de la columna Tipo de datos Descripción Ejemplo
version cadena Versión del esquema del registro de auditoría 2.0
event_time timestamp Timestamp 2023-01-01T01:01:01.123
event_date date Fecha del calendario en la que tuvo lugar la acción 2023-01-01
workspace_id long Id. del área de trabajo 1234567890123456
source_ip_address cadena Dirección IP donde se originó la solicitud 10.30.0.242
user_agent cadena Origen de la solicitud Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id cadena Id. de la sesión desde la que procede la solicitud 123456789
user_identity cadena Identidad del usuario que inicia la solicitud {"email": "user@domain.com", "subjectName": null}
service_name cadena Solicitud de inicio del nombre de servicio unityCatalog
action_name cadena Categoría del evento capturado en el registro de auditoría getTable
request_id cadena Identificador de la solicitud ServiceMain-4529754264
request_params map Asignación de valores de clave que contienen todos los parámetros de solicitud. Depende del tipo de solicitud [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response struct Estructura de valores devueltos de respuesta {"statusCode": 200, "errorMessage": null, "result": null}
audit_level cadena Evento de nivel de área de trabajo o cuenta ACCOUNT_LEVEL
account_id cadena Identificador de la cuenta 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id cadena Identificador del evento 34ac703c772f3549dcc8671f654950f0

Consultas de ejemplo

En las secciones siguientes se incluyen consultas de ejemplo que puede usar para obtener información sobre la tabla del sistema de registros de auditoría. Para que estas consultas funcionen, reemplace los valores entre corchetes {{}} con sus propios parámetros.

Nota:

Algunos de estos ejemplos incluyen eventos detallados del registro de auditoría, que no están habilitados de forma predeterminada. Para habilitar los registros de auditoría detallados en un área de trabajo, consulte Habilitación de registros de auditoría detallados.

En este artículo se incluyen las siguientes consultas de ejemplo:

¿Quién accedió a esta tabla?

Esta consulta usa information_schema.

SELECT DISTINCT(grantee) AS `ACCESSIBLE BY`
FROM system.information_schema.table_privileges
WHERE table_schema = '{{schema_name}}' AND table_name = '{{table_name}}'
  UNION
    SELECT table_owner
    FROM system.information_schema.tables
    WHERE table_schema = '{{schema_name}}' AND table_name = '{{table}}'
  UNION
    SELECT DISTINCT(grantee)
    FROM system.information_schema.schema_privileges
    WHERE schema_name = '{{schema_name}}'

¿Qué usuarios han accedido a una tabla en el último día?

Nota:

Los nombres completos no se capturan en el registro para las operaciones de DML. Incluya el esquema y el nombre simple para capturarlos todos.

SELECT
  user_identity.email as `User`,
  IFNULL(request_params.full_name_arg,
    request_params.name)
    AS `Table`,
    action_name AS `Type of Access`,
    event_time AS `Time of Access`
FROM system.access.audit
WHERE (request_params.full_name_arg = '{{catalog.schema.table}}'
  OR (request_params.name = '{{table_name}}'
  AND request_params.schema_name = '{{schema_name}}'))
  AND action_name
    IN ('createTable','getTable','deleteTable')
  AND event_date > now() - interval '1 day'
ORDER BY event_date DESC

¿A qué tablas accedió un usuario?

Nota:

Para filtrar por intervalo de fechas, quite la marca de comentario de la cláusula de fecha en la parte inferior de la consulta.

SELECT
        action_name as `EVENT`,
        event_time as `WHEN`,
        IFNULL(request_params.full_name_arg, 'Non-specific') AS `TABLE ACCESSED`,
        IFNULL(request_params.commandText,'GET table') AS `QUERY TEXT`
FROM system.access.audit
WHERE user_identity.email = '{{User}}'
        AND action_name IN ('createTable',
'commandSubmit','getTable','deleteTable')
        -- AND datediff(now(), event_date) < 1
        -- ORDER BY event_date DESC

Resultado de ejemplo

EVENT WHEN TABLE ACCESSED QUERY TEXT
getTable 2023-05-31 system.access.audit GET table
getTable 2023-05-31 system.access.table_lineage GET table
commandSubmit 2023-05-31 Non-specific show functions;
commandSubmit 2023-05-31 Non-specific SELECT

request_params

FROM

system.access.audit

WHERE

service_name = "notebook"

AND action_name = "moveFolder"

LIMIT

5

Ver los cambios de permisos para todos los objetos protegibles

Esta consulta devolverá un evento para cada cambio de permiso que se haya producido en su cuenta. La consulta devolverá el usuario que realizó el cambio, el tipo de objeto protegible y el nombre, y los cambios específicos realizados.

SELECT event_time, user_identity.email, request_params.securable_type, request_params.securable_full_name, request_params.changes
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name = 'updatePermissions'
ORDER BY 1 DESC

Visualización de los comandos del cuaderno de ejecución más recientes

Esta consulta devuelve los comandos de cuaderno de ejecución más recientes junto con el usuario que ejecutó el comando.

Nota:

La acción runCommand solo se genera cuando se habilitan los registros de auditoría detallados. Para habilitar los registros de auditoría detallados, consulte Habilitación de registros de auditoría detallados.

SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100