Referência da tabela do sistema logs de auditoria

Visualização

Este recurso está em visualização pública.

Este artigo descreve o esquema da tabela logs de auditoria e fornece query de amostra que você pode usar com a tabela do sistema logs de auditoria para responder a perguntas comuns sobre o uso account . Para obter informações sobre eventos de log de auditoria, consulte Referência de log de auditoria.

A tabela do sistema logs de auditoria está localizada em system.access.audit.

Considerações sobre logs de auditoria

  • A maioria dos logs de auditoria está disponível apenas na região do workspace.

  • Somente logs no nível account do Unity Catalog estão disponíveis em todas as regiões.

  • logsde auditoria no nível account registram workspace_id como 0.

Esquema da tabela do sistema logs de auditoria

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

Nome da coluna

Tipo de dados

Descrição

Exemplo

version

String

Versão do esquema logs de auditoria

2.0

event_time

Timestamp

Timestamp

2023-01-01T01:01:01.123

event_date

data

Data do calendário em que a ação ocorreu

2023-01-01

workspace_id

Long

ID do workspace

1234567890123456

source_ip_address

String

Endereço IP de origem da solicitação

10.30.0.242

user_agent

String

Origem do pedido

Apache-HttpClient/4.5.13 (Java/1.8.0_345)

session_id

String

ID da sessão de onde veio a requisição

123456789

user_identity

String

Identidade do usuário que iniciou a solicitação

{"email": "user@domain.com", "subjectName": null}

service_name

String

Solicitação de início de nome de serviço

unityCatalog

action_name

String

Categoria do evento capturado nos logsde auditoria

getTable

request_id

String

ID do pedido

ServiceMain-4529754264

request_params

mapa

Mapa de valores- key contendo todos os parâmetros da solicitação. Depende do tipo de pedido

[["full_name_arg", "user.chat.messages"], ["workspace_id", "123456789"], ["metastore_id", "123456789"]]

response

estrutura

Estrutura dos valores de retorno da resposta

{"statusCode": 200, "errorMessage": null, "result": null}

audit_level

String

workspace ou evento no nível account

ACCOUNT_LEVEL

account_id

String

ID da account

23e22ba4-87b9-4cc2-9770-d10b894bxx

event_id

String

ID do evento

34ac703c772f3549dcc8671f654950f0

Consultas de amostra

As seções a seguir incluem exemplos de consultas que podem ser usadas para obter percepções da tabela do sistema de logs de auditoria. Para que essas consultas funcionem, substitua os valores entre colchetes {{}} por seus próprios parâmetros.

Observação

Alguns desses exemplos incluem eventos de logs de auditoria detalhados, que não são ativados pelo site default. Para ativar o registro de auditoria detalhado em um workspace, consulte Ativar registros de auditoria detalhados.

Este artigo inclui o seguinte exemplo query:

Quem acessou esta tabela?

Esta query usa o information_schema.

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 mesa no último dia?

Observação

Os nomes completos não são capturados nos logs 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?

Observação

Para filtrar por intervalo de datas, remova o comentário da cláusula de data na parte inferior da query.

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 tenha ocorrido em seu site account. A consulta retornará o usuário que fez a alteração, o tipo e o nome do objeto seguro 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

Veja os comandos mais recentes Notebook executados

Esta query retorna os comandos Notebook de execução mais recentes junto com o usuário que executou o comando.

Observação

A ação runCommand só é emitida quando a auditoria detalhada logs está ativada. Para ativar os logs de auditoria detalhados, consulte Ativar 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