Riferimento alla tabella di sistema del registro di controllo
Importante
Questa tabella di sistema si trova in anteprima pubblica. Per accedere alla tabella, lo schema deve essere abilitato nel catalogo system
. Per ulteriori informazioni, vedere Abilita gli schemi delle tabelle di sistema.
Questo articolo descrive lo schema della tabella dei log di controllo e include query di esempio che è possibile usare con la tabella di sistema del log di controllo per rispondere alle domande comuni sull'utilizzo degli account. Per informazioni sugli eventi del log di controllo, vedere Informazioni di riferimento sul log di diagnostica.
percorso tabella: questa tabella di sistema si trova in system.access.audit
.
Considerazioni sul log di controllo
- La maggior parte dei log di controllo è disponibile solo nell'area dell'area di lavoro.
- I log di controllo a livello di account registrano
workspace_id
come0
.
Schema della tabella di sistema del log di controllo
La tabella di sistema del log di controllo usa lo schema seguente:
Nome colonna | Tipo di dati | Descrizione | Esempio |
---|---|---|---|
version |
string | Versione dello schema del log di controllo | 2.0 |
event_time |
timestamp | Timestamp dell'evento. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta il fuso orario UTC. |
2023-01-01T01:01:01.123+00:00 |
event_date |
data | Data del calendario in cui è stata eseguita l'azione | 2023-01-01 |
workspace_id |
long | ID dell'area di lavoro | 1234567890123456 |
source_ip_address |
string | Indirizzo IP in cui ha avuto origine la richiesta | 10.30.0.242 |
user_agent |
string | Origine della richiesta | Apache-HttpClient/4.5.13 (Java/1.8.0_345) |
session_id |
string | ID della sessione da cui proviene la richiesta | 123456789 |
user_identity |
string | Identità della richiesta di avvio dell'utente | {"email": "user@domain.com", "subjectName": null} |
service_name |
string | Richiesta di avvio del nome del servizio | unityCatalog |
action_name |
string | Categoria dell'evento acquisito nel log di controllo | getTable |
request_id |
string | ID della richiesta | ServiceMain-4529754264 |
request_params |
mappa | Mappa dei valori chiave contenenti tutti i parametri della richiesta. Dipende dal tipo di richiesta | [["full_name_arg", "user.chat.messages"], ["workspace_id", "123456789"], ["metastore_id", "123456789"]] |
response |
struct | Struttura dei valori restituiti dalla risposta | {"statusCode": 200, "errorMessage": null, "result": null} |
audit_level |
string | Evento a livello di area di lavoro o account | ACCOUNT_LEVEL |
account_id |
string | ID dell'account | 23e22ba4-87b9-4cc2-9770-d10b894bxx |
event_id |
string | ID dell'evento | 34ac703c772f3549dcc8671f654950f0 |
identity_metadata |
struct | Identità coinvolte nell'azione, incluse run_by e run_as . Consultare attività di calcolo dedicata del gruppo di audit. |
{run_by: example@email.com; run_as: example@email.com; |
Query di esempio
Le sezioni seguenti includono query SQL di esempio che è possibile usare per ottenere informazioni dettagliate sulla tabella di sistema dei log di controllo.
Nota
Alcuni esempi includono eventi del log di controllo dettagliato, che non sono abilitati per impostazione predefinita. Per abilitare i log di controllo dettagliati in un'area di lavoro, vedere Abilitare i log di controllo dettagliati.
Questo articolo include le query di esempio seguenti:
- Chi può accedere a questa tabella?
- Quali utenti hanno eseguito l'accesso a una tabella negli ultimi sette giorni?
- A quali tabelle ha avuto accesso recentemente un utente?
- Visualizzare le modifiche alle autorizzazioni per tutti gli oggetti a protezione diretta
- Visualizzare i comandi dei notebook eseguiti più di recente
- Quali utenti hanno eseguito l'accesso a un'app Databricks?
- Quali app di Databricks sono state aggiornate per modificare la modalità di condivisione dell'app con altri utenti o gruppi?
Chi può accedere a questa tabella?
Questa query usa il information_schema
per determinare quali utenti dispongono delle autorizzazioni per una tabella. Immettere i valori per il nome dello schema e i parametri del nome della tabella.
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_name
UNION
SELECT
DISTINCT(grantee)
FROM
system.information_schema.schema_privileges
WHERE
schema_name = :schema_name
Quali utenti hanno acceduto a una tabella negli ultimi sette giorni?
Per il corretto funzionamento di questa query, immettere le informazioni sul percorso della tabella nei parametri di query.
Nota
I nomi completi non vengono acquisiti nel log per le operazioni DML. Includere lo schema e il nome semplice per comprendere tutti gli elementi.
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
A quali tabelle ha avuto accesso di recente un utente?
Per il funzionamento di questa query, immettere il messaggio di posta elettronica dell'utente nel parametro :User
e un numero nel parametro :days_ago
.
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
Risultato di esempio
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 |
Visualizzare le modifiche alle autorizzazioni per tutti gli oggetti a protezione diretta
Questa query restituirà un evento per ogni modifica dell'autorizzazione che si è verificata nell'account. La query restituirà l'utente che ha apportato la modifica, il tipo di oggetto a protezione diretta e il nome e le modifiche specifiche apportate.
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
Visualizzare i comandi dei notebook eseguiti più di recente
Questa query restituisce i comandi del notebook di esecuzione più recenti e l'utente che ha eseguito il comando.
Nota
L'azione runCommand
viene generata solo quando sono abilitati i log di controllo dettagliati. Per abilitare i log di controllo dettagliati, vedere Abilitare i log di controllo dettagliati.
SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100
Quali utenti hanno eseguito l'accesso a un'app Databricks?
Questa query restituisce un evento per ogni account di accesso a un'istanza dell'app 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
Sostituire {{application-ID}}
con il valore ID applicazione per l'entità servizio assegnata a un'app Databricks specifica. Questo valore è disponibile nelle impostazioni di amministrazione per l'area di lavoro di Databricks che ospita l'app.
Quali app di Databricks sono state aggiornate per modificare la modalità di condivisione dell'app con altri utenti o gruppi?
Questa query restituisce eventi per gli aggiornamenti delle autorizzazioni per modificare l'accesso alle app Databricks, tra cui il tipo di autorizzazione, l'utente o il gruppo a cui viene assegnata la nuova autorizzazione e l'utente che ha inviato la modifica.
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