Passa al contenuto principale
Lakehouse

Le funzioni IP sono disponibili a livello generale, portando l'analisi di rete ad alte prestazioni nel Lakehouse

di Michael Andersen e Benjamin Mathew

  • Databricks ora include una famiglia di funzioni IP native e integrate per analizzare, convalidare, canonizzare e unire indirizzi IPv4 e IPv6 e blocchi CIDR: senza UDF, senza regex, senza fragili calcoli bitwise.
  • Le funzioni SQL, PySpark e Scala di primo livello sono ottimizzate in Photon in modo che i carichi di lavoro di rete più impegnativi vengano eseguiti in pochi secondi anziché in minuti.
    Nei benchmark comparativi, Databricks ha completato i join IP CIDR fino a 3,1 volte più velocemente e con costi fino a 6,4 volte inferiori rispetto a un altro data warehouse cloud leader.
  • Disponibile a livello generale oggi su Databricks Runtime 18 LTS o versioni successive.

I dati IP sono dati di data warehousing

Ogni firewall, load balancer, VPN, edge CDN, resolver DNS, cluster Kubernetes e server applicativo emette un flusso di record basati su un unico elemento: un indirizzo IP. Per una grande azienda, questi flussi generano collettivamente decine di miliardi di eventi al giorno e costituiscono la base di alcune delle analisi più preziose che un'organizzazione possa eseguire, tra cui il rilevamento delle minacce, l'investigazione sulle frodi e l'osservabilità della rete. Storicamente, il settore ha trattato questi casi d'uso di osservabilità della rete come casi d'uso specializzati che richiedevano uno stack dedicato, portando a silos, governance frammentata e lock-in.

Ora le cose cambiano. Oggi, le funzioni IP sono generalmente disponibili (GA). Con questo lancio, l'analisi degli indirizzi IP diventa un workload SQL ad alte prestazioni di prima classe sul lakehouse, consentendo ai team di sicurezza di analizzare, arricchire ed elaborare i dati IP a più alto volume insieme al resto delle loro analisi, sotto un unico modello di governance.

Perché l'analisi di rete un tempo era complessa

In passato, gli indirizzi IP erano ingannevolmente difficili da gestire in SQL. Un indirizzo IPv4 sembra una stringa ma si comporta come un intero a 32 bit; IPv6 è a 128 bit. Un blocco CIDR come 10.0.0.0/8 non è affatto un valore, bensì un intervallo di 16 milioni di indirizzi. Chiedersi "questo IP si trova all'interno di quella sottorete?" è un problema di contenimento dell'intervallo che si nasconde dietro una stringa di testo.

Senza un supporto nativo, i team erano costretti a ricorrere a pattern fragili, ognuno dei quali comprometteva correttezza, prestazioni o manutenibilità:

Soluzione temporanea comune

Cosa comporta

Parsing tramite Regex per estrarre gli ottetti dalle stringhe

Lento, fragile, silenziosamente errato in caso di input non validi o IPv6

Calcoli bit a bit manuali per convertire gli indirizzi in interi

SQL illeggibile che solo l'autore comprende; si interrompe al confine tra v4 e v6

UDF personalizzate per il contenimento CIDR

Annulla la vettorializzazione e la visibilità dell'ottimizzatore di query; una scatola nera che il planner non può sottoporre a push down o broadcast

Pre-espansione dei CIDR in intervalli nelle pipeline esterne

Una pipeline separata da gestire

Esclusione totale di IPv6

Intere classi di traffico moderno escluse silenziosamente dall'analisi

Il risultato era una situazione svantaggiosa per tutti. Gli analisti che utilizzavano solo SQL erano esclusi dal filtraggio IP di base perché richiedeva codice procedurale. I data engineer sprecavano cicli di elaborazione per gestire librerie UDF e job di espansione CIDR. Soprattutto, i workload critici, come l'arricchimento di miliardi di eventi con tabelle di threat intelligence e geo-IP, richiedevano oltre un'ora, quando l'azienda aveva bisogno di risposte in pochi minuti. Su scala petabyte, questo divario fa la differenza tra rilevare un'intrusione in corso e leggerne i dettagli in un report post-mortem.

Funzioni IP native, integrate in SQL

Databricks introduce un set completo di funzioni IP integrate che rendono i dati di rete cittadini di prima classe del lakehouse. Gestiscono IPv4 e IPv6 in modo uniforme, accettano sia rappresentazioni leggibili dall'uomo STRING sia rappresentazioni compatte BINARY, comprendono la notazione CIDR in modo nativo e sono implementate direttamente nel motore, consentendo all'ottimizzatore e a Photon di accelerarle.

