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) 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_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, 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 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 im Feld Ablaufdatum optional ein Ablaufdatum fest. Standardmäßig laufen API-Schlüssel nicht ab.
- Klicken Sie auf Sicherheitsberechtigungen verwalten.
- Klicken Sie im Abschnitt Indices auf Add index privilege.
- Konfigurieren Sie die Indexberechtigung:
- Indices: Geben Sie
logs-endpoint.*ein. - Berechtigungen: Wählen Sie Lesen aus.
- Indices: 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==)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:
- Melden Sie sich in Kibana an.
- Gehen Sie zu Verwaltung > Entwicklertools.
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 die Anmeldedaten für Ihren API-Schlüssel:
{ "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 die Seite 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-Aufrufer (
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
Erstellen Sie ein Pub/Sub-Thema, 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: Lassen Sie das Häkchen gesetzt.
- Themen-ID: Geben Sie
- 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
- Rufen Sie in der Google Cloud Console die Seite Cloud Run-Funktionen auf.
- Klicken Sie auf Funktion erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Umgebung 2. Generation Name der Funktion 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 erhöhen) 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 Protokolldateien (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 bei der ersten Ausführung zurückgeblickt werden sollen (z. B. 24)
Funktionscode hinzufügen
- Wählen Sie Python 3.11 als Laufzeit aus.
- Legen Sie für Einstiegspunkt den Wert
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 erfolgreich 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 Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die 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 Protokolltyp aus.
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.comKopieren Sie diese E-Mail-Adresse, um sie im nächsten Schritt zu verwenden.
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 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.
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-Objekt-Betrachter 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 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