Freigeben über


Migrieren von Splunk-Erkennungsregeln zu Microsoft Sentinel

Splunk-Erkennungsregeln sind SIEM-Komponenten (Security Information & Event Management), die mit Analyseregeln in Microsoft Sentinel vergleichbar sind. In diesem Artikel werden Konzepte beschrieben, um sie zu identifizieren, zu vergleichen und zu Microsoft Sentinel zu migrieren. Die beste Möglichkeit besteht darin, mit der SIEM-Migrationserfahrung zu beginnen, die sofort einsatzbereite (OOTB-)Analyseregeln identifiziert, in die automatisch übersetzt werden kann.

Um Ihre Splunk Observability-Bereitstellung zu migrieren, lesen Sie die Anleitung für die Migration von Splunk zu Azure Monitor Protokollen.

Überwachungsregeln

Microsoft Sentinel verwendet Analysen mit maschinellem Lernen, um hochwertige und umsetzbare Incidents zu erstellen. Einige Ihrer vorhandenen Splunk-Erkennungen sind in Microsoft Sentinel möglicherweise redundant, sodass sie nicht einfach ohne Überprüfung migriert werden sollten. Überdenken Sie diese Aspekte, während Sie Ihre vorhandenen Erkennungsregeln identifizieren.

  • Achten Sie darauf, dass Sie Anwendungsfälle auswählen, die die Regelmigration unter Berücksichtigung von Geschäftspriorität und Effizienz rechtfertigen.
  • Stellen Sie sicher, dass Sie die Microsoft Sentinel-Regeltypen verstehen.
  • Stellen Sie sicher, dass Sie die Regelterminologie verstehen.
  • Überprüfen Sie veraltete Regeln, für die in den letzten 6 bis 12 Monaten keine Benachrichtigungen gesendet wurden, und ermitteln Sie, ob sie noch relevant sind.
  • Beseitigen Sie Bedrohungen oder Warnungen mit niedrigem Schweregrad, die Sie routinemäßig ignorieren.
  • Vergewissern Sie sich, dass die Datenquellen verbunden sind, und überprüfen Sie die Datenverbindungsmethoden. Microsoft Sentinel-Analysen erfordern, dass der Datentyp im Log Analytics-Arbeitsbereich vorhanden ist, bevor die Regel aktiviert wird. Gehen Sie erneut die Konversationen zur Datensammlung durch, um die Datentiefe und -breite für die zu erkennenden Anwendungsfälle sicherzustellen. Verwenden Sie dann die SIEM-Migrationserfahrung, um sicherzustellen, dass die Datenquellen richtig zugeordnet werden.

Migrationsregeln

Nachdem Sie die zu migrierenden Splunk-Erkennungen identifiziert haben, lesen 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-Migrationserfahrung, um zu ermitteln, welche Splunk-Erkennungen automatisch in OOTB-Vorlagen konvertiert werden.
  • Übersetzen Sie Erkennungen, die nicht mit OOTB-Analyseregeln übereinstimmen. Die beste Möglichkeit zum automatischen Übersetzen von Splunk-Erkennungen bietet die SIEM-Migrationserfahrung.
  • Ermitteln Sie weitere Algorithmen für Ihre Anwendungsfälle, indem Sie Communityressourcen, z. B. im SOC Prime Threat Detection Marketplace.
  • Übersetzen Sie Erkennungen manuell, für die keine integrierten Regeln verfügbar sind oder die nicht automatisch übersetzt werden können. Erstellen Sie die neuen KQL-Abfragen, und überprüfen Sie die Regelzuordnung.

Weitere Informationen finden Sie unter Bewährte Methoden zum Migrieren von Erkennungsregeln.

