Informazioni di riferimento sulla tabella di sistema del log di controllo
Importante
Questa funzionalità è disponibile in anteprima pubblica. Lo schema deve essere abilitato per essere visibile nel system
catalogo. Per altre informazioni, vedere Abilitare gli schemi di tabella di sistema
Questo articolo descrive lo schema della tabella dei log di controllo e fornisce 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.
La tabella di sistema del log di controllo 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.
- In tutte le aree sono disponibili solo i log a livello di account del catalogo Unity.
- 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 | Struct 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 |
Query di esempio
Le sezioni seguenti includono query di esempio che è possibile usare per ottenere informazioni dettagliate sulla tabella di sistema dei log di controllo. Per il funzionamento di queste query, sostituire i valori tra parentesi graffe {{}}
con i propri parametri.
Nota
Alcuni di questi 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 nell'ultimo giorno?
- Quali tabelle hanno eseguito l'accesso a un utente?
- Visualizzare le modifiche alle autorizzazioni per tutti gli oggetti a protezione diretta
- Visualizzare i comandi dei notebook eseguiti più di recente
Chi può accedere a questa tabella?
Questa query usa per information_schema
individuare gli utenti che dispongono delle autorizzazioni per una 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}}'
UNION
SELECT DISTINCT(grantee)
FROM system.information_schema.schema_privileges
WHERE schema_name = '{{schema_name}}'
Quali utenti hanno eseguito l'accesso a una tabella nell'ultimo giorno?
Nota
I nomi completi non vengono acquisiti nel log per le operazioni DML. Includere lo schema e il nome semplice per acquisire tutto.
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
Quali tabelle hanno eseguito l'accesso a un utente?
Nota
Per filtrare in base all'intervallo di date, rimuovere il commento dalla clausola date nella parte inferiore della 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
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 eseguiti più di recente insieme all'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