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

account_id

string

ID do account

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

workspace_id

string

ID do workspace

1234567890123456

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

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

struct

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

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, insira 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,
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 de ID do cliente do aplicativo OAuth2 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 Databricks workspace que hospeda o aplicativo ou na Autorização tab quando o senhor view os detalhes de um 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

Quais são os aplicativos Databricks criados mais recentemente?

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

SQL
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 de um usuário do Databricks Apps, classificadas pelo carimbo de data/hora do evento.

SQL
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