Schritte zur Regelmigration

  1. Stellen Sie sicher, dass für jede Regel, die Sie migrieren möchten, ein Testsystem vorhanden ist.

    1. Konzipieren Sie einen Überprüfungsprozess für die migrierten Regeln, einschließlich vollständiger Testszenarios und Skripts.

    2. Stellen Sie sicher, dass Ihr Team über nützliche Ressourcen verfügt, damit die migrierten Regeln getestet werden können.

    3. Vergewissern Sie sich, dass die erforderlichen Datenquellen verbunden sind, und überprüfen Sie die Datenverbindungsmethoden.

  2. Überprüfen Sie, ob die Erkennungen als OOTB-Vorlagen in Microsoft Sentinel verfügbar sind:

    • Verwenden Sie die SIEM-Migrationserfahrung, um die Übersetzung und Installation der OOTB-Vorlagen zu automatisieren.

      Weitere Informationen finden Sie unter Verwenden der SIEM-Migrationsumgebung.

    • Wenn einige Ihrer Anwendungsfälle nicht in den Erkennungen enthalten sind, erstellen Sie mit OOTB-Regelvorlagen Regeln für Ihren eigenen Arbeitsbereich.

      Wechseln Sie in Microsoft Sentinel zum Inhaltshub.

      Filtern Sie den Inhaltstyp nach Vorlagen für Analyseregeln.

      Suchen Sie alle geeigneten Inhaltshublösungen oder eigenständige Analyseregelvorlagen, und installieren/aktualisieren Sie sie.

      Weitere Informationen finden Sie unter Standardmäßig verfügbare Erkennung von Bedrohungen.

    • Wenn Sie Erkennungen haben, die nicht von den OOTB-Regeln von Microsoft Sentinel abgedeckt sind, versuchen Sie zunächst, mit der SIEM-Migrationserfahrung eine automatische Übersetzung.

    • Wenn weder die OOTB-Regeln noch die SIEM-Migration die Erkennungen vollständig übersetzen, erstellen Sie die Regel manuell. Führen Sie in solchen Fällen die folgenden Schritte aus, um Ihre Regel zu erstellen:

      1. Identifizieren Sie die Datenquellen, die Sie in der Regel verwenden möchten. Identifizieren Sie die Microsoft Sentinel-Tabellen, die Sie abfragen möchten, indem Sie eine Zuordnungstabelle zwischen den Datenquellen und den Datentabellen erstellen.

      2. Identifizieren Sie alle Attribute, Felder oder Entitäten in den Daten, die Sie in den Regeln verwenden möchten.

      3. Identifizieren Sie die Regelkriterien und die Logik. In dieser Phase sollten Sie nach Regelvorlagen als Beispiele zum Erstellen der KQL-Abfragen suchen.

        Berücksichtigen Sie Filter, Korrelationsregeln, aktive Listen, Verweissätze, Watchlists, Erkennungsanomalien, Aggregationen usw. Sie können die von der Legacy-SIEM-Lösung bereitgestellten Verweise verwenden, um nachzuvollziehen, wie Sie die Abfragesyntax am besten zuordnen können.

      4. Identifizieren Sie die Auslöserbedingung und die Regelaktion, und erstellen und überprüfen Sie dann die KQL-Abfrage. Wenn Sie die Abfrage überprüfen, sollten Sie die Anleitungsressourcen für die KQL-Optimierung in Betracht ziehen.

  3. Testen Sie die Regel mit jedem der relevanten Anwendungsfälle. Wenn sie nicht die erwarteten Ergebnisse liefert, überprüfen Sie die KQL-Abfrage und testen sie erneut.

  4. Wenn Sie mit dem Ergebnis zufrieden sind, können Sie die Regel als migriert betrachten. Erstellen Sie bei Bedarf ein Playbook für die Regelaktion. Weitere Informationen finden Sie unter Automatisieren der Bedrohungsabwehr mit Playbooks in Microsoft Sentinel.

Weitere Informationen zu Analyseregeln:

Vergleichen der Regelterminologie

Die folgende Tabelle hilft Ihnen, das Konzept einer Regel basierend auf der Kusto-Abfragesprache (KQL) in Microsoft Sentinel mit einer Splunk-Erkennung abzugleichen, die auf der Suchverarbeitungssprache (SPL) basiert.

Splunk Microsoft Sentinel
Regeltyp • Geplant
• Echtzeit
• Geplante Abfrage
• Fusion
• Microsoft Security
• Machine Learning-(ML-)Verhaltensanalysen
Kriterien Definieren in SPL Definieren in KQL
Auslöserbedingung • Anzahl von Ergebnissen
• Anzahl von Hosts
• Anzahl von Quellen
• Benutzerdefiniert
Schwellenwert: Die Anzahl der Abfrageergebnisse
Aktion • Hinzufügen zu ausgelösten Warnungen
• Protokollieren von Ereignissen
• Ausgeben von Ergebnissen zum Nachschlagen
• Und mehr
• Warnungen und Vorfälle erstellen
• Integration in Logic Apps herstellen

Zuordnen und Vergleichen von Regelbeispielen

Verwenden Sie diese Beispiele, um Regeln von Splunk zu Microsoft Sentinel in verschiedenen Szenarien zu vergleichen und zuzuordnen.

