Compartilhar via


Tabela de referência do sistema de registro de auditoria

Importante

Esta tabela do sistema está em Visualização Pública.

Este artigo descreve o esquema da tabela de logs de auditoria e inclui consultas de exemplo que você pode usar com a tabela do sistema de log de auditoria para responder a perguntas comuns sobre a atividade da conta. Para obter informações sobre os eventos do log de auditoria, consulte Referência do 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 está disponível apenas na região da área de trabalho.
  • 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 logs de auditoria usa o seguinte esquema:

Nome da coluna Tipo de dados Descrição Exemplo
account_id cadeia ID da conta 23e22ba4-87b9-4cc2-9770-d10b894bxx
workspace_id cadeia ID do workspace 1234567890123456
version cadeia Versão do esquema de 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 representando o fuso horário UTC. 2023-01-01T01:01:01.123+00:00
event_date data Data do calendário em que a ação ocorreu 2023-01-01
source_ip_address cadeia Endereço IP em que a solicitação foi originada 10.30.0.242
user_agent cadeia Origem da solicitação Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id cadeia ID da sessão de onde a solicitação veio 123456789
user_identity struct Identidade do usuário que inicia a solicitação {"email": "user@domain.com",
"subjectName": null}
service_name cadeia Nome do serviço que está iniciando a solicitação unityCatalog
action_name cadeia Categoria do evento capturado no log de auditoria getTable
request_id cadeia ID da solicitação ServiceMain-4529754264
request_params mapa 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 Estrutura de valores de retorno da resposta {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level cadeia Evento no nível da conta ou do workspace ACCOUNT_LEVEL
event_id cadeia ID do evento 34ac703c772f3549dcc8671f654950f0
identity_metadata struct Identidades envolvidas na ação, incluindo run_by e run_as. Consulte Atividade de computação dedicada do grupo de auditoria. {run_by: example@email.com;
run_as: example@email.com;

Exemplos de consultas

As seções a seguir incluem consultas SQL de exemplo que você pode usar para obter insights sobre a tabela do sistema de logs de auditoria.

Observação

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

Este artigo inclui as seguintes consultas de exemplo:

Quem pode acessar esta tabela?

Essa consulta usa o information_schema para determinar quais usuários têm permissões em uma tabela. Insira valores para os parâmetros de catálogo, esquema e nome da tabela.

SELECT DISTINCT(grantee), privilege_type, 'catalog' AS level
FROM system.information_schema.catalog_privileges
WHERE
  catalog_name = :catalog_name
UNION
SELECT DISTINCT(grantee), privilege_type, 'schema' AS level
FROM system.information_schema.schema_privileges
WHERE
  catalog_name = :catalog_name AND schema_name = :schema_name
UNION
SELECT DISTINCT(grantee) AS `accessible by`, privilege_type, 'table' AS level
FROM
  system.information_schema.table_privileges
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name
UNION
SELECT table_owner, 'ALL_PRIVILEGES' AS privilege_type, 'owner' AS level
FROM system.information_schema.tables
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name

Quais usuários acessaram uma tabela nos últimos sete dias?

Para que essa consulta funcione, insira as informações do caminho da tabela nos parâmetros de consulta.

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 = :table_full_name
    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 7 day
ORDER BY
  event_date DESC

Quais tabelas um usuário acessou recentemente?

Para que essa consulta funcione, insira o email do usuário no :User parâmetro e um número no :days_ago parâmetro.

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) < :days_ago
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 os 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,
  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"] = "<oauth2-app-client-id>"
GROUP BY
  event_date,
  workspace_id,
  user_email,
  username

Substitua <oauth2-app-client-id> pelo valor do ID do Cliente do Aplicativo OAuth2 para o principal de serviço atribuído a um aplicativo Databricks específico. Esse valor pode ser encontrado nas configurações de administrador do workspace do Databricks que hospeda o aplicativo ou a guia Autorização ao exibir os detalhes de um 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

Quais são os aplicativos do Databricks criados mais recentemente?

Essa consulta retorna eventos de criação do aplicativo, incluindo o nome do aplicativo, o criador e a data de criação, classificados pelo carimbo de data/hora do evento de criação.

SELECT
  event_time,
  user_identity.email AS email,
  action_name,
  get_json_object(request_params.app, '$.name') AS app_name
FROM
  system.access.audit
WHERE
  action_name == "createApp"
ORDER BY
  event_time DESC

Quais são as ações mais recentes de um usuário do Databricks Apps?

Essa consulta retorna as ações recentes realizadas por um usuário dos aplicativos Databricks, classificadas pelo timestamp do evento.

SELECT
  event_time,
  user_identity.email AS email,
  service_name,
  action_name
FROM
  system.access.audit
WHERE
  service_name = 'apps'
AND
  user_identity.email = '<user-email>'
ORDER BY
  event_time DESC