Elastic Defend-Logs erfassen

Parserversion:5.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Elastic Defend-Logs mit Google Cloud Storage V2 und einer Cloud Run-Funktion in Google Security Operations aufnehmen.

Elastic Defend ist eine EDR-Lösung (Endpoint Detection and Response) in Elastic Security, die Funktionen zur Prävention, Erkennung und Reaktion mit umfassender Transparenz für Windows-, macOS- und Linux-Betriebssysteme bietet. Es überwacht die Ausführung von Prozessen, Dateiaktivitäten, Netzwerkverbindungen, Registrierungsänderungen und das Laden von Bibliotheken, um Bedrohungen auf Endpunktebene zu erkennen und zu verhindern. Daten werden in Elasticsearch gespeichert und können über die Elasticsearch Search API abgerufen werden.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Ein Google Cloud-Projekt mit den folgenden aktivierten APIs:
    • Cloud Storage
    • Cloud Run-Funktionen
    • Cloud Scheduler
    • Pub/Sub
    • IAM
  • Zugriff auf einen Elasticsearch-Cluster, in dem Elastic Defend bereitgestellt ist
  • Berechtigungen zum Erstellen von API-Schlüsseln in Elasticsearch (Clusterberechtigung manage_security, manage_api_key oder manage_own_api_key)
  • Netzwerkverbindung von Cloud Run Functions zu Ihrem Elasticsearch-Cluster

Google Cloud Storage-Bucket erstellen

  1. Öffnen Sie die Google Cloud Console.
  2. Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
  3. Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
  4. Klicken Sie auf Bucket erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. elastic-defend-logs.
    Standorttyp Wählen Sie die Option aus, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region).
    Standort Wählen Sie den Speicherort aus, z. B. us-central1.
    Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird)
    Zugriffskontrolle Einheitlich (empfohlen)
    Schutztools Optional: Objektversionierung oder Aufbewahrungsrichtlinie aktivieren
  6. Klicken Sie auf Erstellen.

Elastic Defend-Anmeldedaten erfassen

Damit die Cloud Run-Funktion Elastic Defend-Ereignisse abrufen kann, müssen Sie einen API-Schlüssel mit Leseberechtigungen für die logs-endpoint-Datenstreams erstellen.

API-Schlüssel mit Kibana erstellen

  1. Melden Sie sich in Kibana an.
  2. Rufen Sie im Navigationsmenü oder im globalen Suchfeld Stack Management > API-Schlüssel auf.
  3. Klicken Sie auf API-Schlüssel erstellen.
  4. Geben Sie im Feld Name Google SecOps Cloud Storage Integration ein.
  5. Legen Sie optional im Feld Ablaufdatum ein Ablaufdatum fest. API-Schlüssel laufen standardmäßig nicht ab.
  6. Klicken Sie auf Sicherheitsberechtigungen verwalten.
  7. Klicken Sie im Bereich Indizes auf Indexberechtigung hinzufügen.
  8. Indexberechtigung konfigurieren:
    • Indizes: Geben Sie logs-endpoint.* ein.
    • Berechtigungen: Wählen Sie Lesen aus.
  9. Lassen Sie den Abschnitt Clusterberechtigungen leer (es sind keine Clusterberechtigungen erforderlich).
  10. Klicken Sie auf API-Schlüssel erstellen.

API-Anmeldedaten aufzeichnen

