Joins ohne Abschnitt für Übereinstimmungen implementieren

Unterstützt in:

In diesem Dokument wird das Konzept von Join-Vorgängen ohne match-Abschnitt oder Daten-Join in der Google Security Operations-Suche erläutert.

Mit Join-Vorgängen können Sie Rohdaten aus mehreren Quellen anhand gemeinsamer Feldwerte korrelieren und kombinieren. Wenn Sie verknüpfte Sicherheitsereignisse und -entitäten in einer umfassenden Ansicht zusammenfassen, können Sie Bedrohungen effektiver erkennen und untersuchen.

Im Gegensatz zu statistischen Joins , für die ein match Abschnitt zum Aggregieren von Ergebnissen erforderlich ist, ruft ein Daten-Join die vollständigen Ereignis- oder Entitätsdaten ab und zeigt sie ohne Aggregation an.

Funktionsweise von Daten-Joins

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)

  • Beide Felder derselben Platzhaltervariablen zuweisen (z. B. $host = $e1.principal.hostname und $host = $e2.principal.hostname).

In beiden Fällen werden die Blöcke in der Suche implizit zusammengeführt, wenn die Werte dieser Felder identisch sind.

Unterstützte Daten-Join-Typen

In Ihren Suchanfragen können Sie die folgenden Daten-Join-Typen verwenden:

  • Ereignis-zu-Ereignis-Joins:Daten zwischen zwei verschiedenen Ereignistypen des Unified Data Model (UDM) korrelieren.

  • Ereignis-zu-ECG-Joins:UDM-Ereignisdaten mit Informationen aus dem Entity Context Graph (ECG) anreichern.

Ereignis-zu-Ereignis-Joins

Ereignis-zu-Ereignis-Joins eignen sich am besten zum Korrelieren von Feldern zwischen zwei verschiedenen UDM-Ereignistypen. Das ist nützlich, um Sequenzen von Ereignissen oder Aktionen zu finden, bei denen dieselben Entitäten in verschiedenen Logquellen oder Ereignistypen vorkommen.

Die folgende Beispielabfrage findet alle Netzwerkverbindungen (NETWORK_CONNECTION), 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

Die folgende Beispielabfrage findet alle Netzwerkverbindungen (NETWORK_CONNECTION), 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 anhand der Nutzer-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

Join anhand der IP-Adresse


  $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

Ereignis-zu-Entity Context Graph-Joins

Ereignis-zu-ECG-Joins eignen sich am besten, um UDM-Ereignisse mit Kontextdaten zu den beteiligten Entitäten (z. B. Assets, Nutzern) aus dem ECG anzureichern. Dieser Join bietet ein umfassenderes Bild, indem er Echtzeit-Ereignisdaten mit historischen und relationalen Entitätsinformationen kombiniert.

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 ECG-Ereignis zusammengeführt werden.

  • Der Export in eine Datentabelle wird für Ereignis-zu-ECG-Join-Abfragen nicht unterstützt.

  • ECG-zu-ECG-Joins werden nicht unterstützt.

  • ECG-zu-Datentabelle-Joins werden nicht unterstützt.

Beispiele

Diese Abfrage reichert Netzwerkverbindungsereignisse mit Asset-Informationen aus dem ECG an, indem sie anhand des Hostnamens zusammengeführt werden.


  // 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

Join anhand der 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"

Join anhand des Hostnamens mit einem bestimmten IP-Filter


  $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 Abfrage-Time-outs zu vermeiden, verwenden Sie in Ihren Join-Abfragen spezifische und enge Filter in jedem Block ($e1, $e2, $g1).

Eine breite Abfrage 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 eines Daten-Joins werden in einer Tabelle 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 keine aggregierte Anzahl enthält.

Nach dem Ausführen einer Abfrage können Sie auf folgende Weise mit den Ergebnissen arbeiten:

  • 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 Ereignis-zu-Ereignis-Joins).

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