Partilhar via


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 ser habilitado em seu system catálogo. Para obter mais informações, consulte Habilitar esquemas de 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 de 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 espaço de trabalho.
  • Somente os logs no nível da conta do Unity Catalog estão disponíveis em todas as regiões.
  • Os logs de auditoria no nível da conta registram workspace_id como 0.

Esquema da tabela do sistema de log de auditoria

A tabela do sistema de log de auditoria usa o seguinte esquema:

Nome da coluna Tipo de dados Description Exemplo
version string Versão do esquema do log de auditoria 2.0
event_time carimbo de data/hora Carimbo de data/hora do evento. As informações de fuso horário são registradas no final do valor com +00:00 a representação do fuso horário UTC. 2023-01-01T01:01:01.123+00:00
event_date data Data do calendário em que a ação teve lugar 2023-01-01
workspace_id long ID do espaço de trabalho 1234567890123456
source_ip_address string Endereço IP de origem do pedido 10.30.0.242
user_agent string Originação do pedido Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id string ID da sessão de onde veio o pedido 123456789
user_identity string Identidade do usuário que inicia a solicitação {"email": "user@domain.com",
"subjectName": null}
service_name string Nome do serviço iniciando a solicitação unityCatalog
action_name string Categoria do evento capturado no log de auditoria getTable
request_id string ID do pedido ServiceMain-4529754264
request_params map Mapa de valores-chave contendo todos os parâmetros de solicitação. Depende do tipo de pedido [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response estruturar Estrutura dos valores de retorno de resposta {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level string Espaço de trabalho ou evento no nível da conta ACCOUNT_LEVEL
account_id string ID da conta 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id string ID do evento 34ac703c772f3549dcc8671f654950f0

Consultas de amostra

As seções a seguir incluem consultas de exemplo que você pode usar para obter informações sobre sua tabela do sistema de logs de auditoria. Para que essas consultas funcionem, substitua os valores entre colchetes {{}} pelos parâmetros.

Nota

Alguns exemplos incluem eventos detalhados de log de auditoria, que não são habilitados por padrão. Para habilitar logs de auditoria detalhados em um espaço de trabalho, consulte Habilitar logs de auditoria detalhados.

Este artigo inclui as seguintes consultas de exemplo:

Quem pode aceder a esta tabela?

Esta 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?

Nota

Os nomes completos não são capturados no log para operações DML. Inclua o esquema e o nome simples para capturar tudo.

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?

Nota

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

Exemplo de resultado

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

Ver os comandos do bloco de notas executados mais recentemente

Essa consulta retorna os comandos do bloco de anotações executados mais recentemente e o usuário que executou o comando.

Nota

A runCommand ação 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 login em um aplicativo Databricks?

Essa consulta retorna um evento para cada logon em uma instância do aplicativo 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 de ID do aplicativo para a entidade de serviço atribuída a um aplicativo Databricks específico. Esse valor pode ser encontrado nas configurações de administrador do espaço de trabalho Databricks que hospeda o aplicativo.

Quais aplicativos 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 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