Referência da tabela do sistema de log de auditoria
Importante
Esta tabela do sistema está em Visualização Pública. Para acessar a tabela, o esquema deve estar habilitado em seu catálogo system
. Para obter mais informações, consulte Habilitar esquemas da tabela do sistema.
Este artigo descreve o esquema da tabela de log de auditoria e tem consultas de exemplo que você pode usar com a tabela do sistema de log de auditoria para responder a perguntas comuns sobre o uso da conta. Para obter informações sobre eventos de log de auditoria, consulte Referência de log de diagnóstico.
Caminho da tabela: Esta tabela do sistema está localizada em system.access.audit
.
Considerações sobre o log de auditoria
- A maioria dos logs de auditoria só está disponível na região do workspace.
- Os logs de auditoria no nível da conta registram
workspace_id
como0
.
Esquema da tabela do sistema de logs de auditoria
A tabela do sistema de logs de auditoria usa o seguinte esquema:
Nome da coluna | Tipo de dados | Descrição | Exemplo |
---|---|---|---|
version |
string | Versão do esquema de log de auditoria | 2.0 |
event_time |
timestamp | Carimbo de data/hora do evento. As informações de fuso horário são registradas no final do valor, com +00:00 representando o fuso horário UTC. |
2023-01-01T01:01:01.123+00:00 |
event_date |
date | Data do calendário em que a ação ocorreu | 2023-01-01 |
workspace_id |
longo | ID do workspace | 1234567890123456 |
source_ip_address |
string | Endereço IP em que a solicitação foi originada | 10.30.0.242 |
user_agent |
string | Origem da solicitação | Apache-HttpClient/4.5.13 (Java/1.8.0_345) |
session_id |
string | ID da sessão de onde a solicitação veio | 123456789 |
user_identity |
string | Identidade da solicitação de início do usuário | {"email": "user@domain.com", "subjectName": null} |
service_name |
string | Nome do serviço que está iniciando a solicitação | unityCatalog |
action_name |
string | Categoria do evento capturado no log de auditoria | getTable |
request_id |
string | ID da solicitação | ServiceMain-4529754264 |
request_params |
map | Mapa de valores chave que contêm todos os parâmetros de solicitação. Depende do tipo de solicitação | [["full_name_arg", "user.chat.messages"], ["workspace_id", "123456789"], ["metastore_id", "123456789"]] |
response |
struct | Struct de valores retornados de resposta | {"statusCode": 200, "errorMessage": null, "result": null} |
audit_level |
string | Evento no nível da conta ou do workspace | ACCOUNT_LEVEL |
account_id |
string | ID da conta | 23e22ba4-87b9-4cc2-9770-d10b894bxx |
event_id |
string | ID do evento | 34ac703c772f3549dcc8671f654950f0 |
Consultas de exemplo
As seções a seguir incluem exemplos de consultas que você pode usar para obter insights sobre a tabela do sistema de logs de auditoria. Para que essas consultas funcionem, substitua os valores entre chaves {{}}
pelos parâmetros.
Observação
Alguns exemplos incluem eventos de log de auditoria detalhados, que não são habilitados por padrão. Para habilitar logs de auditoria detalhados em um workspace, consulte Habilitar logs de auditoria detalhados.
Este artigo inclui as seguintes consultas de exemplo:
- Quem pode acessar esta tabela?
- Quais usuários acessaram uma tabela no último dia?
- Quais tabelas um usuário acessou?
- Exibir alterações de permissões para todos os objetos protegíveis
- Exibir os comandos do notebook executados mais recentemente
- Quais usuários fizeram logon em um aplicativo do Databricks?
- Quais aplicativos do Databricks foram atualizados para alterar a forma como o aplicativo é compartilhado com outros usuários ou grupos?
Quem pode acessar esta tabela?
Essa consulta usa o information_schema
para determinar quais usuários têm permissões em uma tabela.
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}}'
Quais usuários acessaram uma tabela no último dia?
Observação
Nomes completos não são capturados no log para operações DML. Inclua o esquema e o nome simples para capturar 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
Quais tabelas um usuário acessou?
Observação
Para filtrar por intervalo de datas, descomente a cláusula de data na parte inferior da 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
Resultados de exemplo
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 |
Exibir alterações de permissões para todos os objetos protegíveis
Essa consulta retornará um evento para cada alteração de permissão que ocorreu em sua conta. A consulta retornará o usuário que fez a alteração, o tipo e o nome do objeto protegível e as alterações específicas que foram feitas.
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
Exibir os comandos do notebook executados mais recentemente
Essa consulta retorna os comandos do notebook executados mais recentemente e o usuário que executou o comando.
Observação
A ação runCommand
só é emitida quando os logs de auditoria detalhados estão habilitados. Para habilitar logs de auditoria detalhados, consulte Habilitar logs de auditoria detalhados.
SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100
Quais usuários fizeram logon em um aplicativo do Databricks?
Essa consulta retorna um evento para cada logon em uma instância do aplicativo do 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
Substitua {{application-ID}}
pelo valor da ID do Aplicativo para a entidade de serviço atribuída a um aplicativo específico do Databricks. Esse valor pode ser encontrado nas configurações de administrador do workspace do Databricks que hospeda o aplicativo.
Quais aplicativos do Databricks foram atualizados para alterar a forma como o aplicativo é compartilhado com outros usuários ou grupos?
Essa consulta retorna eventos para atualizações de permissão para alterar o acesso aos aplicativos do Databricks, incluindo o tipo de permissão, o usuário ou grupo ao qual a nova permissão é atribuída e o usuário que enviou a alteração.
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