Compartir a través de


Referencia de tabla del sistema de registro de auditorías

Importante

Esta tabla del sistema está en versión preliminar pública. Para acceder a la tabla, el esquema debe estar habilitado en el catálogo system. Para obtener más información, consulte Habilitación de esquemas de tabla del sistema.

En este artículo se describe el esquema de la tabla de registro de auditoría y se pueden usar consultas de ejemplo con la tabla del sistema de registros de auditoría para responder a 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.

Ruta de acceso de tabla: esta tabla del sistema 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.
  • 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 Marca de tiempo del evento. La información de zona horaria se registra al final del valor con +00:00, que representa la zona horaria UTC. 2023-01-01T01:01:01.123+00:00
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 {{}} por los parámetros.

Nota:

Algunos 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 puede acceder a esta tabla?

Esta consulta usa information_schema para determinar qué usuarios tienen permisos en una tabla.

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 y 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

¿Qué usuarios han iniciado sesión en una aplicación de Databricks?

Esta consulta devuelve un evento para cada inicio de sesión en una instancia de aplicación de Databricks.

SELECT
  event_date,
  workspace_id,
  request_params.request_object_id as app,
  user_identity.email as user_email,
  user_identity.subject_name as username
FROM
  system.access.audit
WHERE
  action_name IN ("workspaceInHouseOAuthClientAuthentication", "mintOAuthToken", "mintOAuthAuthorizationCode")
AND
  request_params["client_id"] LIKE "{{application-ID}}"
GROUP BY
  event_date,
  workspace_id,
  app,
  user_email,
  username

Reemplace por {{application-ID}} el valor de Id. de aplicación de la entidad de servicio asignada a una aplicación específica de Databricks. Este valor se puede encontrar en la configuración de administrador del área de trabajo de Databricks que hospeda la aplicación.

¿Qué aplicaciones de Databricks se han actualizado para cambiar cómo se comparte la aplicación con otros usuarios o grupos?

Esta consulta devuelve eventos para las actualizaciones de permisos para cambiar el acceso a las aplicaciones de Databricks, incluido el tipo de permiso, el usuario o grupo al que se asigna el nuevo permiso y el usuario que envió el cambio.

SELECT
  event_date,
  workspace_id,
  request_params['request_object_id'] as app,
  user_identity['email'] as sharing_user,
  acl_entry['group_name'],
  acl_entry['user_name'],
  acl_entry['permission_level']
FROM
  system.access.audit t
LATERAL VIEW
  explode(from_json(request_params['access_control_list'], 'array<struct<user_name:string,permission_level:string,group_name:string>>')) acl_entry AS acl_entry
WHERE
  action_name = 'changeAppsAcl'
AND
  request_params['request_object_type'] = 'apps'
ORDER BY
  event_date DESC