Best Practices für Suchvorgänge
In diesem Dokument werden die von Google empfohlenen Best Practices für die Verwendung der Suchfunktion in Google Security Operations beschrieben. Suchanfragen können erhebliche Rechenressourcen erfordern, wenn sie nicht sorgfältig formuliert werden. Die Leistung variiert auch je nach Größe und Komplexität der Daten in Ihrer Google SecOps-Instanz.
Indexierte UDM-Felder für maximale Geschwindigkeit verwenden
Die effektivste Methode zur Verbesserung der Suchleistung besteht darin, Abfragen mit indexierten Feldern zu erstellen. Diese Felder sind für den schnellen Abruf optimiert. Die bekannten indexierten Felder des Unified Data Model (UDM) sind:
Hauptfelder
principal.asset.hostnameprincipal.asset.ipprincipal.asset.macprincipal.file.md5principal.file.sha1principal.file.sha256principal.hostnameprincipal.ipprincipal.macprincipal.process.file.md5principal.process.file.sha1principal.process.file.sha256principal.process.parent_process.file.md5principal.process.parent_process.file.sha1principal.process.parent_process.file.sha256principal.user.email_addressesprincipal.user.product_object_idprincipal.user.useridprincipal.user.windows_sids
Quellfelder
source.user.useridsrc.asset.hostnamesrc.hostnamesrc.ip
Zielfelder
target.asset.hostnametarget.file.md5target.file.sha1target.file.sha256target.hostnametarget.iptarget.process.file.md5target.process.file.sha1target.process.file.sha256target.user.email_addressestarget.user.product_object_idtarget.user.useridtarget.user.windows_sid
Zusätzliche Felder
about.file.md5about.file.sha1about.file.sha256intermediary.hostnameintermediary.ipnetwork.dns.questions.namenetwork.email.fromnetwork.email.toobserver.hostnameobserver.ip
Effektive Suchanfragen für die Leistung erstellen
Das Schreiben optimierter Abfragen ist entscheidend, um die Geschwindigkeit zu maximieren und den Ressourcenverbrauch für Ihre Sicherheitsdaten zu minimieren. Alle Abfragebedingungen müssen sich strikt an diese grundlegende Struktur halten:
udm-field operator value
Beispiel: principal.hostname = "win-server"
Zeitraum für die Suche eingrenzen
Da Google SecOps bei einer Suche eine große Menge an Daten aufnehmen kann, müssen Sie den Zeitraum Ihrer Anfrage minimieren, um den Umfang einzugrenzen und die Suchleistung zu verbessern.
Reguläre Ausdrücke in Suchanfragen verwenden
Sie können Standardoperatoren für Logik und Vergleiche verwenden, um komplexe Ausdrücke für Ihre UDM-Suchanfragen zu erstellen:
- Logische Operatoren:Verwenden Sie
AND,ORundNOT, um Bedingungen zu kombinieren. Wenn Sie einen Operator zwischen zwei Bedingungen weglassen, wirdANDangenommen. - Operatorrangfolge: Mit Klammern () können Sie die Standardrangfolge überschreiben. Es gibt ein Limit von maximal 169 logischen Operatoren (
OR,AND,NOT), die Sie in Klammern verwenden können. - Vergleichsoperatoren: Je nach UDM-Feldtyp (String, Ganzzahl, Zeitstempel) können Feldoperatoren Folgendes umfassen:
=,!=,>=,>,<,<=
Alternativ können Sie für die effiziente Suche in einer großen Menge von Werten Referenzlisten verwenden.
nocase als Suchmodifikator verwenden
Sie können den Modifikator nocase an eine Bedingung für den Stringvergleich anhängen, um die Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen.
Die folgende Suche ist beispielsweise ungültig:
target.user.userid = "TIM.SMITH" nocase
Verwendung regulärer Ausdrücke in Aufzählungsfeldern vermeiden
Bei der Suche in Aufzählungsfeldern (Felder mit einer Reihe vordefinierter Werte) wie metadata.event_type oder network.ip_protocol können Sie keine regulären Ausdrücke verwenden.
Das folgende Beispiel ist eine ungültige Suche:
metadata.event_type = /NETWORK_*/
Das folgende Beispiel ist eine gültige Suche:
(metadata.event_type = "NETWORK_CONNECTION" oder metadata.event_type = "NETWORK_DHCP")
Beliebige Operatoren im Feld „Ereignisse“ verwenden
In Search sind einige UDM-Felder (z. B. principal.ip oder target.file.md5) als repeated gekennzeichnet, da sie eine Liste von Werten oder Nachrichtentypen in einem einzelnen Ereignis enthalten können. Wiederholte Felder werden standardmäßig immer mit dem Operator any behandelt. Es gibt keine Option, all anzugeben.
Wenn der Operator any verwendet wird, wird das Prädikat als true ausgewertet, wenn ein beliebiger Wert im wiederholten Feld die Bedingung erfüllt. Wenn Sie beispielsweise nach principal.ip != "1.2.3.4" suchen und die Ereignisse in Ihrer Suche sowohl principal.ip = "1.2.3.4" als auch principal.ip = "5.6.7.8" enthalten, wird eine Übereinstimmung generiert. Dadurch wird Ihre Suche erweitert und umfasst Ergebnisse, die mit einem der Operatoren übereinstimmen, anstatt mit allen.
Jedes Element im wiederkehrenden Feld wird einzeln behandelt. Wenn das wiederholte Feld in Ereignissen in der Suche gefunden wird, werden die Ereignisse für jedes Element im Feld ausgewertet. Dies kann zu unerwartetem Verhalten führen, insbesondere bei der Suche mit dem Operator !=.
Wenn Sie den Operator any verwenden, wird das Prädikat als true ausgewertet, wenn ein beliebiger Wert im wiederholten Feld die Bedingung erfüllt.
Unix-Epochenzeit für Zeitstempel verwenden
Zeitstempelfelder werden anhand der Unix-Epochenzeit abgeglichen (die Gesamtzahl der Sekunden, die seit Donnerstag, 1. Januar 1970, 00:00:00 UTC, vergangen sind).
Bei der Suche nach einem bestimmten Zeitstempel ist Folgendes (in der Epoch-Zeit) gültig:
metadata.ingested_timestamp.seconds = 1660784400
Der folgende Zeitstempel ist ungültig:
metadata.ingested_timestamp = "2022-08-18T01:00:00Z"
Felder aus Filtern ausschließen
Die folgenden Felder sind absichtlich von Suchfiltern ausgeschlossen. Sie enthalten zwar wichtige Metadaten, aber ihre sehr individuellen Werte können unnötige Suchdetails einführen und die allgemeine Effizienz und Effektivität der Suchmaschine verringern:
metadata.idmetadata.product_log_id*.timestamp
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten