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
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 {{}}
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?
- ¿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
- ¿Qué usuarios han iniciado sesión en una aplicación de Databricks?
- ¿Qué aplicaciones de Databricks se han actualizado para cambiar cómo se comparte la aplicación con otros usuarios o grupos?
¿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