Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Splunk-Erkennungsregeln sind SIEM-Komponenten (Security Information and Event Management), die mit Analyseregeln in Microsoft Sentinel verglichen werden. Dieser Artikel beschreibt die Konzepte, die zur Identifizierung, Vergleichung und Migration von Splunk-Erkennungsregeln zu Microsoft Sentinel verwendet werden. Die beste Möglichkeit zum Migrieren von Splunk-Erkennungsregeln zu Microsoft Sentinel besteht darin, mit der SIEM-Migrationserfahrung zu beginnen, die sofort einsatzbereite (OOTB)-Analyseregeln für die automatische Übersetzung identifiziert.
Wenn Sie Ihre Splunk Observability-Bereitstellung migrieren möchten, erfahren Sie mehr darüber, wie Sie von Splunk zu Azure Monitor-Protokollen migrieren.
Überwachungsregeln
Microsoft Sentinel verwendet Machine Learning-Analysen, um hochgenaue und umsetzbare Incidents zu erstellen. Einige deiner bestehenden Splunk-Erkennungen könnten in Microsoft Sentinel redundant sein, daher sollte man nicht alle Splunk-Erkennungen blind migrieren. Überprüfen Sie die folgenden Überlegungen zur Regelüberwachung, während Sie Ihre vorhandenen Erkennungsregeln identifizieren.
- Stellen Sie sicher, dass Sie Anwendungsfälle auswählen, die die Migration von Regeln unter Berücksichtigung geschäftlicher Prioritäten und der Effizienz rechtfertigen.
- Vergewissern Sie sich, dass Sie Microsoft Sentinel Regeltypen verstehen.
- Überprüfen Sie, ob Sie die Regelterminologie verstehen.
- Überprüfen Sie veraltete Regeln, die in den letzten 6 bis 12 Monaten keine Warnungen enthalten, und ermitteln Sie, ob sie weiterhin relevant sind.
- Beseitigen Sie Bedrohungen oder Warnungen auf niedriger Ebene, die Sie routinemäßig ignorieren.
- Microsoft Sentinel Analytics erfordern, dass der Datentyp im Log Analytics-Arbeitsbereich vorhanden ist, bevor eine Regel aktiviert wird. Vergewissern Sie sich, dass Ihre erforderlichen Datenquellen verbunden sind, und überprüfen Sie die Datenverbindungsmethoden. Rufen Sie die Konversationen zur Datensammlung erneut auf, um die Datentiefe und -breite in den Anwendungsfällen sicherzustellen, die Sie erkennen möchten. Verwenden Sie dann die SIEM-Migrationsumgebung , um sicherzustellen, dass die Datenquellen ordnungsgemäß zugeordnet sind.
Migrieren von Regeln
Nachdem Sie die zu migrierenden Splunk-Erkennungen identifiziert haben, überprüfen Sie die folgenden Überlegungen zum Migrationsprozess:
- Vergleichen Sie die vorhandenen Funktionen der OOTB-Analyseregeln von Microsoft Sentinel mit Ihren aktuellen Anwendungsfällen. Verwenden Sie die SIEM-Migrationsumgebung , um zu sehen, welche Splunk-Erkennungen automatisch in OOTB-Vorlagen konvertiert werden.
- Übersetzen Sie Erkennungen, die nicht an OOTB-Analyseregeln ausgerichtet sind. Die beste Möglichkeit, Splunk-Erkennungen automatisch zu übersetzen, ist die SIEM-Migrationserfahrung.
- Entdecken Sie weitere Algorithmen für Ihre Anwendungsfälle, indem Sie Communityressourcen wie den SOC Prime Threat Detection Marketplace erkunden.
- Manuelles Übersetzen von Erkennungen, wenn integrierte Regeln nicht verfügbar sind oder nicht automatisch übersetzt werden. Erstellen Sie die neuen KQL-Abfragen, und überprüfen Sie die Regelzuordnung.
Weitere Informationen finden Sie unter Bewährte Methoden für die Migration von Erkennungsregeln.
Schritte zur Regelmigration
Führen Sie die folgenden Schritte aus, um jede Splunk-Erkennungsregel während der Migration zu Microsoft Sentinel zu überprüfen, zu übersetzen und zu testen.
Vergewissern Sie sich, dass für jede Zu migrierende Regel ein Testsystem vorhanden ist.
Bereiten Sie einen Validierungsprozess für Ihre migrierten Regeln vor, einschließlich vollständiger Testszenarien und Skripts.
Stellen Sie sicher, dass Ihr Team über nützliche Ressourcen zum Testen Der migrierten Regeln verfügt.
Vergewissern Sie sich, dass die erforderlichen Datenquellen verbunden sind, und überprüfen Sie Ihre Datenverbindungsmethoden.
Überprüfen Sie, ob Ihre Erkennungen als OOTB-Vorlagen in Microsoft Sentinel verfügbar sind:
Verwenden Sie die SIEM-Migrationsumgebung , um die Übersetzung und Installation der OOTB-Vorlagen zu automatisieren.
Weitere Informationen finden Sie unter Verwenden der SIEM-Migrationsumgebung.
Wenn Sie Anwendungsfälle haben, die in den Erkennungen nicht widerspiegelt sind, erstellen Sie Regeln für Ihren eigenen Arbeitsbereich mit OOTB-Regelvorlagen.
Wechseln Sie in Microsoft Sentinel zum Content Hub.
Inhaltstyp für Vorlagen für Analytics-Regeln filtern.
Suchen und installieren/aktualisieren Sie jede entsprechende Content Hub-Lösung oder eigenständige Analyseregelvorlage.
Weitere Informationen finden Sie unter Bedrohungen sofort erkennen.
Wenn Sie über Erkennungen verfügen, die nicht von den OOTB-Regeln Microsoft Sentinel abgedeckt werden, probieren Sie zunächst die SIEM-Migrationsumgebung für die automatische Übersetzung aus.
Wenn weder die OOTB-Regeln noch die SIEM-Migration die Erkennung vollständig übersetzen, erstellen Sie die Regel manuell. Führen Sie die folgenden Schritte aus, um Ihre Regel zu erstellen:
Identifizieren Sie die Datenquellen, die Sie in Ihrer Regel verwenden möchten. Identifizieren Sie die Microsoft Sentinel Tabellen, die Sie abfragen möchten, indem Sie eine Zuordnungstabelle zwischen Datenquellen und Datentabellen erstellen.
Identifizieren Sie alle Attribute, Felder oder Entitäten in Ihren Daten, die Sie in Ihren Regeln verwenden möchten.
Identifizieren Sie Ihre Regelkriterien und -logik. Berücksichtigen Sie beim Identifizieren ihrer Regelkriterien und -logik die Verwendung von Regelvorlagen als Beispiele zum Erstellen Ihrer KQL-Abfragen.
Berücksichtigen Sie Filter, Korrelationsregeln, aktive Listen, Verweissätze, Watchlists, Erkennungsanomalien, Aggregationen usw. Sie können Verweise verwenden, die von Ihrem Legacy-SIEM bereitgestellt werden, um zu verstehen , wie Sie Ihre Abfragesyntax am besten zuordnen.
Identifizieren Sie die Triggerbedingung und die Regelaktion, erstellen und überprüfen Sie dann Ihre KQL-Abfrage. Berücksichtigen Sie beim Überprüfen Ihrer Abfrage die Ressourcen des KQL-Optimierungsleitfadens.
Testen Sie die Regel mit jedem Ihrer relevanten Anwendungsfälle. Wenn es keine erwarteten Ergebnisse liefert, überprüfen und bearbeiten Sie die KQL, und testen Sie sie erneut.
Wenn Sie zufrieden sind, können Sie die Regel als migriert betrachten. Erstellen Sie nach Bedarf ein Playbook für Ihre Regelaktion. Weitere Informationen finden Sie unter Automatisieren der Reaktion auf Bedrohungen mit Playbooks in Microsoft Sentinel.
Weitere Informationen zu Analyseregeln:
- Erstellen Sie benutzerdefinierte Analyseregeln, um Bedrohungen zu erkennen. Verwenden Sie die Warnungsgruppierung , um die Ermüdung von Warnungen zu reduzieren, indem Sie Warnungen gruppieren, die innerhalb eines bestimmten Zeitraums auftreten.
- Ordnen Sie Datenfelder Entitäten in Microsoft Sentinel zu, damit SOC-Techniker Entitäten als Teil des Nachweises definieren können, der während einer Untersuchung nachverfolgt werden soll. Die Entitätszuordnung ermöglicht es SOC-Analysten auch, ein intuitives [Untersuchungsdiagramm](investigation-cases.md#use-the-investigation-graph-to-deep-dive) zu nutzen, mit dem sie Zeit und Aufwand sparen können.
- Untersuchen Sie Vorfälle mit UEBA-Daten als Beispiel für die Verwendung von Beweismitteln, um im Vorschaufenster des Vorfalls Ereignisse, Warnungen und alle Lesezeichen einzublenden, die einem bestimmten Vorfall zugeordnet sind.
- Kusto-Abfragesprache (KQL), mit der Sie schreibgeschützte Abfragen an Ihre Log Analytics-Datenbank senden können, um Daten zu verarbeiten und Ergebnisse zurückzugeben. KQL wird auch für andere Microsoft-Dienste wie Microsoft Defender for Endpoint und Application Insights verwendet.
Vergleichen der Regelterminologie
In der folgenden Vergleichstabelle wird erläutert, wie eine KQL-basierte Regel in Microsoft Sentinel einer SPL-basierten Erkennung in Splunk entspricht.
| Splunk | Microsoft Sentinel | |
|---|---|---|
| Regeltyp | •Geplant • Echtzeit |
• Geplante Abfrage •Verschmelzung • Microsoft-Sicherheit • Machine Learning-(ML-)Verhaltensanalysen |
| Kriterium | Definieren in SPL | In KQL definieren |
| Triggerbedingung | • Anzahl der Ergebnisse • Anzahl der Hosts • Anzahl der Quellen • Benutzerdefiniert |
Schwellenwert: Anzahl der Abfrageergebnisse |
| Aktion | • Zu ausgelösten Warnungen hinzufügen • Protokollereignis • Ausgabeergebnisse zum Nachschlagen • Und mehr |
• Erstellen einer Warnung oder eines Incidents • Integriert sich in Logic Apps |
Regelbeispiele abbilden und vergleichen
Verwenden Sie die SPL-zu-KQL-Beispieltabellen und Beispiele in diesem Abschnitt, um Regeln von Splunk auf Microsoft Sentinel in verschiedenen Szenarien zu vergleichen und zuzuordnen.
Vergleichen Sie gängige Splunk-Suchbefehle mit KQL-Beispielen
Diese Tabelle ordnet gängige SPL-Suchbefehle ihren KQL-Äquivalenten in Microsoft Sentinel zu.
| SPL-Befehl | Beschreibung | KQL-Operator | KQL-Beispiel |
|---|---|---|---|
chart/ timechart |
Gibt Ergebnisse in einer tabellarischen Ausgabe für Zeitreihendiagramme zurück. | Render-Operator | … | render timechart |
dedup |
Entfernt nachfolgende Ergebnisse, die einem angegebenen Kriterium entsprechen. | • unterschiedlich • zusammenfassen |
… | summarize by Computer, EventID |
eval |
Berechnet einen Ausdruck. Erfahren Sie mehr über allgemeine eval Befehle. |
Erweitern | T | extend duration = endTime - startTime |
fields |
Entfernt Felder aus Suchergebnissen. | • Projekt • Projektabwesend |
T | project cost=price*quantity, price |
head/tail |
Gibt die ersten oder letzten N Ergebnisse zurück. | top | T | top 5 by Name desc nulls last |
lookup |
Fügt Feldwerte aus einer externen Quelle hinzu. | • externe Daten • Suche |
Beispiel für den Aufschlagbefehl KQL |
rename |
Benennt ein Feld um. Verwenden Sie Wildcards, um mehrere Felder anzugeben. | Projekt umbenennen | T | project-rename new_column_name = column_name |
rex |
Gibt Gruppennamen an, die reguläre Ausdrücke zum Extrahieren von Feldern verwenden. | entspricht regex | … | where field matches regex "^addr.*" |
search |
Filtert Ergebnisse nach Ergebnissen, die dem Suchausdruck entsprechen. | Suche | search "X" |
sort |
Sortiert die Suchergebnisse nach den angegebenen Feldern. | sortieren | T | sort by strlen(country) asc, price desc |
stats |
Stellt Statistiken bereit, die optional nach Feldern gruppiert sind. Erfahren Sie mehr über allgemeine Statistikbefehle. | Zusammenfassen | Beispiel des Stats-Befehls KQL |
mstats |
Ähnlich wie Statistiken, die für Metriken anstelle von Ereignissen verwendet werden. | Zusammenfassen | Beispiel des Mstats-Befehls KQL |
table |
Gibt an, welche Felder im Resultset beibehalten werden sollen, und behält Daten im tabellarischen Format bei. | Projekt | T | project columnA, columnB |
top/rare |
Zeigt die am häufigsten oder am wenigsten gebräuchlichen Werte eines Felds an. | top | T | top 5 by Name desc nulls last |
transaction |
Gruppiert Suchergebnisse in Transaktionen. Beispiel des Transaktionsbefehls SPL |
Beispiel: row_window_session | Beispiel des Transaktionsbefehls KQL |
eventstats |
Generiert Zusammenfassungsstatistiken aus Feldern in Ihren Ereignissen und speichert diese Statistiken in einem neuen Feld. SPL-Beispiel |
Beispiele: • Beitreten • make_list • mv-expand |
KQL-Beispiel |
streamstats |
Suchen Sie die kumulierte Summe eines Felds. SPL-Beispiel: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Suchen Sie Anomalien im angegebenen Feld. SPL-Beispiel |
series_decompose_anomalies() | KQL-Beispiel |
where |
Filtert Suchergebnisse mithilfe von eval Ausdrücken. Wird verwendet, um zwei verschiedene Felder zu vergleichen. |
wo | T | where fruit=="apple" |
lookup Befehl: KQL-Beispiel
Dieses KQL-Beispiel wird externaldata verwendet, um das SPL-Muster lookup zu replizieren, indem Benutzer gegen eine externe Datenquelle gefiltert werden.
Users
| where UserID in ((externaldata (UserID:string) [
@"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt"
h@"?...SAS..." // Secret token to access the blob
])) | ...
stats Befehl: KQL-Beispiel
Dieses KQL-Beispiel wird verwendet summarize , um Transaktionen zu zählen und Gesamtsummen zu summieren, gruppiert nach Obst und Monat.
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats Befehl: KQL-Beispiel
Dieses KQL-Beispiel ordnet Metrikwerte in Preisklassen ein und zählt die Datensätze in jedem Bereich.
T | summarize count() by price_range=bin(price, 10.0)
transaction Befehl: SPL-Beispiel
Dieses SPL-Beispiel fasst verwandte Start- und Stoppereignisse nach Aktivitäts-ID zu einer einzigen Transaktion zusammen.
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction Befehl: KQL-Beispiel
Dieses KQL-Beispiel repliziert die Gruppierung von SPL-Transaktionen, indem Start- und Stoppereignisse auf einer gemeinsamen Aktivitäts-ID verknüpft und die Dauer berechnet wird.
let Events = MyLogTable | where type=="Event";
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime,
Duration = StopTime – StartTime
Verwenden Sie row_window_session() , um Sitzungsstartwerte für eine Spalte in einem serialisierten Zeilensatz zu berechnen.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats Befehl: SPL-Beispiel
Dieses SPL-Beispiel berechnet die Anzahl der Ereignisse pro Kategorie in Ein-Minuten-Bins und fügt dann eine Pro-Time-Bin-Summe mit .eventstats
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats Befehl: KQL-Beispiel
Hier sehen Sie ein Beispiel mit der join -Anweisung:
let binSize = 1h;
let detail = SecurityEvent
| summarize detail_count = count() by EventID,
tbin = bin(TimeGenerated, binSize);
let summary = SecurityEvent
| summarize sum_count = count() by
tbin = bin(TimeGenerated, binSize);
detail
| join kind=leftouter (summary) on tbin
| project-away tbin1
Hier sehen Sie ein Beispiel mit der make_list -Anweisung:
let binSize = 1m;
SecurityEvent
| where TimeGenerated >= ago(24h)
| summarize TotalEvents = count() by EventID,
groupBin =bin(TimeGenerated, binSize)
|summarize make_list(EventID), make_list(TotalEvents),
sum(TotalEvents) by groupBin
| mvexpand list_EventID, list_TotalEvents
anomalydetection Befehl: SPL-Beispiel
Dieses SPL-Beispiel erkennt Anomalien in historischen Schlusskursdaten über einen Zeitraum von 10 Jahren.
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection Befehl: KQL-Beispiel
Dieses KQL-Beispiel verwendet Zeitreihenanalysefunktionen, um Anomalien in Anmeldetrends für deaktivierte Konten über einen siebentägigen Rückblickzeitraum zu erkennen.
let LookBackPeriod= 7d;
let disableAccountLogon=SignIn
| where ResultType == "50057"
| where ResultDescription has "account is disabled";
disableAccountLogon
| make-series Trend=count() default=0 on TimeGenerated
in range(startofday(ago(LookBackPeriod)), now(), 1d)
| extend (RSquare,Slope,Variance,RVariance,Interception,
LineFit)=series_fit_line(Trend)
| extend (anomalies,score) =
series_decompose_anomalies(Trend)
Vergleichen Sie gängige Splunk-Befehle eval mit KQL-Äquivalenten
Diese Tabelle ordnet gängige SPL-Funktionen eval ihren KQL-Äquivalenten in Microsoft Sentinel zu.
| SPL-Befehl | Beschreibung | SPL-Beispiel | KQL-Befehl | KQL-Beispiel |
|---|---|---|---|---|
abs(X) |
Gibt den absoluten Wert von X zurück. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Verwendet Paare von X - und Y -Argumenten, wobei die X Argumente boolesche Ausdrücke sind. Bei der Auswertung auf TRUEgeben die Argumente das entsprechende Y Argument zurück. |
SPL-Beispiel | case |
KQL-Beispiel |
ceil(X) |
Obergrenze einer Zahl X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Identifiziert IP-Adressen, die zu einem bestimmten Subnetz gehören. | cidrmatch("123.132.32.0/25",ip) |
• ipv4_is_match()• ipv6_is_match() |
ipv4_is_match('192.168.1.1', '192.168.1.255')== false |
coalesce(X,…) |
Gibt den ersten Wert zurück, der nicht NULL ist. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"),tolong("42"), 33) == 42 |
cos(X) |
Berechnet den Kosinus von X. | n=cos(0) |
cos() | cos(X) |
exact(X) |
Wertet einen Ausdruck X mithilfe einer Gleitkommaarithmetik mit doppelter Genauigkeit aus. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
Gibt eX zurück. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Wenn X als TRUEausgewertet wird, ist das Ergebnis das zweite Argument Y. Wenn X als FALSEausgewertet wird, ergibt das Ergebnis das dritte Argument Z. |
if(error==200,"OK", "Error") |
iff() |
KQL-Beispiel |
isbool(X) |
Gibt zurück TRUE , wenn X boolescher Wert ist. |
isbool(field) |
• iff()• gettype |
iff(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
Gibt zurück TRUE , wenn X eine ganze Zahl ist. |
isint(field) |
• iff()• gettype |
KQL-Beispiel |
isnull(X) |
Gibt zurück TRUE , wenn X NULL ist. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Gibt zurück TRUE , wenn X eine Zeichenfolge ist. |
isstr(field) |
• iff()• gettype |
KQL-Beispiel |
len(X) |
Diese Funktion gibt die Zeichenlänge einer Zeichenfolge Xzurück. |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
Gibt nur dann zurück TRUE , wenn X dem SQLite-Muster in Yähnelt. |
like(field, "addr%") |
• has• contains• startswith• entspricht regex |
KQL-Beispiel |
log(X,Y) |
Gibt das Protokoll des ersten Arguments X mit dem zweiten Argument Y als Basis zurück. Der Standardwert von Y ist 10. |
log(number,2) |
• log• log2• log10 |
log(X)log2(X)log10(X) |
lower(X) |
Gibt den Kleinbuchstabenwert von zurück X. |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
Gibt zurück X , wobei die Zeichen im Parameter Y von der linken Seite gekürzt wurden. Die Standardausgabe von Y besteht aus Leerzeichen und Tabulatoren. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
Gibt zurück, wenn X mit dem RegEx-Muster Y übereinstimmt. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
Gibt den Maximalwert in einer Spalte zurück. | max(delay, mydelay) |
• max()• arg_max() |
… | summarize max(field) |
md5(X) |
Gibt den MD5-Hash eines Zeichenfolgenwerts Xzurück. |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
Gibt den Mindestwert in einer Spalte zurück. | min(delay, mydelay) |
• min_of()• min() • arg_min |
KQL-Beispiel |
mvcount(X) |
Gibt die Anzahl (Gesamt) der Werte zurück X . |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Filtert ein mehrwertiges Feld basierend auf dem booleschen X Ausdruck. |
mvfilter(match(email, "net$")) |
mv-apply |
KQL-Beispiel |
mvindex(X,Y,Z) |
Gibt eine Teilmenge des mehrwertigen Arguments X ab einer Startposition (nullbasiert) Y bis Z (optional) zurück. |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Bei einem mehrwertigen Feld X und einem Zeichenfolgen-Trennzeichen Y werden die einzelnen Werte von X mit Y zusammengefügt. |
mvjoin(address, ";") |
strcat_array |
KQL-Beispiel |
now() |
Gibt die aktuelle Zeit zurück, die in Unix-Zeit dargestellt wird. | now() |
now() |
now()now(-2d) |
null() |
Akzeptiert keine Argumente und gibt zurück NULL. |
null() |
null | null |
nullif(X,Y) |
Enthält zwei Argumente, X und Y, und gibt zurück X , wenn die Argumente unterschiedlich sind. Andernfalls wird NULL zurückgegeben. |
nullif(fieldA, fieldB) |
iff |
iff(fieldA==fieldB, null, fieldA) |
random() |
Gibt eine pseudozufällige Zahl zwischen 0 und 2147483647 zurück. |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Bei Angabe einer Epochenzeit X und einer relativen Zeitangabe Y wird der Epochenzeitwert zurückgegeben, der sich ergibt, wenn Y auf X angewendet wird. |
relative_time(now(),"-1d@d") |
UNIX-Zeit | KQL-Beispiel |
replace(X,Y,Z) |
Gibt eine Zeichenfolge zurück, die gebildet wird, indem in der Zeichenfolge Z jedes Vorkommen der Zeichenfolge Y für reguläre Ausdrücke durch die Zeichenfolge X ersetzt wird. |
Gibt das Datum mit vertauschten Monats- und Tageszahlen zurück. Beispielsweise ist für die 4/30/2015 Eingabe die Ausgabe 30/4/2009:replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
KQL-Beispiel |
round(X,Y) |
Gibt X mit der durch Y angegebenen Anzahl von Dezimalstellen gerundet zurück. Standardmäßig wird auf eine ganze Zahl gerundet. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
Gibt X zurück, wobei die Zeichen von Y auf der rechten Seite entfernt wurden. Wenn Y nicht angegeben ist, werden Leerzeichen und Tabulatoren entfernt. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
Gibt zurück TRUE , wenn das Ereignis mit der Suchzeichenfolge Xübereinstimmt. |
searchmatch("foo AND bar") |
iff() | iff(field has "X","Yes","No") |
split(X,"Y") |
Gibt X als mehrwertiges Feld zurück, das durch Trennzeichen Ygeteilt wird. |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
Gibt die Quadratwurzel von zurück X. |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Gibt den Epochenzeitwert X zurück, der mit dem von Yangegebenen Format gerendert wird. |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
Bei einer als Zeichenfolge X dargestellten Zeit wird der aus dem Format Y geparste Wert zurückgegeben. |
strptime(timeStr, "%H:%M") |
format_datetime() | KQL-Beispiel |
substr(X,Y,Z) |
Gibt ein Teilzeichenfolgenfeld X von der Startposition (einsbasiert) Y für Z (optional) Zeichen zurück. |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
Gibt die Wanduhrzeit mit Mikrosekundenauflösung zurück. | time() |
format_datetime() |
KQL-Beispiel |
tonumber(X,Y) |
Konvertiert die Eingabezeichenfolge X in eine Zahl, wobei Y (optional, Standardwert ist 10) die Basis der Zahl definiert, in die konvertiert werden soll. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
Beschreibung | SPL-Beispiel | tostring() |
tostring(123) |
typeof(X) |
Gibt eine Zeichenfolgendarstellung des Feldtyps zurück. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
Gibt die decodierte URL X zurück. |
SPL-Beispiel | url_decode |
KQL-Beispiel |
case(X,"Y",…) SPL-Beispiel
Dieses SPL-Beispiel liefert eine andere Nachrichtenzeichenkette basierend auf dem HTTP-Fehlercode.
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…) KQL-Beispiel
Dieses KQL-Beispiel verwendet case() die Zuweisung einer Nachricht basierend auf dem Wert des Fehlercodes.
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z) KQL-Beispiel
Dieses KQL-Beispiel wird verwendet iif() , um zu kennzeichnen, ob ein Zeitstempel auf den aktuellen Tag fällt.
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X) KQL-Beispiel
Dieses KQL-Beispiel prüft, ob X ein ganzzahlkompatibler Typ besitzt, indem es und iifverwendetgettype.
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X) KQL-Beispiel
Dieses KQL-Beispiel prüft, ob X ein Zeichenkettenwert ist, indem es und iifverwendetgettype.
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y") Beispiel
Diese KQL-Beispiele zeigen mehrere String-Matching-Operatoren, die man verwenden kann, um SPL-Musterabstimmung like zu replizieren.
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…) KQL-Beispiel
Diese KQL-Beispiele zeigen verschiedene Methoden zur Berechnung von Mindestwerten unter Verwendung von min_of, min, und arg_min.
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X) KQL-Beispiel
Dieses KQL-Beispiel filtert mv-apply und reduziert mehrwertige Inhalte, ähnlich wie die SPL-Funktion mvfilter .
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y) KQL-Beispiel
Dieses KQL-Beispiel verwendet, strcat_array um Array-Elemente zu einer einzigen Zeichenkette mit einem benutzerdefinierten Separator zu verbinden.
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y) KQL-Beispiel
Dieses KQL-Beispiel wandelt einen Datumszeitwert in Unix-Epochenzeit um für relativzeitliche Berechnungen.
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z) KQL-Beispiel
Dieses KQL-Beispiel verwendet replace() mit einem Regex-Muster, um die Monats- und Tagesteile einer Datumsreihe zu tauschen.
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y) KQL-Beispiel
Dieses KQL-Beispiel wird format_datetime verwendet, um nur die Stunden und Minuten eines Date-Time-Werts anzuzeigen.
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time() KQL-Beispiel
Dieses KQL-Beispiel formatiert einen Datetime-Wert als Zeitzeichen, die Stunden, Minuten und Sekunden anzeigt.
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y) Beschreibung
Die SPL-Funktion tostring(X,Y) wandelt Werte in Zeichenketten um und unterstützt mehrere Formatierungsoptionen. Es gibt einen Feldwert von als X Zeichenkette zurück.
- Wenn der Wert von
Xeine Zahl ist,Xwird in einen Zeichenfolgenwert neu formatiert. - Wenn
Xein boolescher Wert ist,Xwird inTRUEoderFALSEneu formatiert. - Wenn
Xeine Zahl ist, ist das zweite ArgumentYoptional und kann entwederhexsein (konvertiertXin ein Hexadezimal),commas(FormateXmit Kommas und zwei Dezimalstellen) oderduration(konvertiertXvon einem Zeitformat in Sekunden in ein lesbares Zeitformat:HH:MM:SS).
tostring(X,Y) SPL-Beispiel
Dieses tostring SPL-Beispiel liefert:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X) SPL-Beispiel
Dieses SPL-Beispiel dekodiert einen URL-kodierten String wieder in seine ursprüngliche Form.
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
Vergleichen Sie gängige Splunk-Befehle stats mit KQL-Äquivalenten
Diese Tabelle bildet gängige SPL-Aggregationsfunktionen stats ihren KQL-Äquivalenten in Microsoft Sentinel zu.
| SPL-Befehl | Beschreibung | KQL-Befehl | KQL-Beispiel |
|---|---|---|---|
avg(X) |
Gibt den Mittelwert der Werte des Felds Xzurück. |
avg() | avg(X) |
count(X) |
Gibt die Anzahl der Vorkommen des Felds Xzurück. Um einen bestimmten Feldwert anzugeben, der übereinstimmen soll, formatieren Sie X als eval(field="value"). |
count() | summarize count() |
dc(X) |
Gibt die Anzahl der unterschiedlichen Werte des Felds Xzurück. |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
Gibt den chronologisch frühesten sichtbaren Wert von zurück X. |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Gibt den chronologisch letzten angezeigten Wert von zurück X. |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
Gibt den Maximalwert des Felds Xzurück. Wenn die Werte von X nicht numerisch sind, wird der Maximalwert in alphabetischer Reihenfolge gefunden. |
max() | …\| summarize max(X) |
median(X) |
Gibt den mittleren Wert des Felds Xzurück. |
percentile() | …\| summarize percentile(X, 50) |
min(X) |
Gibt den Mindestwert des Felds Xzurück. Wenn die Werte von X nicht numerisch sind, wird der Mindestwert in alphabetischer Reihenfolge gefunden. |
min() | …\| summarize min(X) |
mode(X) |
Gibt den häufigsten Wert des Felds Xzurück. |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
Gibt den Perzentilwert X des Felds Yzurück. Gibt beispielsweise perc5(total) den fünften Perzentilwert eines Felds totalzurück. |
percentile() | …\| summarize percentile(Y, 5) |
range(X) |
Gibt die Differenz zwischen dem Maximal- und minimalen Wert des Felds Xzurück. |
range() | range(1, 3) |
stdev(X) |
Gibt die Standardabweichung des Beispiels des Felds Xzurück. |
Stdev | stdev() |
stdevp(X) |
Gibt die Populationsstandardabweichung des Feldes X zurück. |
stdevp() | stdevp() |
sum(X) |
Gibt die Summe der Werte des Felds Xzurück. |
sum() | sum(X) |
sumsq(X) |
Gibt die Summe der Quadrate der Werte des Felds Xzurück. |
||
values(X) |
Gibt die Liste aller unterschiedlichen Werte des Felds X als mehrwertigen Eintrag zurück. Die Reihenfolge der Werte ist alphabetisch. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
Gibt die Stichprobenvarianz des Felds Xzurück. |
Varianz | variance(X) |
Nächste Schritte
Sie haben erfahren, wie Sie Splunk-Erkennungsregeln identifizieren, vergleichen und den Microsoft Sentinel-Analyseregeln zuordnen. Fahren Sie mit der Migration Ihrer SOAR-Automatisierung fort.