Joins ohne Match-Abschnitt implementieren

Unterstützt in:

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.hostname und $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