Pular para o conteúdo principal

Auditoria log referência de tabela do sistema

info

Visualização

Essa tabela do sistema está em Pré-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 de tabelas do sistema.

Este artigo descreve o esquema da tabela audit log e apresenta exemplos de consultas que o senhor pode usar com a tabela do sistema audit log para responder a perguntas comuns sobre a atividade account. Para obter informações sobre eventos de auditoria log, consulte Referência de auditoria log.

Caminho da tabela : Essa tabela do sistema está localizada em system.access.audit.

Auditoria log considerações

  • A maioria das auditorias logs está disponível apenas na região do workspace.
  • account-level audit logs registro workspace_id como 0.

Auditoria log esquema de tabela do sistema

A tabela do sistema audit log usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

Exemplo

version

string

Auditoria log versão do esquema

2.0

event_time

carimbo de data/hora

Carimbo de data e 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

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 da solicitação

Apache-HttpClient/4.5.13 (Java/1.8.0_345)

session_id

string

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

123456789

user_identity

string

Identidade do usuário que está iniciando a solicitação

{"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 na auditoria log

getTable

request_id

string

ID da solicitação

ServiceMain-4529754264

request_params

map

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

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

response

struct

Estrutura dos valores de retorno da resposta

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

audit_level

string

evento em nível de espaço de trabalho ou account

ACCOUNT_LEVEL

account_id

string

ID do account

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

event_id

string

ID do evento

34ac703c772f3549dcc8671f654950f0

identity_metadata

struct

Identidades envolvidas na ação, incluindo run_by e run_as. Consulte Atividade dedicada do grupo de auditoria compute.

{run_by: example@email.com; run_as: example@email.com;

Exemplos de consultas

As seções a seguir incluem exemplos de consultas em SQL que podem ser usadas para obter percepções sobre a tabela do sistema de auditoria logs.

nota

Alguns exemplos incluem eventos de auditoria detalhada log, que não são habilitados pelo default. Para ativar o registro de auditoria detalhada em um workspace, consulte Ativar auditoria detalhada logs.

Este artigo inclui os seguintes exemplos de consultas:

Quem pode acessar essa 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 do catálogo, do esquema e do nome da tabela.

SQL
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 o caminho da tabela de informações nos parâmetros da consulta.

nota

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

SQL
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, digite o endereço email do usuário no parâmetro :User e um número no parâmetro :days_ago.

SQL
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

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 protegidos

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 protegível e as alterações específicas que foram feitas.

SQL
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

visualizar a execução mais recente do comando Notebook

Essa consulta retorna o comando do Notebook executado mais recentemente e o usuário que executou o comando.

nota

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.

SQL
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 têm logins em um aplicativo Databricks?

Essa consulta retorna um evento para cada login em uma instância do aplicativo Databricks.

SQL
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 específico da Databricks. Esse valor pode ser encontrado nas configurações de administração do site Databricks workspace que hospeda o aplicativo.

Quais aplicativos da Databricks foram atualizados para alterar a forma como o aplicativo é compartilhado com outros usuários ou grupos?

Essa consulta retorna eventos de atualizações de permissão para alterar o acesso aos aplicativos da 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.

SQL
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