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 korrelieren 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 Daten-Joins
Sie können einen Daten-Join erstellen, indem Sie gemeinsame Felder in verschiedenen Ereignis- oder Entitätsblöcken in Beziehung setzen. 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 Search implizit zusammengeführt, wenn die Werte dieser Felder identisch sind.
Unterstützte Arten der Datenzusammenführung
In Ihren Suchanfragen können Sie die folgenden Daten-Join-Typen 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 zwischen Ereignissen
Event-to-Event-Joins eignen sich am besten, um Felder zwischen zwei verschiedenen UDM-Ereignistypen in Beziehung zu setzen. Das ist nützlich, um Sequenzen von Ereignissen oder Aktionen zu finden, an denen dieselben Entitäten in verschiedenen Logquellen oder Ereignistypen beteiligt sind.
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 zusammengeführt 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
Zusammenführen anhand der 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 Ereignissen mit dem ECG eignen sich am besten, um UDM-Ereignisse mit Kontextdaten zu den beteiligten Einheiten (z. B. Assets, Nutzer) 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 Abfragen pro Stunde.
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 Join-Abfragen vom Typ „Ereignis zu EKG“ nicht unterstützt.
ECG-to-ECG-Joins werden nicht unterstützt.
Joins von EGK-Daten zu 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
Mit einer bestimmten Protokollart über die IP-Adresse beitreten
$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 nach Hostname zusammenführen
$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 Leistungseinbußen und Zeitüberschreitungen bei Abfragen zu vermeiden, sollten Sie in Ihren Join-Abfragen spezifische und enge Filter in jedem Block ($e1, $e2, $g1) verwenden.
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 Joins (Verknüpfungen) 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-Datei herunterladen:Exportieren Sie das vollständige Ergebnis-Set in eine CSV-Datei für die Offlineanalyse.
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