Raccogliere i log WAF di Imperva
Questo documento spiega come raccogliere i log dal firewall per applicazioni web (WAF) Imperva in Google Security Operations utilizzando un'API o Amazon S3. Il parser trasforma i log dai formati SYSLOG+KV, JSON, CEF e LEEF in un modello UDM (Unified Data Model). Elabora varie strutture di log, estrae i campi pertinenti, li normalizza in attributi UDM e arricchisce i dati con informazioni contestuali per un'analisi della sicurezza avanzata.
Differenze nel metodo di raccolta
L'integrazione di Imperva WAF con Google SecOps supporta i seguenti metodi per l'importazione dei log, entrambi con la stessa etichetta di importazione IMPERVA_WAF:
- Raccolta API: con questo metodo, Google SecOps estrae i log direttamente dall'API Imperva. Si tratta di una connessione diretta che supporta solo gli audit log come descritto in Imperva Audit Trail .
- Raccolta di bucket Amazon S3 V2: con questo metodo, Imperva WAF esegue il push dei log in un bucket Amazon S3 designato. Google SecOps estrae quindi i log da questo bucket. Ciò consente la raccolta di eventi di sicurezza e log di accesso, generati da Cloud WAF, come descritto in Integrazione dei log di Imperva.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Il tipo di importazione (API o Amazon S3) più adatto ai tuoi requisiti di configurazione.
- Istanza Google SecOps.
- Accesso con privilegi ad AWS.
- Accesso privilegiato a Imperva WAF.
Raccogli i log WAF di Imperva utilizzando l'API
Configura un utente di sola lettura per Imperva WAF
- Accedi alla console Imperva con un account con privilegi.
- Vai a Impostazioni > Utenti e ruoli.
- Fai clic su Aggiungi utente.
- Compila i campi obbligatori:
- Nome utente: inserisci un nome utente univoco.
- Password: imposta una password efficace.
- Email: fornisci l'indirizzo email dell'utente.
- Nella sezione Ruoli, seleziona il ruolo Lettore.
- Fai clic su Salva per creare l'utente con accesso di sola lettura.
(Facoltativo) Configura l'utente Reader come solo API
- Nell'elenco Utenti, individua l'utente appena creato.
- Fai clic sul pulsante Azioni (tre puntini) accanto al nome dell'utente.
- Seleziona l'utente Imposta come solo API.
Genera l'ID API e la chiave API
- Nell'elenco Utenti, seleziona l'utente appena creato.
- Seleziona Impostazioni e fai clic su Chiavi API.
- Fai clic su Aggiungi chiave API.
- Compila i campi obbligatori:
- Nome: inserisci un nome descrittivo per la chiave API.
- (Facoltativo) Descrizione: fornisci una descrizione facoltativa.
- Nell'elenco La chiave API scadrà tra, seleziona Mai.
- Per attivare la funzionalità, seleziona Stato.
- Fai clic su Salva.
Il sistema visualizza l'ID API e la chiave API. Copia e salva queste credenziali, perché non verranno più visualizzate.
Configurare i feed
Per configurare un feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio Imperva Incapsula WAF Logs.
- Seleziona API di terze parti come Tipo di origine.
- Seleziona Imperva come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Intestazione HTTP di autenticazione: inserisci l'ID e la chiave API di Imperva su due righe:
apiId:<YOUR_API_ID>eapiKey:<YOUR_API_KEY>.
- Intestazione HTTP di autenticazione: inserisci l'ID e la chiave API di Imperva su due righe:
- Fai clic su Avanti.
- Rivedi la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Raccogli i log WAF di Imperva utilizzando Amazon S3
Configura AWS IAM e S3
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
- Salva il nome e la regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file .csv e salva la chiave di accesso e la chiave di accesso segreta per utilizzarle in un secondo momento.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente i criteri.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configura la connessione Amazon S3 di Imperva WAF
- Accedi alla console Imperva con un account con privilegi.
- Vai a Log > Configurazione log.
- Seleziona Amazon S3.
- Compila i campi obbligatori:
- Chiave di accesso
- Chiave segreta
- Percorso: inserisci il percorso nel seguente formato:
<Amazon S3 bucket name>/<log folder>; ad esempio:MyBucket/MyIncapsulaLogFolder.
- Fai clic su Prova connessione per eseguire un ciclo di test completo in cui un file di test viene trasferito alla cartella designata.
- Seleziona CEF come formato per i file di log.
- Per impostazione predefinita, i file di log sono compressi. Imposta l'opzione per non comprimere i file.
Configura un feed in Google SecOps per importare i log WAF Imperva da Amazon S3 V2
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio
Imperva WAF Logs. - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona Imperva come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- URI S3: l'URI del bucket.
s3://your-log-bucket-name/- Sostituisci
your-log-bucket-namecon il nome effettivo del bucket.
- Sostituisci
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- URI S3: l'URI del bucket.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| account_id | target.user.userid | L'ID account dell'oggetto JSON |
| atto | security_result.action | Se act è allowed, alert, inizia con REQ_PASSED o inizia con REQ_CACHED, imposta su ALLOW. Se act è deny, blocked, inizia con REQ_BLOCKED o inizia con REQ_CHALLENGE, imposta su BLOCK. Se act corrisponde all'espressione regolare (?i)REQ_BAD, imposta FAIL. In caso contrario, imposta il valore su UNKNOWN_ACTION. |
| app | network.application_protocol | Rinominato da kv.app. Convertito in maiuscolo. |
| calCountryOrRegion | principal.location.country_or_region | Rinominato da calCountryOrRegion. |
| gatto | security_result.action_details | Se cat inizia con REQ_PASSED o REQ_CACHED, imposta action su ALLOW e action_details su una descrizione basata sul valore di cat. Se cat inizia con REQ_BAD, imposta action su FAIL e action_details su una descrizione basata sul valore di cat. Se cat inizia con REQ_BLOCKED o REQ_CHALLENGE, imposta action su BLOCK e action_details su una descrizione basata sul valore di cat. |
| cicode | principal.location.city | Rinominato da cicode. |
| classified_client | security_result.detection_fields | Se classified_client non è vuoto, crea una nuova voce detection_fields con la chiave classified_client e il valore classified_client. |
| client.domain | principal.hostname, principal.asset.hostname | Rinominato da client.domain. |
| client.geo.country_iso_code | principal.location.country_or_region | Rinominato da client.geo.country_iso_code. |
| client.ip | principal.ip, principal.asset.ip | Unito a principal.ip e principal.asset.ip. |
| cn1 | network.http.response_code | Rinominato da cn1. Convertito in numero intero. |
| context_key | target.resource.name | Rinominato da context_key. |
| country | principal.location.country_or_region | Rinominato da country. |
| credentials_leaked | security_result.detection_fields | Convertito in stringa. Se non è vuoto, crea una nuova voce detection_fields con la chiave credentials_leaked e il valore credentials_leaked. |
| cs1 | security_result.detection_fields | Se cs1 non è vuoto, NA o `, create a newdetection_fieldsentry with keycs1Labeland valuecs1`. |
| cs1Label | security_result.detection_fields | Utilizzato come chiave per la voce detection_fields creata da cs1. |
| cs2 | security_result.detection_fields | Se cs2 non è vuoto, crea una nuova voce detection_fields con la chiave cs2Label e il valore cs2. |
| cs2Label | security_result.detection_fields | Utilizzato come chiave per la voce detection_fields creata da cs2. |
| cs3 | security_result.detection_fields | Se cs3 non è vuoto, - o `, create a newdetection_fieldsentry with keycs3Labeland valuecs3`. |
| cs3Label | security_result.detection_fields | Utilizzato come chiave per la voce detection_fields creata da cs3. |
| cs4 | security_result.detection_fields | Se cs4 non è vuoto, crea una nuova voce detection_fields con la chiave cs4Label e il valore cs4. |
| cs4Label | security_result.detection_fields | Utilizzato come chiave per la voce detection_fields creata da cs4. |
| cs5 | security_result.detection_fields | Se cs5 non è vuoto, crea una nuova voce detection_fields con la chiave cs5Label e il valore cs5. |
| cs5Label | security_result.detection_fields | Utilizzato come chiave per la voce detection_fields creata da cs5. |
| cs6 | principal.application | Rinominato da cs6. |
| cs7 | principal.location.region_latitude | Se cs7Label è latitude, rinominato in principal.location.region_latitude. Convertita in numero in virgola mobile. |
| cs7Label | Se cs7Label è latitude, utilizzato per determinare la mappatura di cs7. |
|
| cs8 | principal.location.region_longitude | Se cs8Label è longitude, rinominato in principal.location.region_longitude. Convertita in numero in virgola mobile. |
| cs8Label | Se cs8Label è longitude, utilizzato per determinare la mappatura di cs8. |
|
| cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | Se cs9 non è vuoto, impostalo su security_result.rule_name e crea una nuova voce vulnerabilities con il nome cs9. |
| Cliente | target.user.user_display_name | Rinominato da Customer. |
| declared_client | security_result.detection_fields | Se declared_client non è vuoto, crea una nuova voce detection_fields con la chiave declared_client e il valore declared_client. |
| descrizione | security_result.threat_name | Rinominato da description. |
| deviceExternalId | network.community_id | Rinominato da deviceExternalId. |
| deviceReceiptTime | metadata.event_timestamp | Analizzato come data e impostato su metadata.event_timestamp. Se il campo è vuoto, viene utilizzato log_timestamp o kv.start. |
| dhost | target.hostname | Rinominato da kv.dhost. |
| dproc | security_result.category_details | Rinominato da dproc. |
| dpt | target.port | Rinominato da kv.dpt. Convertito in numero intero. |
| dst | target.ip, target.asset.ip | Se dst non è vuoto, viene unito a target.ip e target.asset.ip. |
| dstPort | target.port | Rinominato da dstPort. Convertito in numero intero. |
| duser | target.user.userid | Se duser non corrisponde all'espressione regolare .*?Alert.* e non è vuoto, viene rinominato in target.user.userid. |
| end | security_result.detection_fields | Se end non è vuoto, crea una nuova voce detection_fields con la chiave event_end_time e il valore end. |
| event.id | L'ID evento dell'oggetto JSON | |
| event.provider | principal.user.user_display_name | Rinominato da event.provider. |
| failed_logins_last_24h | security_result.detection_fields | Convertito in stringa. Se non è vuoto, crea una nuova voce detection_fields con la chiave failed_logins_last_24h e il valore failed_logins_last_24h. |
| fileId | network.session_id | Rinominato da fileId. |
| filePermission | security_result.detection_fields | Se filePermission non è vuoto, crea una nuova voce detection_fields con la chiave filePermission e il valore filePermission. |
| fileType | security_result.detection_fields | Se fileType non è vuoto, crea una nuova voce detection_fields con la chiave fileType e il valore fileType. |
| impronta | security_result.detection_fields | Se fingerprint non è vuoto, crea una nuova voce detection_fields con la chiave log_imperva_fingerprint e il valore fingerprint. |
| flexString1 | network.http.response_code | Rinominato da kv.flexString1. Convertito in numero intero. |
| http.request.body.bytes | network.sent_bytes | Convertito in numero intero senza segno. Rinominato da http.request.body.bytes. |
| http.request.method | network.http.method | Rinominato da http.request.method. |
| imperva.abp.apollo_rule_versions | security_result.detection_fields | Per ogni voce in imperva.abp.apollo_rule_versions, crea una nuova voce detection_fields con la chiave apollo_rule_versions_{index} e il valore uguale alla voce. |
| imperva.abp.bot_behaviors | security_result.detection_fields | Per ogni voce in imperva.abp.bot_behaviors, crea una nuova voce detection_fields con la chiave bot_behaviors_{index} e il valore uguale alla voce. |
| imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | Per ogni voce in imperva.abp.bot_deciding_condition_ids, crea una nuova voce detection_fields con la chiave bot_deciding_condition_ids_{index} e il valore uguale alla voce. |
| imperva.abp.bot_deciding_condition_names | security_result.detection_fields | Per ogni voce in imperva.abp.bot_deciding_condition_names, crea una nuova voce detection_fields con la chiave bot_deciding_condition_names_{index} e il valore uguale alla voce. |
| imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | Per ogni voce in imperva.abp.bot_triggered_condition_ids, crea una nuova voce detection_fields con la chiave bot_triggered_condition_ids_{index} e il valore uguale alla voce. |
| imperva.abp.bot_triggered_condition_names | security_result.detection_fields | Per ogni voce in imperva.abp.bot_triggered_condition_names, crea una nuova voce detection_fields con la chiave bot_triggered_condition_names_{index} e il valore uguale alla voce. |
| imperva.abp.bot_violations | security_result.detection_fields | Per ogni voce in imperva.abp.bot_violations, crea una nuova voce detection_fields con la chiave bot_violations_{index} e il valore uguale alla voce. |
| imperva.abp.customer_request_id | network.session_id | Rinominato da imperva.abp.customer_request_id. |
| imperva.abp.headers_accept_encoding | security_result.detection_fields | Se imperva.abp.headers_accept_encoding non è vuoto, crea una nuova voce detection_fields con la chiave Accept Encoding e il valore imperva.abp.headers_accept_encoding. |
| imperva.abp.headers_accept_language | security_result.detection_fields | Se imperva.abp.headers_accept_language non è vuoto, crea una nuova voce detection_fields con la chiave Accept Language e il valore imperva.abp.headers_accept_language. |
| imperva.abp.headers_connection | security_result.detection_fields | Se imperva.abp.headers_connection non è vuoto, crea una nuova voce detection_fields con la chiave headers_connection e il valore imperva.abp.headers_connection. |
| imperva.abp.headers_referer | network.http.referral_url | Rinominato da imperva.abp.headers_referer. |
| imperva.abp.hsig | security_result.detection_fields | Se imperva.abp.hsig non è vuoto, crea una nuova voce detection_fields con la chiave hsig e il valore imperva.abp.hsig. |
| imperva.abp.monitor_action | security_result.action, security_result.severity | Se imperva.abp.monitor_action corrisponde alla regex (?i)allow, imposta security_action su ALLOW e severity su INFORMATIONAL. Se imperva.abp.monitor_action corrisponde all'espressione regolare (?i)captcha o (?i)block, imposta security_action su BLOCK. |
| imperva.abp.pid | principal.process.pid | Rinominato da imperva.abp.pid. |
| imperva.abp.policy_id | security_result.detection_fields | Se imperva.abp.policy_id non è vuoto, crea una nuova voce detection_fields con la chiave Policy Id e il valore imperva.abp.policy_id. |
| imperva.abp.policy_name | security_result.detection_fields | Se imperva.abp.policy_name non è vuoto, crea una nuova voce detection_fields con la chiave Policy Name e il valore imperva.abp.policy_name. |
| imperva.abp.random_id | additional.fields | Se imperva.abp.random_id non è vuoto, crea una nuova voce additional.fields con la chiave Random Id e il valore imperva.abp.random_id. |
| imperva.abp.request_type | principal.labels | Se imperva.abp.request_type non è vuoto, crea una nuova voce principal.labels con la chiave request_type e il valore imperva.abp.request_type. |
| imperva.abp.selector | security_result.detection_fields | Se imperva.abp.selector non è vuoto, crea una nuova voce detection_fields con la chiave selector e il valore imperva.abp.selector. |
| imperva.abp.selector_derived_id | security_result.detection_fields | Se imperva.abp.selector_derived_id non è vuoto, crea una nuova voce detection_fields con la chiave selector_derived_id e il valore imperva.abp.selector_derived_id. |
| imperva.abp.tls_fingerprint | security_result.description | Rinominato da imperva.abp.tls_fingerprint. |
| imperva.abp.token_id | target.resource.product_object_id | Rinominato da imperva.abp.token_id. |
| imperva.abp.zuid | additional.fields | Se imperva.abp.zuid non è vuoto, crea una nuova voce additional.fields con la chiave zuid e il valore imperva.abp.zuid. |
| imperva.additional_factors | additional.fields | Per ogni voce in imperva.additional_factors, crea una nuova voce additional.fields con la chiave additional_factors_{index} e il valore uguale alla voce. |
| imperva.audit_trail.event_action | security_result.detection_fields | Se imperva.audit_trail.event_action non è vuoto, crea una nuova voce detection_fields con la chiave imperva.audit_trail.event_action e il valore imperva.audit_trail.event_action_description. |
| imperva.audit_trail.event_action_description | security_result.detection_fields | Utilizzato come valore per la voce detection_fields creata da imperva.audit_trail.event_action. |
| imperva.audit_trail.event_context | security_result.detection_fields | Se imperva.audit_trail.event_context non è vuoto, crea una nuova voce detection_fields con la chiave imperva.audit_trail.event_context e il valore imperva.audit_trail.event_context_description. |
| imperva.audit_trail.event_context_description | security_result.detection_fields | Utilizzato come valore per la voce detection_fields creata da imperva.audit_trail.event_context. |
| imperva.country | principal.location.country_or_region | Rinominato da imperva.country. |
| imperva.declared_client | security_result.detection_fields | Se imperva.declared_client non è vuoto, crea una nuova voce detection_fields con la chiave declared_client e il valore imperva.declared_client. |
| imperva.device_reputation | additional.fields | Per ogni voce in imperva.device_reputation, crea una nuova voce additional.fields con la chiave device_reputation e un valore di elenco contenente la voce. |
| imperva.domain_risk | security_result.detection_fields | Se imperva.domain_risk non è vuoto, crea una nuova voce detection_fields con la chiave domain_risk e il valore imperva.domain_risk. |
| imperva.failed_logins_last_24h | security_result.detection_fields | Convertito in stringa. Se non è vuoto, crea una nuova voce detection_fields con la chiave failed_logins_last_24h e il valore failed_logins_last_24h. |
| imperva.fingerprint | security_result.detection_fields | Se imperva.fingerprint non è vuoto, crea una nuova voce detection_fields con la chiave log_imperva_fingerprint e il valore imperva.fingerprint. |
| imperva.ids.account_id | metadata.product_log_id | Rinominato da imperva.ids.account_id. |
| imperva.ids.account_name | metadata.product_event_type | Rinominato da imperva.ids.account_name. |
| imperva.ids.site_id | additional.fields | Se imperva.ids.site_id non è vuoto, crea una nuova voce additional.fields con la chiave site_id e il valore imperva.ids.site_id. |
| imperva.ids.site_name | additional.fields | Se imperva.ids.site_name non è vuoto, crea una nuova voce additional.fields con la chiave site_name e il valore imperva.ids.site_name. |
| imperva.referrer | network.http.referral_url | Rinominato da imperva.referrer. |
| imperva.request_session_id | network.session_id | Rinominato da imperva.request_session_id. |
| imperva.request_user | security_result.detection_fields | Se imperva.request_user non è vuoto, crea una nuova voce detection_fields con la chiave request_user e il valore imperva.request_user. |
| imperva.risk_level | security_result.severity_details | Rinominato da imperva.risk_level. |
| imperva.risk_reason | security_result.description | Rinominato da imperva.risk_reason. |
| imperva.significant_domain_name | security_result.detection_fields | Se imperva.significant_domain_name non è vuoto, crea una nuova voce detection_fields con la chiave significant_domain_name e il valore imperva.significant_domain_name. |
| imperva.violated_directives | security_result.detection_fields | Per ogni voce in imperva.violated_directives, crea una nuova voce detection_fields con la chiave violated_directives e il valore uguale alla voce. |
| in | network.received_bytes | Rinominato da in. Convertito in numero intero senza segno. |
| log_timestamp | metadata.event_timestamp | Se deviceReceiptTime è vuoto e kv.start è vuoto, imposta il valore su metadata.event_timestamp. |
| messaggio | metadata.description | Se message non è vuoto e event.provider, imperva.ids.account_name e client.ip sono tutti vuoti, imposta metadata.description. |
| postbody | security_result.detection_fields | Se postbody non è vuoto, crea una nuova voce detection_fields con la chiave post_body_info e il valore postbody. |
| proto | network.application_protocol | Rinominato da proto. |
| protoVer | network.tls.version, network.tls.cipher | Se protoVer non è vuoto, viene analizzato per estrarre tls_version e tls_cipher, che vengono poi rinominati rispettivamente in network.tls.version e network.tls.cipher. |
| richiesta | target.url | Rinominato da kv.request. |
| requestClientApplication | network.http.user_agent | Rinominato da requestClientApplication. |
| requestMethod | network.http.method | Rinominato da requestMethod. Convertito in maiuscolo. |
| resource_id | target.resource.id | Rinominato da resource_id. |
| resource_type_key | target.resource.type | Rinominato da resource_type_key. |
| rt | metadata.event_timestamp | Analizzato per estrarre deviceReceiptTime, che viene poi analizzato come data e impostato su metadata.event_timestamp. |
| security_result.action | security_result.action | Unito al valore del campo _action. |
| security_result.severity | security_result.severity | Se sevs è error o warning, impostalo su HIGH. Se sevs è critical, impostalo su CRITICAL. Se sevs è medium o notice, impostalo su MEDIUM. Se sevs è information o info, impostalo su LOW. |
| server.domain | target.hostname, target.asset.hostname | Rinominato da server.domain. |
| server.geo.name | target.location.name | Rinominato da server.geo.name. |
| gravità | security_result.threat_id | Rinominato da severity. |
| siteid | security_result.detection_fields | Se siteid non è vuoto, crea una nuova voce detection_fields con la chiave siteid e il valore siteid. |
| sourceServiceName | target.hostname | Rinominato da kv.sourceServiceName. |
| spt | principal.port | Rinominato da kv.spt. Convertito in numero intero. |
| src | principal.ip, principal.asset.ip | Se src non è vuoto, viene unito a principal.ip e principal.asset.ip. |
| srcPort | principal.port | Rinominato da srcPort. Convertito in numero intero. |
| start | security_result.detection_fields, metadata.event_timestamp | Se start non è vuoto, crea una nuova voce detection_fields con la chiave event_start_time e il valore start. Analizzato anche come data e impostato su metadata.event_timestamp se deviceReceiptTime è vuoto. |
| successful_logins_last_24h | security_result.detection_fields | Convertito in stringa. Se non è vuoto, crea una nuova voce detection_fields con la chiave successful_logins_last_24h e il valore successful_logins_last_24h. |
| suid | target.user.userid | Rinominato da suid. |
| tempo | metadata.event_timestamp | Convertito in stringa. Analizzato come data e impostato su metadata.event_timestamp. |
| type_key | metadata.product_event_type | Rinominato da type_key. |
| url | target.process.file.full_path | Se url.path non è vuoto o /, imposta target.process.file.full_path. |
| url | target.url | Rinominato da url. Se qstr non è vuoto, viene aggiunto a url con un separatore ?. |
| user.email | principal.user.email_addresses | Se user.email non è vuoto e corrisponde all'espressione regolare ^.+@.+$, viene unito a principal.user.email_addresses. |
| user_agent | network.http.user_agent | Rinominato da user_agent. |
| user_agent.original | network.http.parsed_user_agent | Se user_agent.original non è vuoto o *, convertito in parseduseragent e rinominato in network.http.parsed_user_agent. |
| user_details | principal.user.email_addresses | Se user_details non è vuoto e corrisponde all'espressione regolare ^.+@.+$, viene unito a principal.user.email_addresses. |
| user_id | principal.user.userid | Rinominato da user_id. |
| ver | network.tls.version, network.tls.cipher | Se ver non è vuoto, viene analizzato per estrarre tls_version e tls_cipher, che vengono poi rinominati rispettivamente in network.tls.version e network.tls.cipher. |
| xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | Se xff non è vuoto, viene elaborato per estrarre indirizzi IP e nomi host. Gli indirizzi IP vengono uniti in intermediary.ip e intermediary.asset.ip. I nomi host sono impostati su intermediary.hostname e intermediary.asset.hostname. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.