Elastic Defend-Logs erfassen
Parserversion:5.0
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_keyodermanage_own_api_key) - Netzwerkverbindung von Cloud Run Functions zu Ihrem Elasticsearch-Cluster
Google Cloud Storage-Bucket erstellen
- Öffnen Sie die Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
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 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
- Melden Sie sich in Kibana an.
- Rufen Sie im Navigationsmenü oder im globalen Suchfeld Stack Management > API-Schlüssel auf.
- Klicken Sie auf API-Schlüssel erstellen.
- Geben Sie im Feld Name
Google SecOps Cloud Storage Integrationein. - Legen Sie optional im Feld Ablaufdatum ein Ablaufdatum fest. API-Schlüssel laufen standardmäßig nicht ab.
- Klicken Sie auf Sicherheitsberechtigungen verwalten.
- Klicken Sie im Bereich Indizes auf Indexberechtigung hinzufügen.
- Indexberechtigung konfigurieren:
- Indizes: Geben Sie
logs-endpoint.*ein. - Berechtigungen: Wählen Sie Lesen aus.
- Indizes: Geben Sie
- Lassen Sie den Abschnitt Clusterberechtigungen leer (es sind keine Clusterberechtigungen erforderlich).
- 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:
- Melden Sie sich in Kibana an.
- Rufen Sie Verwaltung > Entwicklertools auf.
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" } }Die Antwort enthält Ihre API-Schlüsselanmeldedaten:
{ "id": "VuaCfGcBCdbkQm-e5aOx", "name": "Google SecOps Cloud Storage Integration", "api_key": "ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }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.
- Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
elastic-defend-collectorein. - Beschreibung des Dienstkontos: Geben Sie
Service account for Elastic Defend log collection to GCSein.
- Name des Dienstkontos: Geben Sie
- Klicken Sie auf Erstellen und fortfahren.
- Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
- Klicken Sie auf Rolle auswählen und wählen Sie Storage Object Admin (
roles/storage.objectAdmin) aus. - Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Cloud Run Invoker (
roles/run.invoker) aus.
- Klicken Sie auf Rolle auswählen und wählen Sie Storage Object Admin (
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
Pub/Sub-Thema erstellen
Pub/Sub-Thema erstellen, um die Cloud Run-Funktion über Cloud Scheduler auszulösen
- Rufen Sie in der Google Cloud Console Pub/Sub > Themen auf.
- Klicken Sie auf Thema erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Themen-ID: Geben Sie
elastic-defend-triggerein. - Standardabo hinzufügen: Häkchen beibehalten
- Themen-ID: Geben Sie
- Klicken Sie auf Erstellen.
Cloud Run-Funktion erstellen
Cloud Run-Funktion erstellen, die Ereignisse aus Elasticsearch abruft und in GCS schreibt
Funktion erstellen
- Rufen Sie in der Google Cloud Console Cloud Run-Funktionen auf.
- Klicken Sie auf Funktion erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Umgebung 2. Generation Funktionsname elastic-defend-to-gcsRegion Wählen Sie dieselbe Region wie für Ihren GCS-Bucket aus. Triggertyp Cloud Pub/Sub Cloud Pub/Sub-Thema elastic-defend-triggerauswählenZugewiesener Arbeitsspeicher 512 MiB (bei großen Datenmengen wird der Wert erhöht) Zeitlimit 540 Sekunden Laufzeitdienstkonto elastic-defend-collectorauswählenKlicken Sie auf Weiter.
Umgebungsvariablen hinzufügen
Fügen Sie im Abschnitt Laufzeit, Build, Verbindungen und Sicherheitseinstellungen die folgenden Umgebungsvariablen hinzu:
Variable Wert GCS_BUCKETName Ihres GCS-Buckets (z. B. elastic-defend-logs)GCS_PREFIXPräfix für Logdateien (z. B. elastic-defend)STATE_KEYName der Statusdatei (z. B. state.json)ES_HOSTElasticsearch-URL (z. B. https://my-deployment.es.us-central1.gcp.cloud.es.io:443)ES_API_KEYCodierter API-Schlüssel aus dem Schritt zum Erstellen von Anmeldedaten MAX_RECORDSMaximale Anzahl von Datensätzen pro Ausführung (z. B. 100000)PAGE_SIZEAnzahl der Datensätze pro Suchanfrage (z. B. 1000)LOOKBACK_HOURSStunden, die für den ersten Lauf berücksichtigt werden sollen (z. B. 24)
Funktionscode hinzufügen
- Wählen Sie Python 3.11 als Laufzeit aus.
- Legen Sie den Einstiegspunkt auf
mainfest. - Wählen Sie im Abschnitt Quellcode die Option Inline-Editor aus.
Ersetzen Sie den Inhalt von
main.pydurch 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"Ersetzen Sie den Inhalt von
requirements.txtdurch Folgendes:functions-framework==3.* google-cloud-storage==2.* requests==2.*Klicken Sie auf Bereitstellen.
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.
- Rufen Sie in der Google Cloud Console Cloud Scheduler auf.
- Klicken Sie auf Job erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Name elastic-defend-schedulerRegion 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).Klicken Sie auf Weiter.
Im Abschnitt Ausführung konfigurieren:
- Zieltyp: Wählen Sie Pub/Sub aus.
- Cloud Pub/Sub-Thema: Wählen Sie
elastic-defend-triggeraus. - Inhalt der Nachricht: Geben Sie
{"run": true}ein.
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
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Elastic Defend Events. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Elastic Defend als Log type (Protokolltyp) aus.
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.comKopieren Sie diese E‑Mail-Adresse für den nächsten Schritt.
Feed konfigurieren
- Klicken Sie auf Weiter.
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-logsdurch 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
Klicken Sie auf Weiter.
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.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
elastic-defend-logs). - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- 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.
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