Crea parser specializzati ed estensioni dei parser con Gemini
Questa guida aiuta gli analisti della sicurezza e i tecnici di rilevamento a utilizzare l'analisi AI in Google Security Operations per creare parser specializzati da zero o creare estensioni dei parser che migliorano i parser esistenti. Utilizzando prompt in linguaggio naturale e la documentazione del fornitore, puoi mappare i log non elaborati al modello UDM (Unified Data Model) senza scrivere sintassi di parser o espressioni regolari complesse.
Scegli tra parser specializzati AI ed estensioni dei parser AI
La seguente tabella mette a confronto le funzionalità Crea parser con l'AI e Scrivi estensione con l'AI in AI Parsing:
| Aspetto della funzionalità | Crea parser con l'AI | Scrivi estensione con l'AI |
|---|---|---|
| Output | Un parser personalizzato autonomo completo | Un'estensione sovrapposta a un parser esistente |
| Caso d'uso primario | Origini dei log nuove o non supportate o una riscrittura completa del parser | Aggiunta o correzione di campi specifici in un parser funzionante |
| Input | Tipo di log, log non elaborati importati e link alla documentazione facoltativi | Tipo di log, log non elaborato di esempio e un prompt che descrive i campi da mappare |
Terminologia chiave
- Analisi AI:la suite di funzionalità di analisi assistita dall'AI in Google SecOps, tra cui la generazione di parser specializzati AI (Crea parser con l'AI) e le estensioni del parser AI (Scrivi estensione con l'AI).
- Unified Data Model (UDM): la struttura dei dati standard utilizzata in Google SecOps per archiviare e analizzare i dati dei log.
Prima di iniziare
Prima di utilizzare l'analisi AI, verifica che siano soddisfatti i seguenti prerequisiti:
- Verifica che le funzionalità di analisi AI siano abilitate per la tua istanza Google SecOps. Se non vedi le opzioni Crea parser con l'AI o Scrivi estensione con l'AI, contatta il tuo rappresentante Google SecOps.
- Per le estensioni del parser AI, verifica che il tipo di log di destinazione abbia già un parser predefinito o personalizzato attivo e prepara un log non elaborato di esempio per testare l'estrazione.
- Per la generazione di parser specializzati con l'AI, acquisisci un campione rappresentativo dell'origine log prima di iniziare. L'agente parser impara dai log che hai già importato per il tipo di log selezionato. Se non vengono trovati log per il tipo di log, la generazione non può essere avviata. I tentativi di avvio non riusciti non vengono conteggiati ai fini della quota.
- Per la generazione di parser specializzati con l'AI, prepara da uno a cinque link accessibili pubblicamente al riferimento del formato dei log del fornitore, ad esempio un dizionario dei campi, uno schema degli eventi o una pagina di esempi di log (consigliato). Una documentazione completa è il fattore più importante per la qualità del parser.
Crea un parser personalizzato con l'AI
Crea parser con l'AI crea da zero un parser personalizzato completo per un'origine log. Seleziona un tipo di log e, facoltativamente, fornisci i link alla documentazione dei log del fornitore. L'agente parser campiona i log importati, ricerca lo schema dei log, pianifica la mappatura dei campi non elaborati in UDM e scrive il codice del parser in JavaScript. Poi esamini il risultato e lo perfezioni utilizzando istruzioni in inglese semplice che fanno riferimento ai nomi dei campi non elaborati e ai campi UDM. Quando l'output è pronto, invia il parser come qualsiasi altro parser personalizzato.
Con la generazione di parser specializzati con l'AI, puoi:
- Esegui l'onboarding di un'origine log che non dispone di un parser predefinito o il cui parser predefinito non è adatto al formato del log.
- Genera un parser completo che copra ogni formato di log distinto trovato nei dati importati, anziché un singolo esempio.
- Perfeziona il parser generato tramite prompt di follow-up senza scrivere il codice del parser.
Avvia un parser personalizzato generato dall'AI
- In Google SecOps, vai a Impostazioni SIEM > Parser.
- Fai clic su Aggiungi nuovo parser.
- Nella finestra di dialogo Crea nuovo parser personalizzato, seleziona l'origine log che vuoi analizzare (ad esempio
GCP DNS). - In Come creerai il parser?, seleziona Crea parser con l'AI.
- Fai clic su Crea.
Aggiungi la documentazione del prodotto e avvia la generazione
- (Facoltativo) Nel riquadro Parser Agent, nel campo Aggiungi link al prodotto, incolla un link alla documentazione dei log del fornitore e fai clic su Aggiungi. Puoi aggiungere fino a cinque link. Il contatore Documentazione mostra il numero di link che hai aggiunto.
- Fai clic su Genera parser.
Linee guida per i link alla documentazione
Per migliorare la copertura dei campi nel parser generato, segui queste linee guida quando selezioni i link alla documentazione:
- Fornisci solo link pubblici alla documentazione del fornitore. Se un link è privato o inaccessibile, l'agente parser lo ignora ed esegue una ricerca sul web senza interrompere la generazione.
- Link a pagine che descrivono i campi dei log e i tipi di eventi, ad esempio uno schema dei log, un dizionario dei campi o un riferimento agli eventi. Evita le pagine di marketing o le panoramiche dei prodotti.
- Seleziona le pagine che corrispondono al formato dei log che importi. Ad esempio, se importi audit log JSON, inserisci un link al riferimento degli audit log JSON anziché al riferimento di syslog.
- Aggiungi un link per ogni categoria di eventi se il fornitore documenta categorie di eventi diverse in pagine separate (ad esempio, query DNS, eventi del firewall e attività dell'amministratore).
Monitora l'avanzamento della generazione
All'inizio della generazione del parser personalizzato, lo stato cambia in GENERAZIONE IN CORSO. Il processo di generazione è costituito dalle seguenti fasi:
| Fase | Azione dell'agente | Output passato alla fase successiva |
|---|---|---|
| Recupero dei log non elaborati | L'agente campiona i log importati per il tipo di log. Raggruppa i log per selezionare un insieme di log di esempio che copre ogni formato di log e forma di evento distinti. | Log di esempio rappresentativi |
| Documentazione di ricerca | L'agente legge i link alla documentazione che hai fornito o esegue una ricerca sul web se non hai fornito link. Combina queste informazioni con i log di esempio per creare uno schema dei log e un dizionario dei campi. | Dizionario dei campi e dello schema dei log |
| Crea un piano di mappatura | L'agente identifica ogni tipo di evento nei log e pianifica la mappatura di ogni campo del log non elaborato al campo UDM corrispondente. | Piano di mappatura dal campo non elaborato al campo UDM per ogni tipo di evento |
| Genera il codice del parser | L'agente converte il piano di mappatura in codice parser JavaScript. Testa il codice in base ai log di esempio e risolve gli errori finché il parser non viene eseguito correttamente. | Parser pronto per la revisione |
Se la generazione del parser non riesce perché non vengono trovati log per il tipo di log selezionato, importa i log non elaborati per quel tipo di log prima di avviare nuovamente la generazione. Per qualsiasi altro errore di generazione, non sono disponibili opzioni di triage manuale. Attiva una nuova sessione di generazione. Se l'errore persiste, contatta l'assistenza per aprire una richiesta di assistenza.
Esamina e perfeziona il parser personalizzato
Al termine della generazione del parser personalizzato, lo stato cambia in GENERATO CON AI e la pagina mostra i seguenti riquadri:
- Parser Agent: visualizza il campo del prompt Perfeziona il parser con l'AI in cui puoi inserire istruzioni aggiuntive.
- Codice parser: mostra il codice del parser JavaScript generato per la revisione. Il codice generato è di sola lettura prima dell'invio. Per modificare la logica, inserisci un prompt nel campo Perfeziona il parser con l'AI.
- Log non elaborato:mostra i log non elaborati di esempio per il tipo di log. Puoi fare clic su Modifica per incollare la tua riga di log o su Aggiorna per caricare altri esempi.
- Mostra output UDM:esegue il codice del parser corrente sul log non elaborato e visualizza l'evento UDM risultante in modo da poter verificare ogni mappatura.
Esamina l'output generato
Prima di attivare il parser, esamina le mappature generate nei log di esempio:
- Carica diversi log non elaborati, incluso ogni tipo di evento che vuoi analizzare, e fai clic su Mostra output UDM per ogni log.
- Verifica che il parser mappi i campi dei log non elaborati ai campi UDM appropriati e compili i relativi valori in modo accurato (ad esempio, metadati degli eventi, campi delle entità come
principaletargete campi dei risultati di sicurezza). - Controlla se sono presenti campi non elaborati importanti che non sono stati mappati.
Perfeziona il parser personalizzato con l'AI
Se una mappatura è errata o mancante, inserisci un'istruzione nel campo Perfeziona il parser con l'AI e fai clic su Conferma. L'agente parser aggiorna il parser esistente anziché ricominciare da capo e conserva tutte le mappature che non hai menzionato. Ogni perfezionamento crea una nuova versione del codice del parser che puoi esaminare.
Segui queste linee guida per creare prompt di perfezionamento efficaci:
- Indica sia il campo di origine non elaborato (o un valore di esempio dal log) sia il percorso esatto del campo UDM di destinazione.
- Raggruppa le modifiche correlate ed evita di combinare correzioni non correlate in un unico prompt lungo.
- Racchiudi le stringhe esatte del log non elaborato tra virgolette singole, ad esempio
'NXDOMAIN'o'allow'. - Indica esplicitamente le mappature condizionali utilizzando una struttura
if ... then ... otherwise ...quando una mappatura dipende dal valore di un campo. - Chiedi all'agente di mappare gli attributi specifici del fornitore che non hanno un campo UDM corrispondente a
additional.fieldscon un nome di chiave chiaro.
La tabella seguente fornisce esempi di prompt di perfezionamento per i log GCP DNS:
| Obiettivo | Prompt di esempio |
|---|---|
| Correggi una mappatura errata | "Map jsonPayload.sourceIP to principal.ip instead of target.ip." |
| Aggiungi un campo mancante | "Map jsonPayload.vmInstanceName to principal.hostname." |
| Mappa un valore nidificato o ripetuto | "Map jsonPayload.queryName to network.dns.questions.name and jsonPayload.queryType to network.dns.questions.type." |
| Applica logica condizionale | "If jsonPayload.responseCode is 'NXDOMAIN', set security_result.summary to 'Domain does not exist'. Otherwise, leave it empty." |
| Imposta il tipo di evento | "Set metadata.event_type to NETWORK_DNS for all DNS query logs." |
| Mappa un campo specifico del fornitore | "Map jsonPayload.alias_query_response_code to additional.fields with key 'alias_query_response_code'." |
| Rimuovi una mappatura | "Stop mapping jsonPayload.protocol to network.application_protocol." |
Invia e attiva il parser personalizzato
Quando l'output UDM è accurato, fai clic su Invia per salvare e attivare il parser personalizzato generato.
Per abbandonare la bozza del parser, fai clic su Elimina. Per rimuovere un parser personalizzato generato dall'AI salvato in un secondo momento, apri il parser e fai clic su Elimina in Elimina parser personalizzato.
Risolvi i problemi relativi alla generazione di parser specializzati con l'AI
La tabella seguente elenca i problemi comuni che potresti riscontrare durante la generazione di un parser personalizzato con l'AI e come risolverli:
| Problema o sintomo | Risoluzione |
|---|---|
| Non vedi l'opzione Crea parser con l'AI. | La funzionalità non è abilitata per la tua istanza. Contatta il tuo rappresentante Google SecOps. |
| La generazione non riesce perché non vengono trovati log per il tipo di log. | L'agente parser richiede i log non elaborati importati per il tipo di log selezionato. Importa i log non elaborati per il tipo di log prima di avviare nuovamente la generazione. |
| La generazione non va a buon fine per un altro motivo. | Non sono disponibili opzioni di triage manuale per una generazione non riuscita. Attiva di nuovo la generazione. Se l'errore persiste, contatta l'assistenza per aprire una richiesta di assistenza. |
| La generazione richiede molto tempo. | In genere la generazione richiede da 30 a 90 minuti. Le origini dei log complesse con molti formati distinti o schemi di grandi dimensioni richiedono più tempo. Puoi chiudere la pagina e tornare a Impostazioni SIEM > Parser in un secondo momento. |
| Molti campi rimangono non mappati. | Aggiungi link alla documentazione che descrivono i campi di log e avvia una nuova sessione oppure utilizza prompt di perfezionamento per mappare i campi mancanti. |
| Un prompt di perfezionamento ha modificato una mappatura non correlata. | Descrivi la correzione in un prompt successivo (ad esempio, "Revert the change to principal.ip and map jsonPayload.sourceIP to it again."). In alternativa, invia e attiva il parser per modificare il codice manualmente. |
| Alcuni log non vengono analizzati in Mostra output UDM. | Incolla il log con errori nel riquadro Log non elaborato e invia un prompt di perfezionamento che cita la parte non analizzata del log. |
Crea un'estensione del parser con l'AI
Quando un parser dei log predefinito in Google SecOps analizza l'origine log, potrebbe omettere attributi personalizzati specifici del cliente, campi facoltativi o telemetria specializzata. L'utilizzo delle estensioni del parser AI (Scrivi estensione con l'AI) ti consente di:
- Estrai campi aggiuntivi dai log non elaborati e mappali ai campi UDM standard o personalizzati
additional.fields. - Applica la logica condizionale e le trasformazioni dei valori, ad esempio la mappatura delle azioni delle stringhe ai tipi enumerati UDM.
- Perfeziona le estensioni generate in modo interattivo in sessioni di chat a più turni senza dover ricominciare da capo.
Best practice per la creazione dei prompt
Per ottenere estensioni del parser accurate, segui queste linee guida per i prompt:
- Indica chiaramente quale parte del log non elaborato estrarre e quale percorso esatto del campo UDM compila (ad esempio
principal.ip,target.user.email_addressesosecurity_result.action). - Racchiudi tra virgolette singole le stringhe letterali, i delimitatori o i valori di esempio nei log non strutturati, ad esempio
'198.51.100.0'o'allow'. - Chiedi all'AI di mappare gli attributi proprietari o specifici del fornitore che non hanno un campo UDM dedicato in
additional.fieldscon un nome di chiave chiaro (ad esempio,additional.fields["application"]).
Genera un'estensione parser
Puoi avviare il flusso di lavoro dell'estensione del parser da una delle seguenti posizioni in Google SecOps:
- Vai a Impostazioni SIEM > Parser per selezionare ed estendere qualsiasi parser di log esistente.
- Apri il flusso di creazione dell'estensione direttamente da un evento con campi non analizzati durante l'esame dei log nella pagina Ricerca.
Per generare un'estensione del parser dalla pagina Parser, segui questi passaggi:
- In Google SecOps, vai a Impostazioni SIEM > Parser.
- Cerca nella tabella Parser il tipo di log che vuoi estendere.
- Nella riga del parser, fai clic su Menu e seleziona Estendi parser > Crea estensione.
- Nel riquadro Log non elaborato, verifica il log non elaborato di esempio o fai clic su Modifica per incollare un esempio del log che vuoi analizzare.
- Nel riquadro Estensione, in Metodo di estensione, seleziona Scrivi estensione con l'AI.
- Nel campo del prompt, inserisci una descrizione in inglese semplice dei campi che vuoi estrarre.
Fai clic su Conferma.
Il sistema genera il codice dell'estensione e aggiorna il riquadro Output UDM.
Perfeziona l'estensione del parser
Puoi creare e perfezionare l'estensione del parser in modo iterativo in sessioni di chat a più turni. Quando invii un prompt aggiuntivo, l'AI applica le nuove istruzioni all'estensione generata in precedenza. Le mappature e la logica condizionale esistenti dei turni precedenti vengono conservate automaticamente, a meno che tu non chieda esplicitamente di eseguirne l'override o di rimuoverle.
- Nel campo del prompt, inserisci un'istruzione aggiuntiva per modificare il codice generato.
- Fai clic su Conferma.
- Dopo ogni prompt, visualizza l'anteprima del codice dell'estensione generato, esamina gli output UDM di esempio e conferma o modifica la logica.
Il seguente workflow di esempio mostra come il perfezionamento iterativo crea un'estensione del parser in più passaggi:
- Turno 1 (estrazione iniziale):
- Prompt dell'utente:
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." - Risultato: l'AI genera una mappatura delle estensioni
principal.ipetarget.ip.
- Prompt dell'utente:
- Turno 2 (mappatura additiva):
- Prompt dell'utente:
"Also map virtual system string 'vsys1' to observer.administrative_domain." - Risultato: l'AI aggiorna l'estensione per mappare
observer.administrative_domainmantenendo le mappature IP del turno 1.
- Prompt dell'utente:
- Turno 3 (perfezionamento condizionale):
- Prompt dell'utente:
"In addition, map action string 'allow' to security_result[0].action as ALLOW." - Risultato: l'AI incorpora la mappatura dell'enumerazione delle azioni condizionali oltre a tutte le estrazioni precedenti.
- Prompt dell'utente:
Convalida l'estensione del parser
- Fai clic su Validate (Convalida).
- Esamina le metriche di convalida al termine della procedura.
Accedi alle informazioni di riferimento
Utilizza i seguenti esempi per creare prompt accurati per le estensioni del parser.
Prompt dei log strutturati
Per i log strutturati in cui i dati sono organizzati in chiavi, attributi o tag XML denominati, specifica i nomi o i percorsi dei campi nel prompt.
Esempio di log strutturato - Formato JSON
{
"insertId": "u0mlpdesys",
"logName": "projects/sample-project-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"authenticationInfo": {
"principalEmail": "analyst@example-domain.com"
},
"methodName": "GenerateAccessToken",
"requestMetadata": {
"callerIp": "203.0.113.195",
"callerSuppliedUserAgent": "google-cloud-sdk gcloud/392.0.0"
},
"resourceName": "projects/-/serviceAccounts/110649196922301550006",
"serviceName": "iamcredentials.googleapis.com"
}
}
Esempi di prompt per i log strutturati
| Istruzione del prompt | Campo o chiave di origine | Campo UDM di destinazione |
|---|---|---|
"Map principalEmail to principal.user.email_addresses." |
principalEmail |
principal.user.email_addresses |
"Extract callerIp to principal.ip and methodName to metadata.product_event_type." |
callerIp, methodName |
principal.ip, metadata.product_event_type |
"Map resourceName to target.resource.name and serviceName to target.application." |
resourceName, serviceName |
target.resource.name, target.application |
"From XML tags, map /Event/System/Hostname to principal.hostname." |
/Event/System/Hostname |
principal.hostname |
Prompt dei log non strutturati
Per i log non strutturati, specifica i valori letterali direttamente dal log di esempio, dai riferimenti posizionali o dalle etichette descrittive.
Esempio di messaggio syslog non strutturato
<14>Nov 9 18:52:45 198.51.100.1 1,2021/11/09 18:52:45,007051000184334,TRAFFIC,start,2561,2021/11/09 18:52:45,198.51.100.0,198.51.100.1,0.0.0.0,0.0.0.0,any allow,,,ping,vsys1,LAN,LAN,ethernet1/2,ethernet1/2,LFPpan,2021/11/09 18:52:45,9729,6,0,0,2048,0,0x100000,icmp,allow,444,444,0,6
Esempi di prompt per log non strutturati
| Istruzione del prompt | Valore letterale o descrizione di esempio | Campo UDM di destinazione |
|---|---|---|
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." |
'198.51.100.0', '198.51.100.1' |
principal.ip, target.ip |
"Extract the application string 'ping' from the log and map it to additional.fields['application']." |
'ping' |
additional.fields["application"] |
"Map rule name 'any allow' to security_result.rule_id." |
'any allow' |
security_result[0].rule_id |
"Extract sent bytes and received bytes into network.sent_bytes and network.received_bytes." |
Contatori di byte numerici nel log | network.sent_bytes, network.received_bytes |
Prompt di logica condizionale
Descrivi la logica condizionale per normalizzare i valori dei log non elaborati in enumerazioni UDM specifiche.
- Normalizzazione delle enumerazioni:
"If the firewall action in the log is 'allow', set security_result.action to ALLOW; otherwise set security_result.action to BLOCK." - Mappatura dei campi condizionale:
"If the protocol is 'icmp', map the ICMP type and code into network.icmp.type and network.icmp.code." - Mappatura dello stato:
"When the log status contains 'success' or '0', set security_result.severity to INFO; if it contains 'error', set it to ERROR."
Limiti di utilizzo
Per mantenere prestazioni e disponibilità delle risorse ottimali, le funzionalità di analisi AI applicano le seguenti quote di utilizzo predefinite:
- Puoi avviare fino a 10 sessioni di generazione di parser specializzati AI o di estensione del parser AI per istanza in un periodo di 24 ore. Per i parser specializzati, ogni clic su Genera parser per un nuovo parser avvia una sessione.
- Ogni sessione applica i seguenti limiti di interazione:
- Per la generazione di parser specializzati con l'AI, ogni sessione supporta fino a 6 turni in totale, che includono la generazione iniziale più un massimo di 5 prompt di perfezionamento.
- Per le estensioni del parser AI, ogni sessione supporta fino a 5 messaggi in totale, che includono il prompt iniziale e i successivi turni di perfezionamento.
Se raggiungi il limite di turni o messaggi per una sessione, puoi inviare o salvare il lavoro corrente o avviare una nuova sessione (soggetta alla quota di sessioni giornaliere). Per i parser personalizzati, dopo aver inviato e attivato il parser, puoi modificarne il codice manualmente come qualsiasi altro parser personalizzato.
Passaggi successivi
- Per saperne di più sulla creazione e sulla gestione dei parser specializzati, consulta Configura i parser personalizzati.
- Per maggiori dettagli su altri metodi di estensione del parser, consulta Sviluppa estensioni del parser.
- Per esempi di snippet di estensione e scenari, consulta Esempi di estensioni del parser.
- Per una panoramica di come i log non elaborati vengono analizzati in UDM, consulta Panoramica dell'analisi dei log.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.