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) innerhalb von Elastic Security, die Funktionen zur Prävention, Erkennung und Reaktion mit umfassender Transparenz für Windows-, macOS- und Linux-Betriebssysteme bietet. Es überwacht die Prozessausführung, Dateiaktivitäten, Netzwerkverbindungen, Registry-Änderungen und das Laden von Bibliotheken, um Bedrohungen auf Endpunktebene zu erkennen und zu verhindern. Die 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 mit bereitgestelltem Elastic Defend
  • 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, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region).
    Standort Wählen Sie den Standort aus (z. B. us-central1).
    Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird)
    Zugriffssteuerung Einheitlich (empfohlen)
    Schutztools Optional: Objektversionsverwaltung 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 im Feld Ablaufdatum optional ein Ablaufdatum fest. Standardmäßig laufen API-Schlüssel nicht ab.
  6. Klicken Sie auf Sicherheitsberechtigungen verwalten.
  7. Klicken Sie im Abschnitt Indices auf Add index privilege.
  8. Konfigurieren Sie die Indexberechtigung:
    • Indices: 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==)

    Außerdem müssen Sie die Elasticsearch-Endpunkt-URL notieren:

  • 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 selbstverwaltetes Elasticsearch: 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. Gehen Sie zu Verwaltung > Entwicklertools.
  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 die Anmeldedaten für Ihren API-Schlüssel:

    {
      "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 die Seite 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-Aufrufer (roles/run.invoker) aus.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Fertig.

Pub/Sub-Thema erstellen

Erstellen Sie ein Pub/Sub-Thema, 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: Lassen Sie das Häkchen gesetzt.
  4. Klicken Sie auf Erstellen.

Cloud Run-Funktion erstellen

Erstellen Sie eine Cloud Run-Funktion, die Ereignisse aus Elasticsearch abruft und in GCS schreibt.

Funktion erstellen

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

    Einstellung Wert
    Umgebung 2. Generation
    Name der Funktion 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 erhöhen)
    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 Protokolldateien (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 bei der ersten Ausführung zurückgeblickt werden sollen (z. B. 24)

Funktionscode hinzufügen

  1. Wählen Sie Python 3.11 als Laufzeit aus.
  2. Legen Sie für Einstiegspunkt den Wert 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 erfolgreich 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 Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die 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 Protokolltyp aus.
  7. Klicken Sie auf Dienstkonto abrufen. Eine eindeutige E-Mail-Adresse für das Dienstkonto wird angezeigt, z. B.:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Kopieren Sie diese E-Mail-Adresse, um sie im nächsten Schritt zu verwenden.

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 Löschoption aus:

      • Nie: Nach Übertragungen werden keine Dateien gelöscht (empfohlen für Tests).
      • Übertragene Dateien löschen: Dateien werden nach erfolgreicher Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach erfolgreicher Übertragung gelöscht.

    • Maximales Dateialter: Dateien einschließen, 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-Objekt-Betrachter 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 Labelobjekten, 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, 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 Wird basierend auf den Bedingungen index, event.action und has* festgelegt
metadata.log_type Auf „ELASTIC_DEFEND“ festgelegt
metadata.product_event_type Auf „Dateiereignisse“ festgelegt, wenn _index ~ events.file; „Bibliotheksereignisse“, wenn events.library; „Netzwerkereignisse“, wenn events.network; „Prozessereignisse“, wenn events.process; „Registry-Ereignisse“, wenn events.registry; „Sicherheitsereignisse“, wenn events.security; „API-Ereignisse“, wenn events.api; „Benachrichtigungen“, wenn .alert
_id metadata.product_log_id Wert aus _id, wenn nicht in ["", " ", "null", "–"]
_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 Wird auf „TCP“ gesetzt, 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 Labelobjekten, die Werte aus den aufgeführten Feldern enthalten
_source.Endpoint.policy.applied.artifacts.user.version observer.user.attribute.labels Zusammengeführt mit Labelobjekt, 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 Wird auf „WINDOWS“ gesetzt, wenn (?i)windows übereinstimmt; „LINUX“, wenn (?i)linux; „MAC“, wenn (?i)mac; „IOS“, wenn (?i)ios; 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, 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 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 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 Zusammengeführt mit Labelobjekt, 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, das den Namen aus _source.destination.geo.region_iso_code enthält
_source.kibana.alert.rule.parameters.threat.tactic.id, _source.kibana.alert.rule.parameters.threat.tactic.name security_result.attack_details.tactics Zusammengeführt mit dem Objekt, das die ID und den 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“ und „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 Labelobjekten, 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, wenn nicht leer, andernfalls aus _source.kibana.alert.rule.name
_source.rule.ruleset security_result.rule_set Wert direkt kopiert
security_result.severity Auf „LOW“ setzen; wenn _index mit .alert übereinstimmt, auf „HIGH“ setzen; wenn _source.kibana.alert.rule.parameters.severity mit (?i)LOW übereinstimmt, auf „LOW“ setzen
_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, wenn events.file, _source.dll.path, wenn events.library, _source.process.executable, wenn events.process oder events.api, _source.Target.process.executable, wenn 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 Gleitkommazahl konvertiert
_source.destination.geo.location.lon target.location.region_coordinates.longitude In String und dann in Gleitkommazahl 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“ festlegen
metadata.vendor_name Auf „Elastic“ festgelegt
_source.host.hostname event.idm.read_only_udm.intermediary.hostname Aus Änderungsprotokoll zugeordnet
_source.process.pid event.idm.read_only_udm.principal.process.pid Aus Änderungsprotokoll zugeordnet
_source.process.command_line event.idm.read_only_udm.principal.process.command_line Aus Änderungsprotokoll zugeordnet
_source.process.name event.idm.read_only_udm.principal.process.file.names Aus Änderungsprotokoll zugeordnet
_source.process.parent.executable event.idm.read_only_udm.principal.process.parent_process.file.full_path Aus Änderungsprotokoll zugeordnet
_source.process.Ext.token.integrity_level_name event.idm.read_only_udm.principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
_source.process.Ext.code_signature event.idm.read_only_udm.principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
_source.process.Ext.ancestry event.idm.read_only_udm.principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
_source.process.Ext.protection event.idm.read_only_udm.principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
_source.process.Ext.authentication_id event.idm.read_only_udm.principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
_source.winlog.event_data.PrivilegeList event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
Privilege List event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
_source.event.ingested event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
Ingested event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
_source.event.provider event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
Provider event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
_source.user.name event.idm.read_only_udm.principal.user.userid Aus Änderungsprotokoll zugeordnet
_source.event.action event.idm.read_only_udm.security_result.action_details Aus Änderungsprotokoll zugeordnet
_source.host.domain event.idm.read_only_udm.principal.administrative_domain Aus Änderungsprotokoll zugeordnet
_source.event.sequence event.idm.read_only_udm.security_result.detection_fields Aus Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.description event.idm.read_only_udm.security_result.description Aus Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.rule_id event.idm.read_only_udm.security_result.rule_id Aus Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.name event.idm.read_only_udm.security_result.rule_name Aus Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.parameters.severity event.idm.read_only_udm.security_result.severity Aus Änderungsprotokoll zugeordnet
_source.kibana.alert.rule.parameters.threat.tactic.id event.idm.read_only_udm.security_result.attack_details.tactics Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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