Allgemeine Suchbefehle

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 bestimmten Kriterium entsprechen. distinct
summarize
… | summarize by Computer, EventID
eval Berechnet einen Ausdruck. Weitere Informationen finden Sie unter Allgemeine eval-Befehle. extend T | extend duration = endTime - startTime
fields Entfernt Felder aus Suchergebnissen. project
project-away
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. externaldata
lookup
KQL-Beispiel
rename Benennt ein Feld um. Verwenden Sie Platzhalter, um mehrere Felder anzugeben. project-rename T | project-rename new_column_name = column_name
rex Gibt Gruppennamen mit regulären Ausdrücken an, um Felder zu extrahieren. matches regex … | where field matches regex "^addr.*"
search Filtert Ergebnisse in Ergebnisse, die dem Suchausdruck entsprechen. search search "X"
sort Sortiert die Suchergebnisse nach den angegebenen Feldern. sort T | sort by strlen(country) asc, price desc
stats Stellt Statistiken bereit, optional nach Feldern gruppiert. Erfahren Sie mehr über allgemeine stats-Befehle. summarize KQL-Beispiel
mstats Ähnlich wie „stats“, wird anstelle von Ereignissen auf Metriken verwendet. summarize KQL-Beispiel
table Gibt an, welche Felder im Ergebnissatz beibehalten werden sollen, und speichert Daten im Tabellenformat. project T | project columnA, columnB
top/rare Zeigt die am häufigsten verwendeten Werte eines Felds an. top T | top 5 by Name desc nulls last
transaction Gruppiert Suchergebnisse in Transaktionen.

SPL-Beispiel
Beispiel: row_window_session KQL-Beispiel
eventstats Generiert Sammelstatistiken aus Feldern in Ihren Ereignissen und speichert diese Statistiken in einem neuen Feld.

SPL-Beispiel
Beispiele:
join
make_list
mv-expand
KQL-Beispiel
streamstats Sucht nach der kumulativen Summe eines Felds.

SPL-Beispiel:
... | streamstats sum(bytes) as bytes _ total \| timechart
row_cumsum ...\| serialize cs=row_cumsum(bytes)
anomalydetection Sucht 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. where T | where fruit=="apple"

lookup-Befehl: KQL-Beispiel

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

Sales 
| summarize NumTransactions=count(), 
Total=sum(UnitPrice * NumUnits) by Fruit, 
StartOfMonth=startofmonth(SellDateTime) 

mstats-Befehl: KQL-Beispiel

T | summarize count() by price_range=bin(price, 10.0) 

transaction-Befehl: SPL-Beispiel

sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration

transaction-Befehl: KQL-Beispiel

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 Rowset zu berechnen.

...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))

eventstats-Befehl: SPL-Beispiel

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

In diesem Beispiel wird die join-Anweisung veranschaulicht:

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

In diesem Beispiel wird die make_list-Anweisung veranschaulicht:

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

sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price

anomalydetection-Befehl: KQL-Beispiel

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)

