Raccogliere i log di Elastic Defend

Supportato in:

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 offre funzionalità di prevenzione, rilevamento e risposta con visibilità approfondita nei 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 implementato
  • Autorizzazioni per creare chiavi API in Elasticsearch (privilegio del cluster manage_security, manage_api_key o manage_own_api_key)
  • Connettività di rete da Cloud Run Functions al cluster Elasticsearch

Creare un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio elastic-defend-logs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, doppia regione, più regioni)
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Raccogliere le credenziali di Elastic Defend

Per consentire alla funzione Cloud Run di recuperare gli eventi di Elastic Defend, devi creare una chiave API con autorizzazioni di lettura sui flussi di dati logs-endpoint.

Creare una chiave API utilizzando Kibana

  1. Accedi a Kibana.
  2. Nel menu di navigazione o nel campo di ricerca globale, vai a Stack Management > Chiavi API.
  3. Fai clic su Crea chiave API.
  4. Nel campo Nome, inserisci Google SecOps Cloud Storage Integration.
  5. Nel campo Scadenza, imposta facoltativamente una data di scadenza. Per impostazione predefinita, le chiavi API non scadono.
  6. Fai clic su Controlla privilegi di sicurezza.
  7. Nella sezione Indici, fai clic su Aggiungi privilegio di indice.
  8. Configura il privilegio di indice:
    • Indici: inserisci logs-endpoint.*
    • Privilegi: seleziona lettura.
  9. Lascia vuota la sezione Privilegi cluster (non sono necessari privilegi cluster).
  10. 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:

  • Codificata: la chiave API codificata in base64 (ad esempio, VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)

    Devi anche registrare l'URL dell'endpoint Elasticsearch:

  • Per Elastic Cloud: l'endpoint viene visualizzato in Cloud Console nella sezione Elasticsearch del 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).

Creare la chiave API utilizzando gli strumenti per sviluppatori (metodo alternativo)

In alternativa, puoi creare una chiave API utilizzando Kibana Dev Tools:

  1. Accedi a Kibana.
  2. Vai a Gestione > Strumenti per sviluppatori.
  3. 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"
      }
    }
    
  4. La risposta contiene le credenziali della chiave API:

    {
      "id": "VuaCfGcBCdbkQm-e5aOx",
      "name": "Google SecOps Cloud Storage Integration",
      "api_key": "ui2lp2axTNmsyakw9tvNnw",
      "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
    }
    
  5. 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.

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service account.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome del service account: inserisci elastic-defend-collector
    • Descrizione service account: inserisci Service account for Elastic Defend log collection to GCS
  4. Fai clic su Crea e continua.
  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi i seguenti ruoli:
    1. Fai clic su Seleziona un ruolo e seleziona Amministratore oggetti di archiviazione (roles/storage.objectAdmin).
    2. Fai clic su Aggiungi un altro ruolo e seleziona Cloud Run Invoker (roles/run.invoker).
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Crea argomento Pub/Sub

Crea un argomento Pub/Sub per attivare la funzione Cloud Run da Cloud Scheduler.

  1. Nella console Google Cloud, vai a Pub/Sub > Argomenti.
  2. Fai clic su Crea argomento.
  3. Fornisci i seguenti dettagli di configurazione:
    • ID argomento: inserisci elastic-defend-trigger
    • Aggiungi una sottoscrizione predefinita: lascia selezionata l'opzione
  4. 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

  1. Nella console Google Cloud, vai a Cloud Run Functions.
  2. Fai clic su Crea funzione.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Ambiente 2ª gen.
    Nome della funzione elastic-defend-to-gcs
    Regione Seleziona la stessa regione del bucket GCS
    Tipo di trigger Cloud Pub/Sub
    Argomento Cloud Pub/Sub Seleziona elastic-defend-trigger
    Memoria allocata 512 MiB (aumenta per volumi di dati di grandi dimensioni)
    Timeout 540 secondi
    Service account di runtime Seleziona elastic-defend-collector
  4. Fai clic su Avanti.

