Come con Snowflake, “Databricks logs” può significare dati di sicurezza che conservi nelle tabelle Delta, o il proprio registro di audit di Databricks nella tabella system.access.audit. L’esportazione più semplice per entrambi è una cella di notebook. Interroga con Spark SQL, scrivi il risultato come JSON su un volume di Unity Catalog, quindi scaricalo con il Databricks CLI. Spark scrive JSON delimitato da nuove righe, quindi i file sono pronti per il caricamento.
Databricks viene sempre più utilizzato come data lake per la sicurezza, e il suo registro di audit è importante di per sé: chi ha effettuato l’accesso, chi ha creato token, chi ha modificato i permessi. Prime Core ha più di 24.000 regole di rilevamento uniche, mappate su 676 tecniche MITRE ATT&CK. Di seguito è spiegato come estrarre i dati, sanificarli e analizzarli gratuitamente in LogTotal.
Prima di iniziare
Accesso. La lettura di system.access.audit richiede che lo schema di sistema sia abilitato per il tuo metastore e una concessione SELECT da parte di un account o di un amministratore del metastore. Per le tue tabelle, hai bisogno delle solite concessioni di Unity Catalog.
Un volume su cui scrivere. Hai bisogno di un volume Unity Catalog su cui puoi scrivere, ad esempio /Volumes/security/exports/logtotal, e del Databricks CLI configurato sulla tua macchina.
Calcolo. Un notebook necessita di un cluster o calcolo serverless. Filtra per data in modo da non scansionare più del necessario.
Esportazione da un notebook
(spark.sql("""
SELECT *
FROM system.access.audit
WHERE event_date = '2026-10-19'
AND action_name IN ('login', 'tokenLogin', 'generateDbToken')
""")
.write.mode("overwrite")
.json("/Volumes/security/exports/logtotal/audit_20261019"))
Spark scrive diversi file part-*.json più file marker. Scaricali e combinateli:
databricks fs cp -r dbfs:/Volumes/security/exports/logtotal/audit_20261019 ./audit_20261019
cat ./audit_20261019/part-*.json > databricks_audit_20261019.jsonl
Per le tue tabelle di sicurezza, modifica la query: seleziona dalla tua tabella e filtra sulla sua colonna timestamp.
Senza un notebook, l’SQL Statement Execution API può eseguire la stessa query su un magazzino SQL e restituire JSON. Le righe tornano come array, con i nomi delle colonne in un manifest separato, quindi è necessario un passaggio aggiuntivo per trasformarli in oggetti. Per qualsiasi cosa di dimensioni considerevoli, il percorso del notebook è più semplice.
Cosa cercare nel registro di audit
Esamina accessi e log-in con token da indirizzi IP insoliti, nuovi token di accesso personali, cambiamenti ai permessi e alla membership dei gruppi, e modifiche alla configurazione del workspace o del cluster al di fuori degli orari normali. Sono degni di nota anche i download all’ingrosso di notebook o risultati.
Carica, sanifica e revisiona in LogTotal
- Carica. Apri logtotal.com e inserisci il file .jsonl.
- Sanifica.
- Revisione.
Quando qualcosa va storto
| Sintomo | Probabile causa | Fix |
|---|---|---|
| system.access.audit non trovato | Schema di sistema non abilitato | Chiedi a un amministratore dell’account di abilitarlo |
| Permesso negato sulla tabella di sistema | Nessuna concessione SELECT | Chiedi la concessione a un amministratore del metastore |
| Impossibile scrivere sul volume | Mancanza di SCRITTURA VOL.UME | Usa un volume su cui puoi scrivere |
| Lo scaricamento include _SUCCESS e altri file | File marker di Spark | Combina solo part-*.json |
| Query enorme e lenta | Nessun filtro per data | Filtra su event_date |
FAQ
Il registro di audit è anche consegnato allo storage cloud?
I workspace possono consegnare i registri di audit al tuo storage. Se configurato, puoi copiare quei file direttamente.
Funziona su workspace senza Unity Catalog?
Le tabelle di sistema necessitano di Unity Catalog. I vecchi workspace si basano sulla consegna dei registri di audit allo storage, e scrivi su percorsi DBFS al posto dei volumi.