Referencia de tabla del sistema de registro de auditorías
Importante
Esta característica está en versión preliminar pública. El esquema debe estar habilitado para que esté visible 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 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
como0
.
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 {{}}
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 puede acceder a esta tabla?
- ¿Qué usuarios han accedido a una tabla en el último día?
- ¿A qué tablas accedió un usuario?
- Visualización de los cambios de permisos para todos los objetos protegibles
- Visualización de los comandos de cuaderno de ejecución más recientes
¿Quién puede acceder a esta tabla?
Esta consulta usa information_schema
para averiguar 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 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