Häufige eval-Befehle

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 der X- und Y-Argumente, bei denen die X-Argumente boolesche Ausdrücke sind. Wenn deren Wert TRUE ist, geben 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 mit doppelt genauer Gleitkommaarithmetik 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) Wird X als TRUE ausgewertet, ist das Ergebnis das zweite Argument Y. Wird X als FALSE ausgewertet, wird das Ergebnis als das dritte Argument Z ausgewertet. if(error==200,
"OK", "Error")
iif() KQL-Beispiel
isbool(X) Gibt TRUE zurück, wenn X ein boolescher Wert ist. isbool(field) iif()
gettype
iif(gettype(X) =="bool","TRUE","FALSE")
isint(X) Gibt TRUE zurück, wenn X eine ganze Zahl ist. isint(field) iif()
gettype
KQL-Beispiel
isnull(X) Gibt TRUE zurück, wenn X NULL ist. isnull(field) isnull() isnull(field)
isstr(X) Gibt TRUE zurück, wenn X eine Zeichenfolge ist. isstr(field) iif()
gettype
KQL-Beispiel
len(X) Diese Funktion gibt die Zeichenlänge einer Zeichenfolge X zurück. len(field) strlen() strlen(field)
like(X,"y") Gibt TRUE zurück, wenn X dem SQLite-Muster in Y entspricht. like(field, "addr%") has
contains
startswith
matches 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 klein geschriebenen Wert von X zurück. lower(username) tolower tolower(username)
ltrim(X,Y) Gibt X mit den Zeichen im Parameter Y zurück, die von der linken Seite gekürzt wurden. Die Standardausgabe von Y sind Leer- und Tabulatorzeichen. ltrim(" ZZZabcZZ ", " Z") trim_start() trim_start(“ ZZZabcZZ”,” ZZZ”)
match(X,Y) Wird zurückgegeben, wenn X dem RegEx-Muster Y entspricht. match(field, "^\d{1,3}.\d$") matches regex … | where field matches regex @"^\d{1,3}.\d$")
max(X,…) Gibt den größten Wert in einer Spalte zurück. max(delay, mydelay) max()
arg_max()
… | summarize max(field)
md5(X) Gibt den MD5-Hash eines Zeichenfolgenwerts X zurück. md5(field) hash_md5 hash_md5("X")
min(X,…) Gibt den kleinsten Wert in einer Spalte zurück. min(delay, mydelay) min_of()
min()
arg_min
KQL-Beispiel
mvcount(X) Gibt die Zahl (Summe) von X-Werten zurück. 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 X-Arguments von 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 Ywerden die einzelnen Werte von X mit Y miteinander verknüpft. 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 NULL zurück. null() null null
nullif(X,Y) Enthält zwei Argumente, X und Y, und gibt X zurück, wenn die Argumente unterschiedlich sind. Andernfalls wird NULLzurückgegeben. nullif(fieldA, fieldB) iif iif(fieldA==fieldB, null, fieldA)
random() Gibt eine Pseudo-Zufallszahl zwischen 0 und 2147483647 zurück. random() rand() rand()
relative_ time(X,Y) Bei einer Epochenzeit X und einer relativen Zeitangabe Y wird der Epochenzeitwert von Y, der auf X angewendet wird, zurückgegeben. relative_time(now(),"-1d@d") unix time KQL-Beispiel
replace(X,Y,Z) Gibt eine Zeichenfolge zurück, die durch Substituieren einer Zeichenfolge Z für jedes Vorkommen regulärer Ausdruckszeichenfolgen Y in einer Zeichenfolge X gebildet wird. Gibt das Datum zurück, bei dem die Zahlen für Monat und Tag vertauscht sind.
Beispielsweise lautet für die Eingabe 4/30/2015 die Ausgabe 30/4/2009:

replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/")
replace() KQL-Beispiel
round(X,Y) Gibt X zurück, gerundet auf die durch Y festgelegte Zahl der Dezimalstellen. Es wird standardmäßig auf eine ganze Zahl gerundet. round(3.5) round round(3.5)
rtrim(X,Y) Gibt X mit den Zeichen von Y zurück, die von der rechten Seite gekürzt werden. Wenn Y nicht angegeben ist, werden Leer- und Tabulatorzeichen gekürzt. rtrim(" ZZZZabcZZ ", " Z") trim_end() trim_end(@"[ Z]+",A)
searchmatch(X) Gibt TRUE zurück, wenn das Ereignis mit der Suchzeichenfolge X übereinstimmt. searchmatch("foo AND bar") iif() iif(field has "X","Yes","No")
split(X,"Y") Gibt X als mehrwertiges Feld zurück, geteilt durch das Trennzeichen Y. split(address, ";") split() split(address, ";")
sqrt(X) Gibt die Quadratwurzel von X zurück. sqrt(9) sqrt() sqrt(9)
strftime(X,Y) Gibt den Epochenzeitwert X im durch Y festgelegten Format zurück. strftime(_time, "%H:%M") format_datetime() format_datetime(time,'HH:mm')
strptime(X,Y) Gibt eine Zeit zurück, die durch eine Zeichenfolge X dargestellt wird, deren Wert aus dem Format Y geparst wird. strptime(timeStr, "%H:%M") format_datetime() KQL-Beispiel
substr(X,Y,Z) Gibt ein Teilzeichenfolgenfeld X von der Startposition (einsbasiert) Y für Z (optionale) Zeichen zurück. substr("string", 1, 3) substring() substring("string", 0, 3)
time() Gibt die Wanduhrzeit mit Mikrosekundengenauigkeit 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 zu konvertierenden Zahl definiert. 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 URL X decodiert zurück. SPL-Beispiel url_decode KQL-Beispiel

case(X,"Y",…) SPL-Beispiel

case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")

case(X,"Y",…) KQL-Beispiel

T
| extend Message = case(error == 404, "Not found", 
error == 500,"Internal Server Error", "OK") 

if(X,Y,Z) KQL-Beispiel

iif(floor(Timestamp, 1d)==floor(now(), 1d), 
"today", "anotherday")

isint(X) KQL-Beispiel

iif(gettype(X) =="long","TRUE","FALSE")

isstr(X) KQL-Beispiel

iif(gettype(X) =="string","TRUE","FALSE")

like(X,"y")-Beispiel

… | where field has "addr"

… | where field contains "addr"

… | where field startswith "addr"

… | where field matches regex "^addr.*"

min(X,…) KQL-Beispiel

min_of (expr_1, expr_2 ...)

…|summarize min(expr)

…| summarize arg_min(Price,*) by Product

mvfilter(X) KQL-Beispiel

T | mv-apply Metric to typeof(real) on 
(
 top 2 by Metric desc
)

mvjoin(X,Y) KQL-Beispiel

strcat_array(dynamic([1, 2, 3]), "->")

relative time(X,Y) KQL-Beispiel

let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s 
};

replace(X,Y,Z) KQL-Beispiel

replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)

strptime(X,Y) KQL-Beispiel

format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')

time() KQL-Beispiel

format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')

tostring(X,Y)

Gibt einen Feldwert X als Zeichenfolge zurück.

  • Wenn der Wert X eine Zahl ist, wird X in einen Zeichenfolgenwert neu formatiert.
  • Wenn X ein boolescher Wert ist, wird X in TRUE oder FALSE neu formatiert.
  • Wenn X eine Zahl ist, ist das zweite Argument Y optional und kann entweder hex (konvertiert X in eine Hexadezimalzahl), commas (formatiert X mit Kommas und zwei Dezimalstellen) oder duration (konvertiert X aus einem Zeitformat in Sekunden in ein lesbares Zeitformat: HH:MM:SS) sein.
tostring(X,Y) SPL-Beispiel

Die Rückgabe des Beispiels lautet wie folgt:

foo=615 and foo2=00:10:15:

… | eval foo=615 | eval foo2 = tostring(
foo, "duration")

urldecode(X) SPL-Beispiel

urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")

KQL-Beispiel für allgemeine stats-Befehle

SPL-Befehl BESCHREIBUNG KQL-Befehl KQL-Beispiel
avg(X) Gibt den Mittelwert der Werte des Felds X zurück. avg() avg(X)
count(X) Gibt die Anzahl der Vorkommen des Felds X zurü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 eindeutigen Werte des Felds X zurück. dcount() …\| summarize countries=dcount(country) by continent
earliest(X) Gibt den chronologisch frühesten Wert von X zurück. arg_min() … \| summarize arg_min(TimeGenerated, *) by X
latest(X) Gibt den chronologisch spätesten Wert von X zurück. arg_max() … \| summarize arg_max(TimeGenerated, *) by X
max(X) Gibt den maximalen Wert des Felds X zurück. Wenn die Werte von X nicht numerisch sind, wird der Maximalwert über alphabetische Sortierung ermittelt. max() …\| summarize max(X)
median(X) Gibt den mittleren Wert des Felds X zurück. percentile() …\| summarize percentile(X, 50)
min(X) Gibt den minimalen Wert des Felds X zurück. Wenn die Werte von X nicht numerisch sind, wird der Minimalwert über alphabetische Sortierung ermittelt. min() …\| summarize min(X)
mode(X) Gibt den am häufigsten vorkommenden Wert des Felds X zurück. top-hitters() …\| top-hitters 1 of Y by X
perc(Y) Gibt den Prozentwert X des Felds Y zurück. perc5(total) gibt beispielsweise den fünften Prozentwert eines Felds total zurück. percentile() …\| summarize percentile(Y, 5)
range(X) Gibt den Unterschied zwischen den maximalen und minimalen Werten des Felds X zurück. range() range(1, 3)
stdev(X) Gibt die Standardabweichung einer Stichprobe des Felds X zurück. stdev stdev()
stdevp(X) Gibt die Standardabweichung der Population des FeldsX zurück. stdevp() stdevp()
sum(X) Gibt die Summe der Werte des Felds X zurück. sum() sum(X)
sumsq(X) Gibt die Quadratsumme der Werte des Felds X zurück.
values(X) Gibt die Liste aller eindeutigen Werte des Felds X als Eintrag mit mehreren Werten zurück. Die Reihenfolge der Werte ist alphabetisch. make_set() …\| summarize r = make_set(X)
var(X) Gibt die Stichprobenabweichung des Felds X zurück. variance variance(X)

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie Ihre Migrationsregeln von Splunk zu Microsoft Sentinel zuordnen.