Aggiungere variabili di ambiente

  • Aggiungi le seguenti variabili di ambiente nella sezione Impostazioni di runtime, build, connessioni e sicurezza:

    Variabile Valore
    GCS_BUCKET Nome del bucket GCS (ad esempio, elastic-defend-logs)
    GCS_PREFIX Prefisso per i file di log (ad esempio, elastic-defend)
    STATE_KEY Nome del file di stato (ad esempio, state.json)
    ES_HOST URL di Elasticsearch (ad esempio, https://my-deployment.es.us-central1.gcp.cloud.es.io:443)
    ES_API_KEY Chiave API codificata dal passaggio di creazione delle credenziali
    MAX_RECORDS Numero massimo di record per esecuzione (ad esempio, 100000)
    PAGE_SIZE Numero di record per richiesta di ricerca (ad esempio, 1000)
    LOOKBACK_HOURS Ore da esaminare alla prima esecuzione (ad esempio, 24)

Aggiungi il codice per la funzione

  1. Seleziona Python 3.11 come Runtime.
  2. Imposta il punto di ingresso su main.
  3. Nella sezione Codice sorgente, seleziona Editor incorporato.
  4. Sostituisci i contenuti di main.py con 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"
    
  5. Sostituisci i contenuti di requirements.txt come segue:

    functions-framework==3.*
    google-cloud-storage==2.*
    requests==2.*
    
  6. Fai clic su Esegui il deployment.

  7. 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.

  1. Nella console Google Cloud, vai a Cloud Scheduler.
  2. Fai clic su Crea job.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome elastic-defend-scheduler
    Regione Seleziona la stessa regione della funzione Cloud Run
    Frequenza */5 * * * * (ogni 5 minuti)
    Fuso orario Seleziona il tuo fuso orario (ad esempio, UTC)
  4. Fai clic su Continua.

  5. Nella sezione Configura l'esecuzione:

    • Tipo target: seleziona Pub/Sub.
    • Argomento Cloud Pub/Sub: seleziona elastic-defend-trigger
    • Corpo del messaggio: inserisci {"run": true}
  6. 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'email del account di servizio

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Elastic Defend Events).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Elastic Defend come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzata un'email univoca del account di servizio, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

Configurare il feed

  1. Fai clic su Avanti.
  2. Specifica i valori per i seguenti parametri di input:

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://elastic-defend-logs/elastic-defend/
      

      Sostituisci elastic-defend-logs con 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 file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.

    • Età massima del file: includi i file modificati nell'ultimo numero di 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

  3. Fai clic su Avanti.

  4. Controlla la nuova configurazione del feed 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 Visualizzatore oggetti Storage nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio elastic-defend-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
_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 Unito agli 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 Convertito utilizzando il filtro per data con i formati ISO8601, aaaa-MM-ggTHH:mm:ss.SSSSSSSSSZ, aaaa-MM-ggTHH:mm:ss.SSSSSSZ, aaaa-MM-ggTHH:mm:ss.SSSZ, aaaa-MM-ggTHH:mm:ssZ
metadata.event_type Impostato in base alle condizioni index, event.action e has*
metadata.log_type Imposta su "ELASTIC_DEFEND"
metadata.product_event_type Imposta "Eventi file" se _index ~ events.file; "Eventi libreria" se events.library; "Eventi di rete" se events.network; "Eventi processo" se events.process; "Eventi registro" se events.registry; "Eventi di sicurezza" se events.security; "Eventi API" se events.api; "Avvisi" se .alert
_id metadata.product_log_id Valore di _id se non presente in ["", " ", "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 Imposta 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 Unito agli 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 Convertito utilizzando il filtro per data con i formati ISO8601, aaaa-MM-ggTHH:mm:ss.SSSSSSSSSZ, aaaa-MM-ggTHH:mm:ss.SSSSSSZ, aaaa-MM-ggTHH:mm:ss.SSSZ, aaaa-MM-ggTHH: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, convertito in maiuscolo, 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 da _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 ID e nome dai 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 agli oggetti contenenti id, nome, subtechnique_id, subtechnique_name dei 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 Unito agli 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 Imposta su "LOW"; se _index corrisponde a .alert, imposta su "HIGH"; se _source.kibana.alert.rule.parameters.severity corrisponde a (?i)LOW, imposta 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 di _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 di _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 di _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 float
_source.destination.geo.location.lon target.location.region_coordinates.longitude Convertito in stringa e poi in float
_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 "Elastico"

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.