L'esempio seguente arricchisce i log dei flussi di rete grezzi con informazioni sulle minacce (threat intelligence) e quindi identifica le reti di origine sospette che stanno scansionando un numero elevato di destinazioni e porte. Ciò che in precedenza richiedeva una logica di parsing personalizzata e librerie IP dedicate ora può essere espresso direttamente in SQL utilizzando operazioni IP e CIDR native.

Nessuna UDF. Nessuna regex. Nessuna ginnastica con i numeri interi. Si legge esattamente come la domanda che l'analista si sta effettivamente ponendo.

Le funzioni

La release GA include il toolkit completo necessario per analizzare, normalizzare, ispezionare e unire i dati IP:

Contenimento e join

  • ip_cidr_contains(cidr, needle) - verifica se un indirizzo IP o un altro blocco CIDR rientra in un blocco CIDR. Questo è il singolo predicato alla base dei join dei blocchi CIDR e del filtraggio ad alto volume, nonché la funzione su cui si concentra l'intero sforzo di ottimizzazione.

Parsing e canonizzazione

  • ip_host(ip) - normalizza un indirizzo IPv4 o IPv6 nella sua forma standard (ad esempio, riduce 2001:0db8:0000::1 a 2001:db8::1).
  • ip_cidr(cidr) - produce la rappresentazione canonica di un blocco CIDR.

Ispezione di un CIDR

  • ip_network(cidr) / ip_network_first(cidr) - restituisce il primo indirizzo (di rete) di un blocco CIDR.
  • ip_network_last(cidr) - restituisce l'ultimo indirizzo di un blocco CIDR.
  • ip_prefix_length(cidr) - restituisce la lunghezza del prefisso (il numero dopo la /).
  • ip_version(ip_or_cidr) - restituisce 4 o 6 in modo che gli indirizzi a protocollo misto possano essere ramificati senza casi speciali

Conversione della rappresentazione - per le prestazioni

  • ip_as_binary(ip_or_cidr) - converte un indirizzo o un CIDR nella sua forma binaria compatta e canonica (4 byte per IPv4, 16 per IPv6). La memorizzazione e il join su BINARY evitano il parsing ripetuto e riducono lo spazio di archiviazione.
  • ip_as_string(ip_or_cidr) - riconverte una rappresentazione binaria in testo leggibile dall'uomo per la reportistica.

Varianti sicure per dati disordinati

  • try_ip_host(ip), try_ip_cidr(cidr), try_ip_as_binary(ip_or_cidr), try_ip_as_string(ip_or_cidr) - identiche alle loro controparti, ma restituiscono NULL invece di generare un errore in caso di input non valido. Essenziale durante l'inserimento di log grezzi in cui una frazione di record è sempre malformata, in modo che una singola riga errata non faccia mai fallire un job da un miliardo di righe.

Queste funzioni native si integrano in modo naturale con il resto di SQL, sono disponibili per ogni utente SQL senza alcuna configurazione e l'ottimizzatore le comprende, il che rende possibili prestazioni elevate.

Rearc, che aiuta le aziende a sviluppare piattaforme GenAI, Data e Cloud, sta sfruttando le funzioni IP per creare casi d'uso di osservabilità della rete per clienti su larga scala.

Abbiamo creato un prodotto per un'importante società finanziaria che elabora regolarmente più di 30 TB di dati al giorno, dove le prestazioni e l'efficienza dei costi sono fondamentali. Grazie alle funzioni IP native del motore Databricks, siamo stati in grado di analizzare, convalidare e unire i dati IP direttamente in SQL, sostituendo una precedente implementazione ad hoc con una soluzione molto più elegante e gestibile. Poiché le funzioni sono integrate nel motore, abbiamo ottenuto questo risultato senza sacrificare le prestazioni richieste dai nostri carichi di lavoro a questa scala. Hanno reso l'analisi di rete sulla lakehouse più semplice e veloce da implementare per noi." —Dara Kharabi, Practice Lead, AI & Data presso Rearc

Progettato per la scala dei petabyte: secondi, non minuti

Una sfida comune nell'analisi degli IP consiste nel trovare un singolo indirizzo o una sotto-CIDR all'interno di un intervallo molto più ampio, il che è fondamentale per rilevare rapidamente le minacce, indagare sulle frodi e monitorare l'attività di rete su larga scala. Questo caso d'uso rappresenta un range join, con cui i motori hanno storicamente avuto difficoltà perché gli algoritmi di join standard si basano sull'uguaglianza. Il motore di Databricks supporta un range join ottimizzato per gli indirizzi IP tramite ip_cidr_contains. 

La soluzione di Databricks ip_cidr_contains supera i data warehouse tradizionali in termini di prezzo e velocità per tutte le dimensioni di tabelle probe (ovvero "ago") e block (ovvero "pagliaio"). Abbiamo effettuato il benchmark di ip_cidr_contains su cinque scenari rappresentativi:

Scenario

Dimensioni della tabella probe 
(ovvero numero di aghi)

Dimensioni della tabella dei blocchi CIDR 
(ovvero numero di pagliai)

Il log degli accessi giornalieri di un team unito a una denylist curata

10 milioni di IP

1.000 blocchi

L'attività quotidiana di un grande cliente unita a informazioni sulle minacce di medio livello

1 miliardo di IP

100.000 blocchi

Correlazione dei log di firewall e VPN di un trimestre rispetto al set di intervalli noti dei cloud provider

10 miliardi di IP

1 milione di blocchi

Una grande azienda che confronta tutti gli eventi di autenticazione con una tabella consolidata dei rischi di identità

10 miliardi di IP

5 milioni di blocchi

Una settimana di traffico unito a informazioni sulle minacce su scala più ampia

10 miliardi di IP

10 milioni di blocchi

I risultati mostrano che le prestazioni delle funzioni IP di Databricks sono nettamente superiori a quelle dei concorrenti, anche a scale crescenti. Una volta che il numero di probe supera i 10 miliardi di indirizzi IP e il numero di blocchi supera 1 milione di CIDR, la velocità delle query inizia a stabilizzarsi. 

Grafici del costo relativo per esecuzione

Il divario di costo è altrettanto netto. Anche con la scalabilità dei carichi di lavoro, Databricks rimane da 2 volte a ben 6,4 volte più conveniente.

Grafici del costo relativo per esecuzione

Stanby ha compreso rapidamente il valore di eseguire i propri casi d'uso di monitoraggio della rete direttamente sulla lakehouse, anziché su sistemi esterni:

"Le funzioni IP native di Databricks ci consentono di lavorare con i dati IP e CIDR direttamente in SQL. Non dobbiamo più affidarci a un parsing di stringhe fragile o a una logica bitwise manuale. La possibilità di analizzare, convalidare e unire i dati IP come operazioni SQL di prima classe ha reso questo lavoro più semplice e gestibile per il nostro team. È una soluzione ideale per eseguire analisi di rete e di traffico insieme al resto dei nostri dati sulla lakehouse."—Stanby, Data Engineering Leader

In definitiva, queste funzioni IP ad alte prestazioni consentono di creare un'intera classe di carichi di lavoro di rete direttamente sulla lakehouse.

Cosa rende possibile tutto questo

Grazie a funzioni IP native e veloci, interi carichi di lavoro che prima non potevano risiedere sulla lakehouse ora possono essere trasferiti lì:

  • Join di arricchimento CIDR su larga scala - tagga ogni evento con metadati GeoIP, ASN, informazioni sulle minacce o di proprietà in pochi secondi, in modo che le query di rilevamento e indagine a valle vengano eseguite su dati arricchiti.
  • Filtraggio in tempo reale ad alto volume - "mostrami ogni connessione da questo /16 sospetto nelle ultime 24 ore" diventa una query interattiva anziché un processo batch.
  • Analisi unificata di IPv4 e IPv6 - le tabelle a protocollo misto funzionano fin da subito, consentendo di analizzare il traffico moderno anziché scartarlo.
  • Corrispondenza CIDR-in-CIDR - verifica se un'intera sottorete rientra in un'altra, con le stesse prestazioni di IP-in-CIDR, per l'analisi della topologia di rete e delle policy.
  • Accessibilità SQL di prima classe - gli analisti ottengono filtri e join IP con semplice SQL, senza bisogno di codice procedurale o librerie UDF.

Con queste funzioni supportate in modo nativo sulla lakehouse, questi carichi di lavoro di rete condividono un'unica copia governata dei dati con il resto dell'azienda, senza la necessità di un sistema specializzato separato da concedere in licenza, proteggere e mantenere sincronizzato.

Inizia oggi stesso

Le funzioni IP native sono ora disponibili a livello generale su Databricks Runtime LTS o versioni successive. 

Consulta la documentazione di riferimento delle funzioni IP per l'elenco completo delle funzioni e delle firme. Il flusso continuo di dati di rete è sempre stato uno dei tuoi dataset più grandi: ora può finalmente risiedere dove si trovano tutte le tue altre analisi.

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Ricevi gli ultimi articoli nella tua casella di posta

Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.