Nachdem Sie den API-Schlüssel erstellt haben, werden Ihre Anmeldedaten in einem Dialogfeld angezeigt:

  • Codiert: Der base64-codierte API-Schlüssel (z. B. VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)

    Sie müssen auch die Elasticsearch-Endpunkt-URL aufzeichnen:

  • Für Elastic Cloud: Der Endpunkt wird in der Cloud Console im Abschnitt Elasticsearch Ihrer Bereitstellung angezeigt (z. B. https://my-deployment.es.us-central1.gcp.cloud.es.io:443).

  • Für selbstverwaltete Elasticsearch-Instanzen: Verwenden Sie den Hostnamen oder die IP-Adresse Ihres Elasticsearch-Clusters mit Port (z. B. https://elasticsearch.example.com:9200).

API-Schlüssel mit Entwicklertools erstellen (alternative Methode)

Alternativ können Sie einen API-Schlüssel mit Kibana Dev Tools erstellen:

  1. Melden Sie sich in Kibana an.
  2. Rufen Sie Verwaltung > Entwicklertools auf.
  3. Führen Sie in der Console den folgenden Befehl aus:

    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. Die Antwort enthält Ihre API-Schlüsselanmeldedaten:

    {
      "id": "VuaCfGcBCdbkQm-e5aOx",
      "name": "Google SecOps Cloud Storage Integration",
      "api_key": "ui2lp2axTNmsyakw9tvNnw",
      "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
    }
    
  5. Kopieren und speichern Sie den codierten Wert. Dies ist der base64-codierte API-Schlüssel, den Sie für die Authentifizierung verwenden.

Dienstkonto erstellen

Erstellen Sie ein dediziertes Dienstkonto für die Cloud Run-Funktion.

  1. Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf.
  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie elastic-defend-collector ein.
    • Beschreibung des Dienstkontos: Geben Sie Service account for Elastic Defend log collection to GCS ein.
  4. Klicken Sie auf Erstellen und fortfahren.
  5. Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
    1. Klicken Sie auf Rolle auswählen und wählen Sie Storage Object Admin (roles/storage.objectAdmin) aus.
    2. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Cloud Run Invoker (roles/run.invoker) aus.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Fertig.

Pub/Sub-Thema erstellen

Pub/Sub-Thema erstellen, um die Cloud Run-Funktion über Cloud Scheduler auszulösen

  1. Rufen Sie in der Google Cloud Console Pub/Sub > Themen auf.
  2. Klicken Sie auf Thema erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Themen-ID: Geben Sie elastic-defend-trigger ein.
    • Standardabo hinzufügen: Häkchen beibehalten
  4. Klicken Sie auf Erstellen.

Cloud Run-Funktion erstellen

Cloud Run-Funktion erstellen, die Ereignisse aus Elasticsearch abruft und in GCS schreibt

Funktion erstellen

  1. Rufen Sie in der Google Cloud Console Cloud Run-Funktionen auf.
  2. Klicken Sie auf Funktion erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Umgebung 2. Generation
    Funktionsname elastic-defend-to-gcs
    Region Wählen Sie dieselbe Region wie für Ihren GCS-Bucket aus.
    Triggertyp Cloud Pub/Sub
    Cloud Pub/Sub-Thema elastic-defend-trigger auswählen
    Zugewiesener Arbeitsspeicher 512 MiB (bei großen Datenmengen wird der Wert erhöht)
    Zeitlimit 540 Sekunden
    Laufzeitdienstkonto elastic-defend-collector auswählen
  4. Klicken Sie auf Weiter.

Umgebungsvariablen hinzufügen

  • Fügen Sie im Abschnitt Laufzeit, Build, Verbindungen und Sicherheitseinstellungen die folgenden Umgebungsvariablen hinzu:

    Variable Wert
    GCS_BUCKET Name Ihres GCS-Buckets (z. B. elastic-defend-logs)
    GCS_PREFIX Präfix für Logdateien (z. B. elastic-defend)
    STATE_KEY Name der Statusdatei (z. B. state.json)
    ES_HOST Elasticsearch-URL (z. B. https://my-deployment.es.us-central1.gcp.cloud.es.io:443)
    ES_API_KEY Codierter API-Schlüssel aus dem Schritt zum Erstellen von Anmeldedaten
    MAX_RECORDS Maximale Anzahl von Datensätzen pro Ausführung (z. B. 100000)
    PAGE_SIZE Anzahl der Datensätze pro Suchanfrage (z. B. 1000)
    LOOKBACK_HOURS Stunden, die für den ersten Lauf berücksichtigt werden sollen (z. B. 24)

Funktionscode hinzufügen

  1. Wählen Sie Python 3.11 als Laufzeit aus.
  2. Legen Sie den Einstiegspunkt auf main fest.
  3. Wählen Sie im Abschnitt Quellcode die Option Inline-Editor aus.
  4. Ersetzen Sie den Inhalt von main.py durch den folgenden Code:

    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. Ersetzen Sie den Inhalt von requirements.txt durch Folgendes:

    functions-framework==3.*
    google-cloud-storage==2.*
    requests==2.*
    
  6. Klicken Sie auf Bereitstellen.

  7. Warten Sie, bis die Bereitstellung abgeschlossen ist.

Cloud Scheduler-Job erstellen

Erstellen Sie einen Cloud Scheduler-Job, um die Cloud Run-Funktion regelmäßig auszulösen.

  1. Rufen Sie in der Google Cloud Console Cloud Scheduler auf.
  2. Klicken Sie auf Job erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Name elastic-defend-scheduler
    Region Wählen Sie dieselbe Region wie für Ihre Cloud Run-Funktion aus.
    Frequenz */5 * * * * (alle 5 Minuten)
    Zeitzone Wählen Sie Ihre Zeitzone aus (z. B. UTC).
  4. Klicken Sie auf Weiter.

  5. Im Abschnitt Ausführung konfigurieren:

    • Zieltyp: Wählen Sie Pub/Sub aus.
    • Cloud Pub/Sub-Thema: Wählen Sie elastic-defend-trigger aus.
    • Inhalt der Nachricht: Geben Sie {"run": true} ein.
  6. Klicken Sie auf Erstellen.

Google SecOps-Dienstkonto abrufen und Feed konfigurieren

Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.

E‑Mail-Adresse des Dienstkontos abrufen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Elastic Defend Events.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie Elastic Defend als Log type (Protokolltyp) aus.
  7. Klicken Sie auf Dienstkonto abrufen. Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Kopieren Sie diese E‑Mail-Adresse für den nächsten Schritt.

Feed konfigurieren

  1. Klicken Sie auf Weiter.
  2. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:

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

      Ersetzen Sie elastic-defend-logs durch den Namen Ihres GCS-Buckets.

    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:

      • Nie: Löscht nach Übertragungen nie Dateien (empfohlen für Tests).
      • Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.

    • Höchstalter der Datei: Dateien einbeziehen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage)

    • Asset-Namespace: Der Asset-Namespace

    • Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll

  3. Klicken Sie auf Weiter.

  4. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren

Das Google SecOps-Dienstkonto benötigt die Rolle Storage Object Viewer für Ihren GCS-Bucket.

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets (z. B. elastic-defend-logs).
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
    • Rollen zuweisen: Wählen Sie Storage Object Viewer aus.
  6. Klicken Sie auf Speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
_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 Zusammengeführt mit Label-Objekten, die Werte aus den aufgeführten Feldern enthalten
_source.process.Ext.session_info.logon_type extensions.auth.auth_details Wert direkt kopiert
_source.host.os.full hardware.cpu_platform Wert direkt kopiert
_source.host.id hardware.serial_number Wert direkt kopiert
_source.rule.description metadata.description Wert direkt kopiert
_source.@timestamp metadata.event_timestamp Konvertiert mit Datumsfilter mit den Formaten ISO8601, JJJJ-MM-TTTHH:mm:ss.SSSSSSSSSZ, JJJJ-MM-TTTHH:mm:ss.SSSSSSZ, JJJJ-MM-TTTHH:mm:ss.SSSZ, JJJJ-MM-TTTHH:mm:ssZ
metadata.event_type Festgelegt auf Grundlage der Bedingungen index, event.action und has*
metadata.log_type Auf „ELASTIC_DEFEND“ festgelegt
metadata.product_event_type Auf „File Events“ (Dateiereignisse) festlegen, wenn _index ~ events.file; „Library Events“ (Bibliotheksereignisse), wenn events.library; „Network Events“ (Netzwerkereignisse), wenn events.network; „Process Events“ (Prozessereignisse), wenn events.process; „Registry Events“ (Registrierungsereignisse), wenn events.registry; „Security Events“ (Sicherheitsereignisse), wenn events.security; „API Events“ (API-Ereignisse), wenn events.api; „Alerts“ (Benachrichtigungen), wenn .alert
_id metadata.product_log_id Wert aus _id, wenn nicht in ["", " ", "null", "N/A"]
_source.ecs.version metadata.product_version Wert direkt kopiert
_source.network.type network.application_protocol_version Wert direkt kopiert
_source.network.transport network.ip_protocol Auf „TCP“ festgelegt, wenn (?i)tcp übereinstimmt; „UDP“, wenn (?i)udp übereinstimmt; „ICMP“, wenn (?i)icmp übereinstimmt; andernfalls „UNKNOWN_IP_PROTOCOL“
_source.destination.as.organization.name network.organization_name Wert direkt kopiert
_source.Endpoint.policy.applied.artifacts.global.identifiers observer.file.names Zusammengeführt aus _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 Zusammengeführt mit Label-Objekten, die Werte aus den aufgeführten Feldern enthalten
_source.Endpoint.policy.applied.artifacts.user.version observer.user.attribute.labels Zusammengeführt mit dem Label-Objekt, das den Wert aus _source.Endpoint.policy.applied.artifacts.user.version enthält
_source.host.os.full principal.asset.hardware.cpu_platform Wert direkt kopiert
_source.host.id principal.asset.hardware.serial_number Wert direkt kopiert
_source.host.name principal.asset.hostname Wert direkt kopiert
_source.host.ip principal.asset.ip Zusammengeführt aus _source.host.ip
_source.host.os.type principal.asset.platform_software.platform Auf „WINDOWS“ festgelegt, wenn (?i)windows zutrifft; „LINUX“, wenn (?i)linux zutrifft; „MAC“, wenn (?i)mac zutrifft; „IOS“, wenn (?i)ios zutrifft; andernfalls „UNKNOWN_PLATFORM“
_source.host.os.kernel principal.asset.platform_software.platform_patch_level Wert direkt kopiert
_source.event.created principal.domain.creation_time Konvertiert mit Datumsfilter mit den Formaten ISO8601, JJJJ-MM-TTTHH:mm:ss.SSSSSSSSSZ, JJJJ-MM-TTTHH:mm:ss.SSSSSSZ, JJJJ-MM-TTTHH:mm:ss.SSSZ, JJJJ-MM-TTTHH:mm:ssZ
_source.user.domain principal.domain.name Wert direkt kopiert
_source.process.thread.capabilities.effective principal.file.capabilities_tags Zusammengeführt aus _source.process.thread.capabilities.effective
_source.process.executable principal.file.full_path Wert direkt kopiert
_source.process.hash.md5 principal.file.md5 Wert direkt kopiert
_source.file.name principal.file.names Zusammengeführt aus _source.file.name
_source.process.hash.sha1 principal.file.sha1 Wert direkt kopiert
_source.process.hash.sha256 principal.file.sha256 Wert direkt kopiert
_source.host.hostname principal.hostname Wert direkt kopiert
_source.host.ip principal.ip Zusammengeführt aus _source.host.ip
_source.host.mac principal.mac Zusammengeführt aus _source.host.mac nach dem Ersetzen von „-“ durch „:“
_source.host.os.Ext.variant principal.platform_version Wert direkt kopiert
_source.source.port principal.port In String und dann in Ganzzahl konvertiert
_source.process.command_line, _source.process.name principal.process.command_line Wert aus „_source.process.command_line“, falls nicht leer, andernfalls aus „_source.process.name“
_source.process.thread.capabilities.permitted principal.process.file.capabilities_tags Zusammengeführt aus _source.process.thread.capabilities.permitted
_source.process.executable principal.process.file.full_path Wert direkt kopiert
_source.process.hash.md5 principal.process.file.md5 Wert direkt kopiert
_source.process.hash.sha1 principal.process.file.sha1 Wert direkt kopiert
_source.process.hash.sha256 principal.process.file.sha256 Wert direkt kopiert
_source.process.parent.executable principal.process.parent_process.file.full_path Wert direkt kopiert
_source.process.pid principal.process.pid In String konvertiert und dann kopiert
_source.process.Ext.api.name principal.resource.attribute.labels Wird mit dem Label-Objekt zusammengeführt, das den Wert aus _source.process.Ext.api.name enthält.
_source.event.code principal.resource.product_object_id Wert direkt kopiert
_source.group.name principal.user.group_identifiers Zusammengeführt aus _source.group.name
_source.user.name principal.user.userid Wert direkt kopiert
_source.user.id principal.user.windows_sid Wert aus _source.user.id, wenn er mit dem regulären Ausdruck ^S-\\d-(\\\\d+-){1,14}\\\\d+$ übereinstimmt
_source.file.Ext.malware_signature.primary.signature.hash.sha256 security_result.about.file.sha256 Wert direkt kopiert
_source.event.outcome security_result.action Wert aus _source.event.outcome, in Großbuchstaben, dann auf ALLOW gesetzt, wenn in [SUCCESS, ALLOW], BLOCK, wenn in [FAILURE, DENY, SKIPPED, RATE_LIMIT], UNKNOWN_ACTION, wenn UNKNOWN
_source.event.action security_result.action_details Wert direkt kopiert
_source.destination.geo.region_iso_code security_result.associations Zusammengeführt mit Objekt mit dem Namen aus _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 Zusammengeführt mit Objekt, das ID und Namen aus den aufgeführten Feldern enthält
_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 Zusammengeführt mit Objekten, die „id“, „name“, „subtechnique_id“, „subtechnique_name“ aus den aufgeführten Feldern enthalten
_source.event.category security_result.category_details Zusammengeführt aus _source.event.category
_source.kibana.alert.rule.description security_result.description Wert direkt kopiert
_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 Zusammengeführt mit Label-Objekten, die Werte aus den aufgeführten Feldern enthalten
_source.rule.id, _source.kibana.alert.rule.rule_id security_result.rule_id Wert aus _source.rule.id, falls nicht leer, andernfalls aus _source.kibana.alert.rule.rule_id
_source.rule.name, _source.kibana.alert.rule.name security_result.rule_name Wert aus _source.rule.name, falls nicht leer, andernfalls aus _source.kibana.alert.rule.name
_source.rule.ruleset security_result.rule_set Wert direkt kopiert
security_result.severity Auf „LOW“ festlegen; wenn _index mit .alert übereinstimmt, auf „HIGH“ festlegen; wenn _source.kibana.alert.rule.parameters.severity mit (?i)LOW übereinstimmt, auf „LOW“ festlegen
_source.message security_result.summary Wert direkt kopiert
_source.file.Ext.malware_signature.primary.signature.id security_result.threat_id Wert direkt kopiert
_source.file.Ext.malware_signature.primary.signature.name security_result.threat_name Wert direkt kopiert
_source.source.address, _source.source.ip src.asset.ip Zusammengeführt aus _source.source.address und _source.source.ip
_source.source.address, _source.source.ip src.ip Zusammengeführt aus _source.source.address und _source.source.ip
_source.host.name target.asset.hostname Wert direkt kopiert
_source.destination.address, _source.destination.ip target.asset.ip Zusammengeführt aus _source.destination.address und _source.destination.ip
_source.file.path, _source.dll.path, _source.process.executable, _source.Target.process.executable target.file.full_path Wert aus „_source.file.path“ für „events.file“, „_source.dll.path“ für „events.library“, „_source.process.executable“ für „events.process“ oder „events.api“, „_source.Target.process.executable“ für „events.api“
_source.dll.hash.md5, _source.process.hash.md5 target.file.md5 Wert aus _source.dll.hash.md5, wenn events.library, _source.process.hash.md5, wenn .alert
_source.dll.name, _source.process.name target.file.names Zusammengeführt aus _source.dll.name, wenn events.library, _source.process.name, wenn .alert
_source.dll.hash.sha1, _source.process.hash.sha1 target.file.sha1 Wert aus _source.dll.hash.sha1, wenn events.library, _source.process.hash.sha1, wenn .alert
_source.dll.hash.sha256, _source.process.hash.sha256 target.file.sha256 Wert aus _source.dll.hash.sha256, wenn events.library, _source.process.hash.sha256, wenn .alert
_source.host.name target.hostname Wert direkt kopiert
_source.destination.address, _source.destination.ip target.ip Zusammengeführt aus _source.destination.address und _source.destination.ip
_source.destination.geo.city_name target.location.city Wert direkt kopiert
_source.destination.geo.country_name target.location.country_or_region Wert direkt kopiert
_source.destination.geo.continent_name target.location.name Wert direkt kopiert
_source.destination.geo.location.lat target.location.region_coordinates.latitude In String und dann in Float konvertiert
_source.destination.geo.location.lon target.location.region_coordinates.longitude In String und dann in Float konvertiert
_source.destination.geo.region_name target.location.state Wert direkt kopiert
_source.data_stream.namespace target.namespace Wert direkt kopiert
_source.destination.port target.port In String und dann in Ganzzahl konvertiert
_source.process.command_line target.process.command_line Wert direkt kopiert
_source.process.executable target.process.file.full_path Wert direkt kopiert
_source.process.hash.md5 target.process.file.md5 Wert direkt kopiert
_source.process.hash.sha1 target.process.file.sha1 Wert direkt kopiert
_source.process.hash.sha256 target.process.file.sha256 Wert direkt kopiert
_source.process.name target.process.file.names Zusammengeführt aus _source.process.name
_source.registry.key target.registry.registry_key Wert direkt kopiert
_source.registry.path target.registry.registry_value_data Wert direkt kopiert
_source.registry.value target.registry.registry_value_name Wert direkt kopiert
_source.data_stream.dataset target.resource.name Wert direkt kopiert
_source.process.entity_id target.user.userid Wert direkt kopiert
metadata.product_name Auf „Elastic Defend“ festgelegt
metadata.vendor_name Auf „Elastisch“ festgelegt
_source.host.hostname event.idm.read_only_udm.intermediary.hostname Aus dem Änderungsprotokoll zugeordnet
_source.process.pid event.idm.read_only_udm.principal.process.pid Aus dem Änderungsprotokoll zugeordnet
_source.process.command_line event.idm.read_only_udm.principal.process.command_line Aus dem Änderungsprotokoll zugeordnet
_source.process.name event.idm.read_only_udm.principal.process.file.names Aus dem Änderungsprotokoll zugeordnet
_source.process.parent.executable event.idm.read_only_udm.principal.process.parent_process.file.full_path Aus dem Änderungsprotokoll zugeordnet
_source.process.Ext.token.integrity_level_name event.idm.read_only_udm.principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
_source.process.Ext.code_signature event.idm.read_only_udm.principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
_source.process.Ext.ancestry event.idm.read_only_udm.principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
_source.process.Ext.protection event.idm.read_only_udm.principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
_source.process.Ext.authentication_id event.idm.read_only_udm.principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
_source.winlog.event_data.PrivilegeList event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
Privilege List event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
_source.event.ingested event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
Ingested event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
_source.event.provider event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
Provider event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
_source.user.name event.idm.read_only_udm.principal.user.userid Aus dem Änderungsprotokoll zugeordnet
_source.event.action event.idm.read_only_udm.security_result.action_details Aus dem Änderungsprotokoll zugeordnet
_source.host.domain event.idm.read_only_udm.principal.administrative_domain Aus dem Änderungsprotokoll zugeordnet
_source.event.sequence event.idm.read_only_udm.security_result.detection_fields Aus dem Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.description event.idm.read_only_udm.security_result.description Aus dem Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.rule_id event.idm.read_only_udm.security_result.rule_id Aus dem Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.name event.idm.read_only_udm.security_result.rule_name Aus dem Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.parameters.severity event.idm.read_only_udm.security_result.severity Aus dem Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.parameters.threat.tactic.id event.idm.read_only_udm.security_result.attack_details.tactics Aus dem Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten