Raccogli i log di Elastic Defend
Parser Version: 5.0
Questo documento spiega come importare i log di Elastic Defend in Google Security Operations utilizzando Google Cloud Storage V2 con una funzione Cloud Run.
Elastic Defend è una soluzione di rilevamento e risposta degli endpoint (EDR) all'interno di Elastic Security che fornisce funzionalità di prevenzione, rilevamento e risposta con una visibilità approfondita sui sistemi operativi Windows, macOS e Linux. Monitora l'esecuzione dei processi, l'attività dei file, le connessioni di rete, le modifiche al registro e i caricamenti delle librerie per rilevare e prevenire le minacce a livello di endpoint. I dati vengono archiviati in Elasticsearch e possono essere recuperati utilizzando l'API Elasticsearch Search.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Un progetto Google Cloud con le seguenti API abilitate:
- Cloud Storage
- Cloud Run Functions
- Cloud Scheduler
- Pub/Sub
- IAM
- Accesso a un cluster Elasticsearch con Elastic Defend distribuito
- Autorizzazioni per creare chiavi API in Elasticsearch (privilegio del cluster
manage_security,manage_api_keyomanage_own_api_key) - Connettività di rete da Cloud Run Functions al cluster Elasticsearch
Crea un bucket Google Cloud Storage
- Vai alla console Google Cloud.
- Seleziona il tuo progetto o creane uno nuovo.
- Nel menu di navigazione, vai a Cloud Storage > Bucket.
- Fai clic su Crea bucket.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio elastic-defend-logs)Tipo di località Scegli in base alle tue esigenze (Regione, a due regioni, multiregionale) Località Seleziona la località (ad esempio us-central1)Classe di archiviazione Standard (consigliato per i log ad accesso frequente) Controllo degli accessi Uniforme (consigliato) Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione Fai clic su Crea.
Raccogli le credenziali di Elastic Defend
Per consentire alla funzione Cloud Run di recuperare gli eventi Elastic Defend, devi creare una chiave API con autorizzazioni in lettura per i flussi di dati logs-endpoint.
Crea una chiave API utilizzando Kibana
- Accedi a Kibana.
- Nel menu di navigazione o nel campo di ricerca globale, vai a Stack Management > Chiavi API.
- Fai clic su Crea chiave API.
- Nel campo Nome, inserisci
Google SecOps Cloud Storage Integration. - Nel campo Scadenza, imposta facoltativamente una data di scadenza. Per impostazione predefinita, le chiavi API non scadono.
- Fai clic su Controlla i privilegi di sicurezza.
- Nella sezione Indici, fai clic su Aggiungi privilegio indice.
- Configura il privilegio per l'indice:
- Indici: inserisci
logs-endpoint.* - Privilegi: seleziona Lettura
- Indici: inserisci
- Lascia vuota la sezione Privilegi del cluster (non sono richiesti privilegi del cluster).
- Fai clic su Crea chiave API.
Registra le credenziali API
Dopo aver creato la chiave API, viene visualizzata una finestra di dialogo con le tue credenziali:
Encoded: la chiave API con codifica Base64 (ad esempio,
VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)Devi anche registrare l'URL dell'endpoint Elasticsearch:
Per Elastic Cloud: l'endpoint viene visualizzato nella console Cloud nella sezione Elasticsearch del tuo deployment (ad esempio,
https://my-deployment.es.us-central1.gcp.cloud.es.io:443)Per Elasticsearch autogestito: utilizza il nome host o l'indirizzo IP del cluster Elasticsearch con la porta (ad esempio,
https://elasticsearch.example.com:9200)
Crea una chiave API utilizzando gli Strumenti per sviluppatori (metodo alternativo)
In alternativa, puoi creare una chiave API utilizzando Kibana Dev Tools:
- Accedi a Kibana.
- Vai a Gestione > Strumenti per sviluppatori.
Nella console, esegui questo comando:
POST /_security/api_key { "name": "Google SecOps Cloud Storage Integration", "role_descriptors": { "chronicle_reader": { "indices": [ { "names": ["logs-endpoint.*"], "privileges": ["read"] } ] } }, "metadata": { "application": "google-chronicle-gcs", "environment": "production" } }La risposta contiene le credenziali della chiave API:
{ "id": "VuaCfGcBCdbkQm-e5aOx", "name": "Google SecOps Cloud Storage Integration", "api_key": "ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }Copia e salva il valore codificato. Questa è la chiave API con codifica base64 che utilizzerai per l'autenticazione.
Crea service account
Crea un account di servizio dedicato per la funzione Cloud Run.
- Nella console Google Cloud, vai a IAM e amministrazione > Account di servizio.
- Fai clic su Crea account di servizio.
- Fornisci i seguenti dettagli di configurazione:
- Nome del service account: inserisci
elastic-defend-collector - Descrizione account di servizio: inserisci
Service account for Elastic Defend log collection to GCS
- Nome del service account: inserisci
- Fai clic su Crea e continua.
- Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi i seguenti ruoli:
- Fai clic su Seleziona un ruolo e seleziona Storage Object Admin (
roles/storage.objectAdmin). - Fai clic su Aggiungi un altro ruolo e seleziona Cloud Run Invoker (
roles/run.invoker).
- Fai clic su Seleziona un ruolo e seleziona Storage Object Admin (
- Fai clic su Continua.
- Fai clic su Fine.
Crea argomento Pub/Sub
Crea un argomento Pub/Sub per attivare la funzione Cloud Run da Cloud Scheduler.
- Nella console Google Cloud, vai a Pub/Sub > Argomenti.
- Fai clic su Crea argomento.
- Fornisci i seguenti dettagli di configurazione:
- ID argomento: inserisci
elastic-defend-trigger - Aggiungi una sottoscrizione predefinita: lascia l'opzione selezionata
- ID argomento: inserisci
- Fai clic su Crea.
Crea funzione Cloud Run
Crea una funzione Cloud Run che recupera gli eventi da Elasticsearch e li scrive in GCS.
Crea la funzione
- Nella console Google Cloud, vai a Cloud Run Functions.
- Fai clic su Crea funzione.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Ambiente 2ª gen. Nome della funzione elastic-defend-to-gcsRegione Seleziona la stessa regione del bucket GCS Tipo di trigger Cloud Pub/Sub Argomento Cloud Pub/Sub Seleziona elastic-defend-triggerMemoria allocata 512 MiB (aumenta per volumi di dati di grandi dimensioni) Timeout 540 secondi Service account di runtime Seleziona elastic-defend-collectorFai clic su Avanti.
Aggiungi variabili di ambiente
Aggiungi le seguenti variabili di ambiente nella sezione Impostazioni di runtime, build, connessioni e sicurezza:
Variabile Valore GCS_BUCKETNome del bucket GCS (ad esempio, elastic-defend-logs)GCS_PREFIXPrefisso per i file di log (ad esempio, elastic-defend)STATE_KEYNome del file di stato (ad esempio state.json)ES_HOSTURL Elasticsearch (ad esempio https://my-deployment.es.us-central1.gcp.cloud.es.io:443)ES_API_KEYChiave API codificata dal passaggio di creazione delle credenziali MAX_RECORDSNumero massimo di record per esecuzione (ad esempio 100000)PAGE_SIZENumero di record per richiesta di ricerca (ad esempio 1000)LOOKBACK_HOURSOre da considerare per la prima esecuzione (ad esempio, 24)
Aggiungi il codice per la funzione
- Seleziona Python 3.11 come Runtime.
- Imposta Punto di ingresso su
main. - Nella sezione Codice sorgente, seleziona Editor incorporato.
Sostituisci i contenuti di
main.pycon il seguente codice:import os import json import datetime import base64 import requests from google.cloud import storage GCS_BUCKET = os.environ["GCS_BUCKET"] GCS_PREFIX = os.environ.get("GCS_PREFIX", "elastic-defend") STATE_KEY = os.environ.get("STATE_KEY", "state.json") ES_HOST = os.environ["ES_HOST"] ES_API_KEY = os.environ["ES_API_KEY"] MAX_RECORDS = int(os.environ.get("MAX_RECORDS", "100000")) PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "1000")) LOOKBACK_HOURS = int(os.environ.get("LOOKBACK_HOURS", "24")) INDEX_PATTERN = "logs-endpoint.*" SEARCH_PATH = f"/{INDEX_PATTERN}/_search" def _gcs_client(): return storage.Client() def _load_state(bucket): blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}") if blob.exists(): return json.loads(blob.download_as_text()) return {} def _save_state(bucket, state): blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}") blob.upload_from_string( json.dumps(state), content_type="application/json", ) def _build_query(gte_ts, sort_after=None): body = { "size": PAGE_SIZE, "query": { "range": { "@timestamp": { "gte": gte_ts, "format": "strict_date_optional_time", } } }, "sort": [ {"@timestamp": {"order": "asc"}}, {"_shard_doc": "asc"}, ], } if sort_after: body["search_after"] = sort_after return body def _search(session, body): url = f"{ES_HOST.rstrip('/')}{SEARCH_PATH}" resp = session.post( url, json=body, headers={ "Authorization": f"ApiKey {ES_API_KEY}", "Content-Type": "application/json", }, timeout=120, ) resp.raise_for_status() return resp.json() def _write_ndjson(bucket, records, ts_label): if not records: return now = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ") blob_name = f"{GCS_PREFIX}/{ts_label}/{now}.ndjson" blob = bucket.blob(blob_name) ndjson = "\n".join(json.dumps(r, separators=(",", ":")) for r in records) blob.upload_from_string(ndjson, content_type="application/x-ndjson") print(f"Wrote {len(records)} records to gs://{GCS_BUCKET}/{blob_name}") def main(event, context): """Cloud Run function entry point triggered by Pub/Sub.""" client = _gcs_client() bucket = client.bucket(GCS_BUCKET) state = _load_state(bucket) sort_after = state.get("sort_after") if state.get("last_timestamp"): gte_ts = state["last_timestamp"] else: gte_ts = ( datetime.datetime.utcnow() - datetime.timedelta(hours=LOOKBACK_HOURS) ).strftime("%Y-%m-%dT%H:%M:%S.%fZ") session = requests.Session() total = 0 batch = [] last_ts = gte_ts ts_label = datetime.datetime.utcnow().strftime("%Y/%m/%d/%H") while total < MAX_RECORDS: body = _build_query(gte_ts, sort_after) result = _search(session, body) hits = result.get("hits", {}).get("hits", []) if not hits: break for hit in hits: doc = hit.get("_source", {}) doc["_id"] = hit.get("_id") doc["_index"] = hit.get("_index") batch.append(doc) hit_ts = doc.get("@timestamp", last_ts) if hit_ts > last_ts: last_ts = hit_ts sort_after = hits[-1].get("sort") total += len(hits) if len(batch) >= PAGE_SIZE: _write_ndjson(bucket, batch, ts_label) batch = [] if len(hits) < PAGE_SIZE: break if batch: _write_ndjson(bucket, batch, ts_label) new_state = { "last_timestamp": last_ts, "sort_after": sort_after, } _save_state(bucket, new_state) print(f"Done. Fetched {total} records. State: {json.dumps(new_state)}") return f"OK: {total} records"Sostituisci i contenuti di
requirements.txtcome segue:functions-framework==3.* google-cloud-storage==2.* requests==2.*Fai clic su Esegui il deployment.
Attendi il completamento del deployment.
Crea job Cloud Scheduler
Crea un job Cloud Scheduler per attivare la funzione Cloud Run in base a una pianificazione regolare.
- Nella console Google Cloud, vai a Cloud Scheduler.
- Fai clic su Crea job.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Nome elastic-defend-schedulerRegione Seleziona la stessa regione della funzione Cloud Run Frequenza */5 * * * *(ogni 5 minuti)Fuso orario Seleziona il tuo fuso orario (ad es. UTC)Fai clic su Continua.
Nella sezione Configura l'esecuzione:
- Tipo di destinazione: seleziona Pub/Sub
- Argomento Cloud Pub/Sub: seleziona
elastic-defend-trigger - Corpo del messaggio: inserisci
{"run": true}
Fai clic su Crea.
Recupera il account di servizio Google SecOps e configura il feed
Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.
Recupera l'indirizzo email del account di servizio
- Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad es.
Elastic Defend Events). - Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Elastic Defend come Tipo di log.
Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email univoco del account di servizio, ad esempio:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia questo indirizzo email per utilizzarlo nel passaggio successivo.
Configura il feed
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
URL bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:
gs://elastic-defend-logs/elastic-defend/Sostituisci
elastic-defend-logscon il nome del tuo bucket GCS.Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
- Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
Elimina i file trasferiti e le directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
Età massima dei file: includi i file modificati negli ultimi giorni (il valore predefinito è 180 giorni)
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.
Concedi le autorizzazioni IAM al account di servizio Google SecOps
Il account di servizio Google SecOps deve avere il ruolo Storage Object Viewer nel bucket GCS.
- Vai a Cloud Storage > Bucket.
- Fai clic sul nome del bucket (ad esempio
elastic-defend-logs). - Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps
- Assegna i ruoli: seleziona Storage Object Viewer
Fai clic su Salva.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
| _source.agent.id, _source.agent.type, _source.agent.version, _source.host.architecture, _source.event.agent_id_status, _source.event.id, _source.user.id, _source.group.id, _source.data_stream.type, _source.agent.build.original | additional.fields | Uniti con oggetti etichetta contenenti valori dei campi elencati |
| _source.process.Ext.session_info.logon_type | extensions.auth.auth_details | Valore copiato direttamente |
| _source.host.os.full | hardware.cpu_platform | Valore copiato direttamente |
| _source.host.id | hardware.serial_number | Valore copiato direttamente |
| _source.rule.description | metadata.description | Valore copiato direttamente |
| _source.@timestamp | metadata.event_timestamp | Conversione eseguita utilizzando il filtro della data con i formati ISO8601, yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSZ, yyyy-MM-ddTHH:mm:ssZ |
| metadata.event_type | Impostato in base alle condizioni index, event.action e has* | |
| metadata.log_type | Impostato su "ELASTIC_DEFEND" | |
| metadata.product_event_type | Impostato su "File Events" se _index ~ events.file; "Library Events" se events.library; "Network Events" se events.network; "Process Events" se events.process; "Registry Events" se events.registry; "Eventi di sicurezza" se events.security; "API Events" se events.api; "Alerts" se .alert | |
| _id | metadata.product_log_id | Valore di _id se non è ["", " ", "null", "N/A"] |
| _source.ecs.version | metadata.product_version | Valore copiato direttamente |
| _source.network.type | network.application_protocol_version | Valore copiato direttamente |
| _source.network.transport | network.ip_protocol | Impostato su "TCP" se corrisponde a (?i)tcp; "UDP" se (?i)udp; "ICMP" se (?i)icmp; altrimenti "UNKNOWN_IP_PROTOCOL" |
| _source.destination.as.organization.name | network.organization_name | Valore copiato direttamente |
| _source.Endpoint.policy.applied.artifacts.global.identifiers | observer.file.names | Unito da _source.Endpoint.policy.applied.artifacts.global.identifiers |
| _source.Endpoint.policy.applied.artifacts.global.version, _source.Endpoint.policy.applied.artifacts.global.snapshot | observer.resource.attribute.labels | Uniti con oggetti etichetta contenenti valori dei campi elencati |
| _source.Endpoint.policy.applied.artifacts.user.version | observer.user.attribute.labels | Unito all'oggetto etichetta contenente il valore di _source.Endpoint.policy.applied.artifacts.user.version |
| _source.host.os.full | principal.asset.hardware.cpu_platform | Valore copiato direttamente |
| _source.host.id | principal.asset.hardware.serial_number | Valore copiato direttamente |
| _source.host.name | principal.asset.hostname | Valore copiato direttamente |
| _source.host.ip | principal.asset.ip | Unito da _source.host.ip |
| _source.host.os.type | principal.asset.platform_software.platform | Impostato su "WINDOWS" se corrisponde a (?i)windows; "LINUX" se (?i)linux; "MAC" se (?i)mac; "IOS" se (?i)ios; altrimenti "UNKNOWN_PLATFORM" |
| _source.host.os.kernel | principal.asset.platform_software.platform_patch_level | Valore copiato direttamente |
| _source.event.created | principal.domain.creation_time | Conversione eseguita utilizzando il filtro della data con i formati ISO8601, yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSSSSZ, yyyy-MM-ddTHH:mm:ss.SSSZ, yyyy-MM-ddTHH:mm:ssZ |
| _source.user.domain | principal.domain.name | Valore copiato direttamente |
| _source.process.thread.capabilities.effective | principal.file.capabilities_tags | Unito da _source.process.thread.capabilities.effective |
| _source.process.executable | principal.file.full_path | Valore copiato direttamente |
| _source.process.hash.md5 | principal.file.md5 | Valore copiato direttamente |
| _source.file.name | principal.file.names | Unito da _source.file.name |
| _source.process.hash.sha1 | principal.file.sha1 | Valore copiato direttamente |
| _source.process.hash.sha256 | principal.file.sha256 | Valore copiato direttamente |
| _source.host.hostname | principal.hostname | Valore copiato direttamente |
| _source.host.ip | principal.ip | Unito da _source.host.ip |
| _source.host.mac | principal.mac | Unito da _source.host.mac dopo aver sostituito - con : |
| _source.host.os.Ext.variant | principal.platform_version | Valore copiato direttamente |
| _source.source.port | principal.port | Convertito in stringa e poi in numero intero |
| _source.process.command_line, _source.process.name | principal.process.command_line | Valore di _source.process.command_line se non vuoto, altrimenti di _source.process.name |
| _source.process.thread.capabilities.permitted | principal.process.file.capabilities_tags | Unito da _source.process.thread.capabilities.permitted |
| _source.process.executable | principal.process.file.full_path | Valore copiato direttamente |
| _source.process.hash.md5 | principal.process.file.md5 | Valore copiato direttamente |
| _source.process.hash.sha1 | principal.process.file.sha1 | Valore copiato direttamente |
| _source.process.hash.sha256 | principal.process.file.sha256 | Valore copiato direttamente |
| _source.process.parent.executable | principal.process.parent_process.file.full_path | Valore copiato direttamente |
| _source.process.pid | principal.process.pid | Convertito in stringa e poi copiato |
| _source.process.Ext.api.name | principal.resource.attribute.labels | Unito all'oggetto etichetta contenente il valore di _source.process.Ext.api.name |
| _source.event.code | principal.resource.product_object_id | Valore copiato direttamente |
| _source.group.name | principal.user.group_identifiers | Unito da _source.group.name |
| _source.user.name | principal.user.userid | Valore copiato direttamente |
| _source.user.id | principal.user.windows_sid | Valore di _source.user.id se corrisponde alla regex ^S-\\d-(\\\\d+-){1,14}\\\\d+$ |
| _source.file.Ext.malware_signature.primary.signature.hash.sha256 | security_result.about.file.sha256 | Valore copiato direttamente |
| _source.event.outcome | security_result.action | Valore di _source.event.outcome, in lettere maiuscole, quindi impostato su ALLOW se in [SUCCESS, ALLOW], BLOCK se in [FAILURE, DENY, SKIPPED, RATE_LIMIT], UNKNOWN_ACTION se UNKNOWN |
| _source.event.action | security_result.action_details | Valore copiato direttamente |
| _source.destination.geo.region_iso_code | security_result.associations | Unito all'oggetto contenente il nome di _source.destination.geo.region_iso_code |
| _source.kibana.alert.rule.parameters.threat.tactic.id, _source.kibana.alert.rule.parameters.threat.tactic.name | security_result.attack_details.tactics | Unito all'oggetto contenente l'ID e il nome dei campi elencati |
| _source.kibana.alert.rule.parameters.threat.technique.id, _source.kibana.alert.rule.parameters.threat.technique.name, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.id, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.name | security_result.attack_details.techniques | Unito a oggetti contenenti id, name, subtechnique_id, subtechnique_name dai campi elencati |
| _source.event.category | security_result.category_details | Unito da _source.event.category |
| _source.kibana.alert.rule.description | security_result.description | Valore copiato direttamente |
| _source.event.kind, _source.file.Ext.malware_signature.all_names, _source.file.Ext.malware_signature.identifier, _source.event.risk_score, _source.threat.tactic.reference, _source.threat.technique.reference, _source.threat.technique.subtechnique.reference | security_result.detection_fields | Uniti con oggetti etichetta contenenti valori dei campi elencati |
| _source.rule.id, _source.kibana.alert.rule.rule_id | security_result.rule_id | Valore di _source.rule.id se non vuoto, altrimenti di _source.kibana.alert.rule.rule_id |
| _source.rule.name, _source.kibana.alert.rule.name | security_result.rule_name | Valore di _source.rule.name se non è vuoto, altrimenti di _source.kibana.alert.rule.name |
| _source.rule.ruleset | security_result.rule_set | Valore copiato direttamente |
| security_result.severity | Impostato su "LOW"; se _index corrisponde a .alert, impostato su "HIGH"; se _source.kibana.alert.rule.parameters.severity corrisponde a (?i)LOW, impostato su "LOW" | |
| _source.message | security_result.summary | Valore copiato direttamente |
| _source.file.Ext.malware_signature.primary.signature.id | security_result.threat_id | Valore copiato direttamente |
| _source.file.Ext.malware_signature.primary.signature.name | security_result.threat_name | Valore copiato direttamente |
| _source.source.address, _source.source.ip | src.asset.ip | Unito da _source.source.address e _source.source.ip |
| _source.source.address, _source.source.ip | src.ip | Unito da _source.source.address e _source.source.ip |
| _source.host.name | target.asset.hostname | Valore copiato direttamente |
| _source.destination.address, _source.destination.ip | target.asset.ip | Unito da _source.destination.address e _source.destination.ip |
| _source.file.path, _source.dll.path, _source.process.executable, _source.Target.process.executable | target.file.full_path | Valore di _source.file.path se events.file, _source.dll.path se events.library, _source.process.executable se events.process o events.api, _source.Target.process.executable se events.api |
| _source.dll.hash.md5, _source.process.hash.md5 | target.file.md5 | Valore da _source.dll.hash.md5 se events.library, _source.process.hash.md5 se .alert |
| _source.dll.name, _source.process.name | target.file.names | Unito da _source.dll.name se events.library, _source.process.name se .alert |
| _source.dll.hash.sha1, _source.process.hash.sha1 | target.file.sha1 | Valore da _source.dll.hash.sha1 se events.library, _source.process.hash.sha1 se .alert |
| _source.dll.hash.sha256, _source.process.hash.sha256 | target.file.sha256 | Valore ottenuto da _source.dll.hash.sha256 se events.library, _source.process.hash.sha256 se .alert |
| _source.host.name | target.hostname | Valore copiato direttamente |
| _source.destination.address, _source.destination.ip | target.ip | Unito da _source.destination.address e _source.destination.ip |
| _source.destination.geo.city_name | target.location.city | Valore copiato direttamente |
| _source.destination.geo.country_name | target.location.country_or_region | Valore copiato direttamente |
| _source.destination.geo.continent_name | target.location.name | Valore copiato direttamente |
| _source.destination.geo.location.lat | target.location.region_coordinates.latitude | Convertito in stringa e poi in numero in virgola mobile |
| _source.destination.geo.location.lon | target.location.region_coordinates.longitude | Convertito in stringa e poi in numero in virgola mobile |
| _source.destination.geo.region_name | target.location.state | Valore copiato direttamente |
| _source.data_stream.namespace | target.namespace | Valore copiato direttamente |
| _source.destination.port | target.port | Convertito in stringa e poi in numero intero |
| _source.process.command_line | target.process.command_line | Valore copiato direttamente |
| _source.process.executable | target.process.file.full_path | Valore copiato direttamente |
| _source.process.hash.md5 | target.process.file.md5 | Valore copiato direttamente |
| _source.process.hash.sha1 | target.process.file.sha1 | Valore copiato direttamente |
| _source.process.hash.sha256 | target.process.file.sha256 | Valore copiato direttamente |
| _source.process.name | target.process.file.names | Unito da _source.process.name |
| _source.registry.key | target.registry.registry_key | Valore copiato direttamente |
| _source.registry.path | target.registry.registry_value_data | Valore copiato direttamente |
| _source.registry.value | target.registry.registry_value_name | Valore copiato direttamente |
| _source.data_stream.dataset | target.resource.name | Valore copiato direttamente |
| _source.process.entity_id | target.user.userid | Valore copiato direttamente |
| metadata.product_name | Impostato su "Elastic Defend" | |
| metadata.vendor_name | Impostato su "Elastic" | |
_source.host.hostname |
event.idm.read_only_udm.intermediary.hostname |
Mappato dal log delle modifiche |
_source.process.pid |
event.idm.read_only_udm.principal.process.pid |
Mappato dal log delle modifiche |
_source.process.command_line |
event.idm.read_only_udm.principal.process.command_line |
Mappato dal log delle modifiche |
_source.process.name |
event.idm.read_only_udm.principal.process.file.names |
Mappato dal log delle modifiche |
_source.process.parent.executable |
event.idm.read_only_udm.principal.process.parent_process.file.full_path |
Mappato dal log delle modifiche |
_source.process.Ext.token.integrity_level_name |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappato dal log delle modifiche |
_source.process.Ext.code_signature |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappato dal log delle modifiche |
_source.process.Ext.ancestry |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappato dal log delle modifiche |
_source.process.Ext.protection |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappato dal log delle modifiche |
_source.process.Ext.authentication_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
Mappato dal log delle modifiche |
_source.winlog.event_data.PrivilegeList |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
Privilege List |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
_source.event.ingested |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
Ingested |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
_source.event.provider |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
Provider |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
_source.user.name |
event.idm.read_only_udm.principal.user.userid |
Mappato dal log delle modifiche |
_source.event.action |
event.idm.read_only_udm.security_result.action_details |
Mappato dal log delle modifiche |
_source.host.domain |
event.idm.read_only_udm.principal.administrative_domain |
Mappato dal log delle modifiche |
_source.event.sequence |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
_source.kibana.alert.rule.description |
event.idm.read_only_udm.security_result.description |
Mappato dal log delle modifiche |
_source.kibana.alert.rule.rule_id |
event.idm.read_only_udm.security_result.rule_id |
Mappato dal log delle modifiche |
_source.kibana.alert.rule.name |
event.idm.read_only_udm.security_result.rule_name |
Mappato dal log delle modifiche |
_source.kibana.alert.rule.parameters.severity |
event.idm.read_only_udm.security_result.severity |
Mappato dal log delle modifiche |
_source.kibana.alert.rule.parameters.threat.tactic.id |
event.idm.read_only_udm.security_result.attack_details.tactics |
Mappato dal log delle modifiche |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.