Joins ohne Match-Abschnitt implementieren
In diesem Dokument wird das Konzept von Join-Vorgängen ohne match-Abschnitt oder Data Join in Google Security Operations Search erläutert.
Mit Join-Vorgängen können Sie Rohdaten aus mehreren Quellen auf Grundlage gemeinsamer Feldwerte in Beziehung setzen und kombinieren. Durch die Kombination von zugehörigen Sicherheitsereignissen und ‑entitäten in einer einzigen, umfassenden Ansicht können Sie eine effektivere Bedrohungserkennung und ‑untersuchung ermöglichen.
Im Gegensatz zu statistischen Joins, für die ein match-Abschnitt zum Aggregieren von Ergebnissen erforderlich ist, werden beim Daten-Join die vollständigen Ereignis- oder Entitätsdaten abgerufen und ohne Aggregation angezeigt.
Funktionsweise von Datenzusammenführungen
Sie können einen Daten-Join erstellen, indem Sie gemeinsame Felder in verschiedenen Ereignis- oder Entitätsblöcken korrelieren. Dazu haben Sie folgende Möglichkeiten:
Felder direkt gleichsetzen (z. B.
$e1.principal.hostname = $e2.principal.hostname)Weisen Sie beide Felder derselben Platzhaltervariablen zu, z. B.
$host = $e1.principal.hostnameund$host = $e2.principal.hostname.
In beiden Fällen werden die Blöcke, in denen die Werte dieser Felder identisch sind, implizit zusammengeführt.
Unterstützte Arten der Datenzusammenführung
Sie können die folgenden Daten-Join-Typen in Ihren Suchanfragen verwenden:
Event-to-Event-Joins:Daten zwischen zwei verschiedenen UDM-Ereignistypen (Unified Data Model) korrelieren.
Event-to-ECG-Joins:UDM-Ereignisdaten mit Informationen aus dem Entity Context Graph (ECG) anreichern.
Verknüpfungen von Ereignis zu Ereignis
Event-to-Event-Joins eignen sich am besten, um Felder zwischen zwei unterschiedlichen UDM-Ereignistypen in Beziehung zu setzen. Das ist nützlich, um Sequenzen von Ereignissen oder Aktionen zu finden, bei denen dieselben Einheiten in verschiedenen Logquellen oder Ereignistypen vorkommen.
Im folgenden Beispiel werden alle Netzwerkverbindungen (NETWORK_CONNECTION) gefunden, die von einem Host stammen, auf dem auch eine Nutzeranmeldung (USER_LOGIN) stattgefunden hat:
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the
$host placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
Beschränkungen
Es können maximal zwei Ereignisse verknüpft werden.
Der Zeitraum für die Abfrage ist auf maximal 14 Tage begrenzt.
Das Abfragelimit beträgt 120 Abfragen pro Stunde.
Beispiele
Im folgenden Beispiel werden alle Netzwerkverbindungen (NETWORK_CONNECTION) gefunden, die von einem Host stammen, auf dem auch eine Nutzeranmeldung (USER_LOGIN) stattgefunden hat:
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the $host
placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
Join über User-ID
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.user.userid = $user
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.user.userid = $user
Über IP-Adresse teilnehmen
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.ip = $ip
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.ip = $ip
Verknüpfungen von Ereignis- und Entitätskontextdiagrammen
Verknüpfungen von Ereignis zu ECG eignen sich am besten, um UDM-Ereignisse mit Kontextdaten zu den beteiligten Entitäten (z. B. Assets, Nutzern) aus dem ECG anzureichern. Durch diesen Join erhalten Sie ein umfassenderes Bild, da Echtzeit-Ereignisdaten mit historischen und relationalen Informationen zu Einheiten kombiniert werden.
Beschränkungen
Der Zeitraum für die Abfrage ist auf maximal 14 Tage begrenzt.
Das Abfragelimit beträgt 120 QPH.
In der Abfrage können maximal zwei UDM-Ereignisse zusammengeführt werden.
In der Abfrage kann maximal ein EKG-Ereignis verknüpft werden.
Der Export in eine Datentabelle wird für Abfragen zum Verknüpfen von Ereignissen mit EKG nicht unterstützt.
ECG-to-ECG-Joins werden nicht unterstützt.
Verknüpfungen von EGK-Daten mit Datentabellen werden nicht unterstützt.
Beispiele
Mit dieser Abfrage werden Ereignisse für Netzwerkverbindungen mit Asset-Informationen aus dem ECG angereichert, indem der Hostname verwendet wird.
// Find network connections and assign the hostname to the $host placeholder
$e1.metadata.event_type = "NETWORK_CONNECTION"
$host = $e1.principal.asset.hostname
// Find asset entities in the graph and join where the hostname matches the
$host placeholder
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.asset.hostname
Anmeldung über IP-Adresse mit einem bestimmten Logtyp
$ip = $e1.principal.ip
$ip = $g1.graph.entity.ip
$e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"
$g1.graph.entity.ip = "10.19.6.24"
Mit einem bestimmten IP-Filter über einen Hostnamen teilnehmen
$e1.metadata.event_type = "FILE_CREATION"
$host = $e1.principal.hostname
$e1.principal.ip = "10.0.0.76"
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.hostname
Best Practices
Um langsame Leistung und Zeitüberschreitungen bei Abfragen zu vermeiden, sollten Sie in Ihren Join-Abfragen spezifische und enge Filter in jedem Block ($e1, $e2, $g1) verwenden.
Zum Beispiel eine allgemeine Anfrage wie die folgende:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
Kann durch Hinzufügen bestimmter Kriterien optimiert werden:
$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "192.168.1.101"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
right join $e1.principal.hostname = $e2.principal.hostname
Mit Ergebnissen arbeiten
Die Ergebnisse einer Datenverknüpfung werden in einer Tabelle mit dem Namen Joins angezeigt, einschließlich der kombinierten Felder aus beiden korrelierten Ereignissen. Diese Tabelle unterscheidet sich von einer Statistikansicht, da sie die vollständigen Ereignis- oder Entitätsdaten und nicht eine aggregierte Anzahl enthält.
Nachdem Sie eine Abfrage ausgeführt haben, können Sie die Ergebnisse auf folgende Weise bearbeiten:
Als CSV herunterladen:Exportieren Sie das vollständige Ergebnis-Set zur Offlineanalyse in eine CSV-Datei.
In Datentabellen exportieren:Speichern Sie die Ergebnisse in einer Datentabelle in Ihrer Instanz, um sie als Referenz zu verwenden oder weiter zu korrelieren (nur für Event-to-Event-Joins).
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten