Creare estensioni del parser con Gemini
Questa guida spiega come gli analisti della sicurezza e gli ingegneri di rilevamento possono utilizzare i prompt in linguaggio naturale per aumentare i parser dei log predefiniti. Utilizzando la funzionalità Estensione del parser AI, puoi estrarre rapidamente campi aggiuntivi, applicare la logica condizionale e mappare i log non elaborati al modello UDM (Unified Data Model) senza scrivere sintassi del parser o espressioni regolari complesse.
Quando un parser dei log predefinito in Google SecOps analizza la tua sorgente log, potrebbe omettere attributi personalizzati specifici del cliente, campi facoltativi o telemetria specializzata. L'utilizzo della funzionalità Estensione del parser AI ti consente di:
- Estrarre campi aggiuntivi dai log non elaborati e mappali ai campi UDM standard o a
additional.fieldspersonalizzati. - Applicare la logica condizionale e le trasformazioni dei valori, ad esempio la mappatura delle azioni delle stringhe ai tipi enumerati UDM.
- Perfezionare le estensioni generate in modo interattivo nelle sessioni di chat a più turni senza dover ricominciare da zero.
Terminologia chiave
- Modello UDM (Unified Data Model): la struttura dei dati standard utilizzata in Google SecOps per archiviare e analizzare i dati dei log.
Prima di iniziare
Prima di iniziare, verifica che siano soddisfatti i seguenti prerequisiti:
- Quote di utilizzo: puoi eseguire un massimo di 10 sessioni di generazione dell'estensione del parser AI per finestra di 24 ore, con un massimo di 5 messaggi per sessione.
Best practice per la creazione di prompt
Per ottenere estensioni del parser accurate al primo tentativo, segui queste linee guida per i prompt:
- Specifica esplicitamente l'origine e la destinazione: indica chiaramente quale parte del log non elaborato estrarre e quale percorso esatto del campo UDM popolare, ad esempio
principal.ip,target.user.email_addressesosecurity_result.action. - Utilizza le virgolette per i valori letterali a corrispondenza esatta: quando fai riferimento a stringhe letterali, delimitatori o valori di esempio nei log non strutturati, racchiudili tra virgolette, ad esempio
"198.51.100.0"o"allow". - Gestisci i campi personalizzati utilizzando additional.fields: per gli attributi proprietari o specifici del fornitore che non hanno un campo UDM dedicato, chiedi all'AI di mapparli in
additional.fieldscon un nome chiave chiaro, ad esempioadditional.fields["application"].
Generare un'estensione del parser
Puoi avviare il flusso di lavoro dell'estensione del parser da una delle seguenti posizioni in Google SecOps:
- Pagina delle impostazioni dei parser: vai alla pagina Parser per selezionare ed estendere qualsiasi parser dei log esistente.
- Pagina di ricerca: quando esamini i log nella pagina Ricerca, apri il flusso di creazione dell'estensione direttamente da un evento con campi non analizzati.
Per generare un'estensione del parser dalla pagina delle impostazioni Parser:
- In Google SecOps, vai alla pagina delle impostazioni Parser.
- Cerca il tipo di log che vuoi estendere.
- Fai clic sul menu accanto al parser e seleziona l'opzione per estenderlo.
- Nel campo LOG NON ELABORATO, incolla un esempio del log che vuoi analizzare.
- Nella sezione Metodo di estensione, seleziona la scheda Genera con l'AI.
- Nel campo del prompt, inserisci una descrizione in inglese semplice dell'estrazione.
Fai clic su Conferma.
Il sistema genera il codice dell'estensione e aggiorna l'output UDM.
Perfezionare l'estensione del parser
Puoi creare e perfezionare l'estensione del parser in modo iterativo nelle sessioni di chat a più turni. Quando invii un prompt di follow-up, l'AI applica le nuove istruzioni all'estensione generata in precedenza. Le mappature e la logica condizionale esistenti dei turni precedenti vengono mantenute automaticamente, a meno che tu non chieda esplicitamente di sostituirle o rimuoverle.
- Nel campo del prompt, inserisci un'istruzione di follow-up 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 flusso di lavoro di esempio mostra come il perfezionamento iterativo crea un'estensione del parser in più turni:
- 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 un'estensione che mappa
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 su tutte le estrazioni precedenti.
- Prompt dell'utente:
Convalidare l'estensione del parser
- Fai clic su Convalida.
- Esamina le metriche di convalida al termine della procedura.
Accedere alle informazioni di riferimento
Utilizza i seguenti esempi per creare prompt accurati.
Prompt per i 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 per i log non strutturati
Per i log non strutturati, specifica i valori letterali direttamente dal log di esempio, i riferimenti posizionali o le 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 i 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 per la logica condizionale
Descrivi la logica condizionale per normalizzare i valori dei log non elaborati in enumerazioni UDM specifiche.
- Normalizzazione dell'enumerazione:
"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 condizionali:
"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 ottimali e disponibilità delle risorse, la funzionalità Estensione del parser AI applica le seguenti quote di utilizzo:
- 10 sessioni ogni 24 ore: a ogni cliente viene assegnato un massimo di 10 sessioni di generazione dell'estensione del parser AI per finestra di 24 ore.
- 5 messaggi per sessione: in una singola sessione, puoi inviare fino a 5 messaggi, inclusi il prompt iniziale e i turni di perfezionamento successivi, per creare e perfezionare l'estensione del parser.
Se raggiungi il limite di messaggi della sessione, puoi salvare l'estensione corrente o avviare una nuova sessione.
Passaggi successivi
- Per maggiori dettagli su altri metodi di estensione del parser, consulta Sviluppare estensioni del parser.
- Per esempi di snippet ed estensioni 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.