Implementare i join senza una sezione di corrispondenza
Questo documento spiega il concetto di operazioni di join senza una sezione match o di join dei dati all'interno della ricerca di Google Security Operations.
Puoi utilizzare le operazioni di join per correlare e combinare i dati non elaborati di più origini in base ai valori dei campi comuni. Combinando eventi e entità di sicurezza correlati in un'unica visualizzazione completa, puoi fornire un rilevamento e un'analisi delle minacce più efficaci.
A differenza dei join statistici che richiedono una sezione match per aggregare i risultati,
un join dei dati recupera i dati completi di eventi o entità e li visualizza
senza alcuna aggregazione.
Come funzionano i join dei dati
Puoi creare un join dei dati correlando i campi comuni tra diversi blocchi di eventi o entità. Puoi farlo in uno dei seguenti modi:
Equivalendo direttamente i campi (ad esempio,
$e1.principal.hostname = $e2.principal.hostname)Assegnando entrambi i campi alla stessa variabile segnaposto (ad esempio,
$host = $e1.principal.hostnamee$host = $e2.principal.hostname).
In entrambi i casi, la ricerca unisce implicitamente i blocchi in cui i valori di questi campi sono identici.
Tipi di join dei dati supportati
Puoi utilizzare i seguenti tipi di join dei dati nelle query di ricerca:
Join da evento a evento: correla i dati tra due diversi tipi di eventi UDM (Unified Data Model).
Join da evento a ECG: arricchisci i dati degli eventi UDM con le informazioni del grafico del contesto delle entità (ECG).
Join da evento a evento
I join da evento a evento sono ideali per correlare i campi tra due tipi di eventi UDM distinti. Questa funzionalità è utile per trovare sequenze di eventi o azioni che coinvolgono le stesse entità in diverse origini log o tipi di eventi.
La query nell'esempio seguente trova tutte le connessioni di rete (NETWORK_CONNECTION) provenienti da un host in cui si è verificato anche un accesso utente (USER_LOGIN):
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the
$host placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
Limitazioni
È possibile unire un massimo di due eventi.
L'intervallo di tempo della query è limitato a un massimo di 14 giorni.
Il limite di query è di 120 query all'ora (QPH).
Esempi
La query nell'esempio seguente trova tutte le connessioni di rete
(NETWORK_CONNECTION) provenienti da un host in cui si è verificato anche un accesso utente
(USER_LOGIN):
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the $host
placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
Join sull'ID utente
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.user.userid = $user
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.user.userid = $user
Join sull'indirizzo IP
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.ip = $ip
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.ip = $ip
Join da evento a grafico del contesto delle entità
I join da evento a ECG sono ideali per arricchire gli eventi UDM con dati contestuali sulle entità coinvolte (ad esempio asset, utenti) provenienti dall'ECG. Questo join fornisce un quadro più completo combinando i dati degli eventi in tempo reale con le informazioni storiche e relazionali delle entità.
Limitazioni
L'intervallo di tempo della query è limitato a un massimo di 14 giorni.
Il limite di query è di 120 QPH.
Nella query è possibile unire un massimo di due eventi UDM.
Nella query è possibile unire un massimo di un evento ECG.
L'esportazione in una tabella dati non è supportata per le query di join da evento a ECG.
I join da ECG a ECG non sono supportati.
I join da ECG a tabella dati non sono supportati.
Esempi
Questa query arricchisce gli eventi di connessione di rete con le informazioni sugli asset provenienti dall'ECG eseguendo il join sul nome host.
// Find network connections and assign the hostname to the $host placeholder
$e1.metadata.event_type = "NETWORK_CONNECTION"
$host = $e1.principal.asset.hostname
// Find asset entities in the graph and join where the hostname matches the
$host placeholder
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.asset.hostname
Join sull'indirizzo IP con un tipo di log specifico
$ip = $e1.principal.ip
$ip = $g1.graph.entity.ip
$e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"
$g1.graph.entity.ip = "10.19.6.24"
Join sul nome host con un filtro IP specifico
$e1.metadata.event_type = "FILE_CREATION"
$host = $e1.principal.hostname
$e1.principal.ip = "10.0.0.76"
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.hostname
Best practice
Per evitare prestazioni lente e timeout delle query, utilizza filtri specifici e ristretti all'interno di ogni blocco ($e1, $e2, $g1) nelle query di join.
Ad esempio, una query ampia come la seguente:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
Può essere ottimizzata aggiungendo criteri specifici come segue:
$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "192.168.1.101"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
right join $e1.principal.hostname = $e2.principal.hostname
Utilizzare i risultati
I risultati di un join dei dati vengono visualizzati in una tabella Join, inclusi i campi combinati di entrambi gli eventi correlati. Questa tabella è diversa da una visualizzazione delle statistiche, in quanto fornisce i dati completi di eventi o entità e non un conteggio aggregato.
Dopo aver eseguito una query, puoi utilizzare i risultati nei seguenti modi:
Scarica come CSV: esporta l'intero set di risultati in un file CSV per l'analisi offline.
Esporta in tabelle dati: salva i risultati in una tabella dati all'interno dell'istanza per riferimento o per ulteriori correlazioni (solo per i join da evento a evento).
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.