Come Esportare i Log di Snowflake

Come Esportare i Log di Snowflake

SOC Prime Team
SOC Prime Team linkedin icon Segui

I “log Snowflake” possono significare due cose, e l’esportazione funziona allo stesso modo per entrambe. Possono essere dati di sicurezza che il tuo team memorizza nelle tabelle Snowflake. Oppure possono essere i propri audit trail di Snowflake, le viste SNOWFLAKE.ACCOUNT_USAGE come LOGIN_HISTORY e QUERY_HISTORY. Per piccoli prelievi, esegui la query in SnowSQL con output JSON. Per anything bigger, scarica con COPY INTO uno stage utilizzando FILE_FORMAT = (TYPE = JSON), e scarica i file con GET.

I log di Snowflake hanno attirato molta attenzione nel 2024, quando gli aggressori hanno utilizzato credenziali rubate per accedere agli account dei clienti che non applicavano l’MFA. Ora la cronologia degli accessi e delle query è una richiesta standard in un’indagine. Prime Core ha oltre 24.000 regole di rilevamento uniche, mappate su 676 tecniche MITRE ATT&CK. Di seguito ecco come estrarre i dati, sanificarli e indagarli gratuitamente in LogTotal.

Prima di iniziare

Accesso a ACCOUNT_USAGE. Per impostazione predefinita, solo ACCOUNTADMIN può leggere queste viste. Altri ruoli necessitano del grant IMPORTED PRIVILEGES sul database SNOWFLAKE, o uno dei suoi ruoli di database.

Latenza e conservazione. Le viste ACCOUNT_USAGE mantengono un anno di cronologia ma ritardano fino a un paio d’ore. Per gli ultimi sette giorni senza ritardo, la funzione della tabella INFORMATION_SCHEMA.LOGIN_HISTORY è un’alternativa.

Un magazzino. Le query e gli scaricamenti richiedono un magazzino attivo e consumano crediti. Filtra per tempo.

Opzione 1: SnowSQL con output JSON (piccoli prelievi)

snowsql -q "SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
            WHERE EVENT_TIMESTAMP >= '2026-10-19' AND EVENT_TIMESTAMP < '2026-10-20'"
  -o output_format=json -o friendly=false -o timing=false > sf_logins_1019.json

jq -c '.[]' sf_logins_1019.json > sf_logins_1019.jsonl

Opzione 2: Scaricare in uno stage (esportazioni più grandi)

COPY INTO @~/exports/login_history_1019/
FROM (
  SELECT OBJECT_CONSTRUCT(*)
  FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
  WHERE EVENT_TIMESTAMP >= '2026-10-19' AND EVENT_TIMESTAMP < '2026-10-20'
)
FILE_FORMAT = (TYPE = JSON COMPRESSION = NONE)
OVERWRITE = TRUE;

Gli scaricamenti JSON necessitano di una singola colonna, per questo la query avvolge ogni riga in OBJECT_CONSTRUCT(*). Quella funzione esclude i campi NULL. Quindi scaricare dal vostro user stage (@~):

GET @~/exports/login_history_1019/ file:///tmp/sf_export/;

e combina i file con cat /tmp/sf_export/* > sf_logins_1019.jsonl. Lo stesso schema funziona per le vostre tabelle di sicurezza. Sostituisci col nome della tabella e la sua colonna timestamp.

Cosa cercare nella cronologia degli accessi

Cerca accessi falliti (IS_SUCCESS = ‘NO’) in sequenze, e accessi con password senza un secondo fattore (SECOND_AUTHENTICATION_FACTOR vuoto). Nota gli accessi dagli IP client e dai tipi di client che non riconosci. Segui poi quelle sessioni su QUERY_HISTORY per vedere cosa è stato letto.

Carica, sanifica e rivedi in LogTotal

  1. Carica. Apri logtotal.com e trascina il file .jsonl.
  2. Sanifica. 
  3. Rivedi. 

Quando qualcosa va storto

SintomoCausa probabileFix
L’oggetto non esiste o non autorizzato su ACCOUNT_USAGEIl ruolo manca di accesso al database SNOWFLAKERichiedi IMPORTED PRIVILEGES o un ruolo di database
Gli accessi di oggi sono mancantiLatenza di ACCOUNT_USAGEUsa INFORMATION_SCHEMA.LOGIN_HISTORY per eventi recenti
Errore COPY INTO riguardo le colonneLo scaricamento JSON richiede una colonnaRiveste le righe in OBJECT_CONSTRUCT(*)
Campi mancanti nel JSONOBJECT_CONSTRUCT elimina i valori NULLPrevisto; assente significa NULL
GET fallisceNon eseguito da SnowSQL o il CLI di SnowflakeGET eseguito da un client, non dall’interfaccia web

FAQ

Posso farlo nell’interfaccia web?

Query, sì. Gli scaricamenti dall’interfaccia web non sono JSON. Il percorso client sopra ti dà linee JSON.

Che dire delle tabelle degli eventi di Snowflake?

Le tabelle degli eventi contengono log e tracciamenti dalle tue funzioni e app. Esportali allo stesso modo di qualsiasi tabella.

Unisciti alla piattaforma Detection as Code di SOC Prime per migliorare la visibilità sulle minacce più rilevanti per il tuo business. Per aiutarti a iniziare e aumentare immediatamente il valore, prenota ora un incontro con gli esperti di SOC Prime.