Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Reguły detekcji w Splunk to elementy systemu zarządzania informacjami i zdarzeniami bezpieczeństwa (SIEM), które odpowiadają regułom analitycznym w Microsoft Sentinel. Ten artykuł opisuje koncepcje używane do identyfikacji, porównywania i migracji reguł wykrywania Splunk do Microsoft Sentinel. Najlepszym sposobem migrowania reguł wykrywania z platformy Splunk do Microsoft Sentinel jest rozpoczęcie od funkcji migracji SIEM, która identyfikuje wbudowane reguły analityczne (OOTB) do automatycznego tłumaczenia.
Jeśli chcesz przeprowadzić migrację wdrożenia rozwiązania Splunk Observability, dowiedz się więcej o tym, jak przeprowadzić migrację z aplikacji Splunk do Azure Monitor Logs.
Reguły inspekcji
Microsoft Sentinel używa analizy uczenia maszynowego do tworzenia zdarzeń o wysokiej wierności i możliwości działania. Niektóre z istniejących wykrywań Splunk mogą być redundantne w Microsoft Sentinel, więc nie migruj wszystkich detekcji Splunk na ślepo. Zapoznaj się z poniższymi aspektami audytu reguł podczas identyfikowania Twoich istniejących reguł wykrywania.
- Pamiętaj, aby wybrać przypadki użycia, które uzasadniają migrację reguł, biorąc pod uwagę priorytet biznesowy i wydajność.
- Sprawdź, czy rozumiesz typy reguł Microsoft Sentinel.
- Sprawdź, czy rozumiesz terminologię reguł.
- Przejrzyj nieaktualne reguły, które nie mają alertów w ciągu ostatnich 6–12 miesięcy, i określ, czy są one nadal istotne.
- Eliminuj zagrożenia niskiego poziomu lub alerty, które są rutynowo ignorowane.
- Microsoft Sentinel Analytics wymaga, aby typ danych był obecny w obszarze roboczym usługi Log Analytics przed włączeniem reguły. Upewnij się, że wymagane źródła danych są połączone i przejrzyj metody połączenia danych. Wróć do rozmów dotyczących zbierania danych, aby zapewnić odpowiednią szczegółowość i zakres danych dla przypadków użycia, które planujesz wykrywać. Następnie skorzystaj z funkcji migracji SIEM, aby upewnić się, że źródła danych zostały odpowiednio zmapowane.
Migrowanie reguł
Po zidentyfikowaniu detekcji Splunk, które mają zostać zmigrowane, zapoznaj się z następującymi kwestiami dotyczącymi procesu migracji:
- Porównaj istniejące funkcje reguł analizy OOTB Microsoft Sentinel z bieżącymi przypadkami użycia. Użyj narzędzia migracji SIEM, aby zobaczyć, które detekcje Splunk są automatycznie przekształcane w gotowe szablony OOTB.
- Przetłumacz wykrycia, które nie są zgodne z regułami analitycznymi OOTB. Najlepszym sposobem na automatyczne tłumaczenie detekcji Splunk jest środowisko migracji SIEM.
- Odkryj więcej algorytmów dla swoich zastosowań, przeglądając zasoby społeczności, takie jak SOC Prime Threat Detection Marketplace.
- Ręcznie przetłumacz detekcje, jeśli wbudowane reguły nie są dostępne lub nie zostały przetłumaczone automatycznie. Utwórz nowe zapytania KQL i przejrzyj mapowanie reguł.
Aby uzyskać więcej informacji, zobacz najlepsze rozwiązania dotyczące migrowania reguł wykrywania.
Etapy migracji reguł
Wykonaj następujące kroki, aby zweryfikować, przetłumaczyć i przetestować każdą regułę wykrywania w systemie Splunk podczas migracji do Microsoft Sentinel.
Sprawdź, czy masz wdrożony system testowy dla każdej reguły, którą chcesz przenieść.
Przygotowanie procesu weryfikacji dla zmigrowanych reguł, w tym pełnych scenariuszy testowych i skryptów.
Upewnij się, że twój zespół ma przydatne zasoby do testowania zmigrowanych reguł.
Upewnij się, że masz połączone wymagane źródła danych i przejrzyj metody połączenia danych.
Sprawdź, czy twoje wykrycia są dostępne jako szablony OOTB w Microsoft Sentinel:
Użyj środowiska migracji SIEM , aby zautomatyzować tłumaczenie i instalację szablonów OOTB.
Aby uzyskać więcej informacji, zobacz Korzystanie z środowiska migracji SIEM.
Jeśli przypadki użycia nie zostały odzwierciedlone w wykrywaniach, utwórz reguły dla własnego obszaru roboczego przy użyciu szablonów reguł OOTB.
W Microsoft Sentinel przejdź do centrum zawartości.
Filtruj typ zawartości dla szablonów reguł analizy .
Znajdź i zainstaluj/zaktualizuj każde odpowiednie rozwiązanie centrum zawartości lub szablon reguły analizy autonomicznej.
Aby uzyskać więcej informacji, zobacz Gotowe do użycia wykrywanie zagrożeń.
Jeśli masz wykrycia, które nie są objęte regułami OOTB Microsoft Sentinel, najpierw wypróbuj środowisko migracji SIEM w celu automatycznego tłumaczenia.
Jeśli ani reguły OOTB, ani migracja SIEM nie przetłumaczą całkowicie wykrywania, utwórz regułę ręcznie. Aby utworzyć regułę, wykonaj następujące kroki:
Zidentyfikuj źródła danych, których chcesz użyć w regule. Zidentyfikuj tabele w usłudze Microsoft Sentinel, które chcesz odpytywać, tworząc tabelę mapowania między źródłami danych i tabelami.
Zidentyfikuj wszystkie atrybuty, pola lub jednostki w danych, których chcesz użyć w regułach.
Określ kryteria i logikę swojej reguły. Podczas identyfikowania kryteriów i logiki reguły rozważ użycie szablonów reguł jako przykładów tworzenia zapytań języka KQL.
Należy wziąć pod uwagę filtry, reguły korelacji, aktywne listy, zestawy odwołań, listy obserwowanych, anomalie wykrywania, agregacje itd. Możesz użyć odwołań dostarczonych przez starszą funkcję SIEM, aby zrozumieć , jak najlepiej mapować składnię zapytania.
Zidentyfikuj warunek wyzwalacza i akcję reguły, a następnie utwórz i przejrzyj swoje zapytanie KQL. Analizując zapytanie, skorzystaj z materiałów zawierających zalecenia dotyczące optymalizacji języka KQL.
Przetestuj regułę dla każdego odpowiedniego przypadku użycia. Jeśli nie zapewnia oczekiwanych wyników, przejrzyj i edytuj KQL i przetestuj go ponownie.
Gdy uznasz, że wszystko jest w porządku, uznaj regułę za zmigrowaną. W razie potrzeby utwórz podręcznik procedur dla działania reguły. Aby uzyskać więcej informacji, zobacz Automatyzowanie reagowania na zagrożenia za pomocą podręczników w Microsoft Sentinel.
Dowiedz się więcej o regułach analizy:
- Tworzenie niestandardowych reguł analizy w celu wykrywania zagrożeń. Użyj grupowania alertów , aby zmniejszyć zmęczenie alertów, grupując alerty występujące w danym przedziale czasu.
- Mapuj pola danych do encji w Microsoft Sentinel, aby umożliwić inżynierom SOC definiowanie encji jako części materiału dowodowego śledzonego podczas dochodzenia. Mapowanie encji umożliwia również analitykom SOC korzystanie z intuicyjnego [grafu dochodzenia](investigate-cases.md#use-the-investigation-graph-to-deep-dive), co może pomóc ograniczyć czas i nakład pracy.
- Zbadaj incydenty z danymi UEBA jako przykład sposobu użycia dowodów do wyświetlania zdarzeń, alertów i zakładek skojarzonych z konkretnym incydentem w okienku podglądu incydentu.
- język zapytań Kusto (KQL), którego można użyć do wysyłania żądań tylko do odczytu do bazy danych usługi Log Analytics w celu przetwarzania danych i zwracania wyników. Język KQL jest również używany w innych usługach firmy Microsoft, takich jak Ochrona punktu końcowego w usłudze Microsoft Defender i Application Insights.
Porównanie terminologii reguł
Poniższa tabela porównawcza wyjaśnia, w jaki sposób reguła oparta na języku KQL w usłudze Microsoft Sentinel odpowiada detekcji opartej na SPL w systemie Splunk.
| Splunk | Microsoft Sentinel | |
|---|---|---|
| Typ reguły | •Zaplanowane •Czasu rzeczywistego |
• Zaplanowane zapytanie • Łączenie • Zabezpieczenia firmy Microsoft • Analiza zachowań oparta na uczeniu maszynowym (ML) |
| Kryteria | Definiuj w SPL | Definiuj w języku KQL |
| Warunek wyzwalacza | • Liczba wyników • Liczba hostów • Liczba źródeł • Niestandardowe |
Próg: liczba wyników zapytania |
| Akcja | • Dodaj do uruchomionych alertów • Zdarzenie dziennika zdarzeń • Wyniki wyjściowe do wyszukania • I więcej |
• Tworzenie alertu lub zdarzenia • Integruje się z usługą Logic Apps |
Mapowanie i porównywanie przykładów reguł
Użyj przykładowych tabel SPL-do-KQL w tej sekcji, aby porównać i odwzorować reguły ze Splunk na Microsoft Sentinel w różnych scenariuszach.
Porównaj typowe polecenia wyszukiwania Splunk z przykładami KQL
Ta tabela mapuje typowe polecenia wyszukiwania SPL na ich odpowiedniki KQL w Microsoft Sentinel.
| polecenie SPL | Opis | Operator KQL | Przykład KQL |
|---|---|---|---|
chart/ timechart |
Zwraca wyniki w formie tabelarycznej do tworzenia wykresów szeregów czasowych. | operator renderowania | … | render timechart |
dedup |
Usuwa kolejne wyniki zgodne z określonym kryterium. | • odrębne • podsumowywanie |
… | summarize by Computer, EventID |
eval |
Oblicza wyrażenie. Dowiedz się więcej o typowych eval poleceniach. |
Rozszerzyć | T | extend duration = endTime - startTime |
fields |
Usuwa pola z wyników wyszukiwania. | • projekt • odejście od projektu |
T | project cost=price*quantity, price |
head/tail |
Zwraca pierwsze lub ostatnie wyniki N. | Do góry | T | top 5 by Name desc nulls last |
lookup |
Dodaje wartości pól ze źródła zewnętrznego. | • dane zewnętrzne • wyszukiwanie |
Przykład polecenia wyszukania KQL |
rename |
Zmienia nazwę pola. Użyj symboli wieloznacznych, aby określić wiele pól. | project-rename | T | project-rename new_column_name = column_name |
rex |
Określa nazwy grup przy użyciu wyrażeń regularnych do wyodrębniania pól. | dopasowuje regex | … | where field matches regex "^addr.*" |
search |
Filtruje wyniki do wyników zgodnych z wyrażeniem wyszukiwania. | Szukaj | search "X" |
sort |
Sortuje wyniki wyszukiwania według określonych pól. | Sortuj | T | sort by strlen(country) asc, price desc |
stats |
Udostępnia statystyki, opcjonalnie pogrupowane według pól. Dowiedz się więcej o typowych poleceniach statystyk. | Podsumować | Przykład polecenia statystyki KQL |
mstats |
Podobnie jak statystyki, stosowane do metryk zamiast zdarzeń. | Podsumować | Przykład komendy Mstats KQL |
table |
Określa, które pola mają być przechowywane w zestawie wyników i przechowuje dane w formacie tabelarycznym. | projekt | T | project columnA, columnB |
top/rare |
Wyświetla najbardziej lub najmniej typowe wartości pola. | Do góry | T | top 5 by Name desc nulls last |
transaction |
Grupuje wyniki wyszukiwania w transakcje. Przykład polecenia transakcyjnego SPL |
Przykład: row_window_session | Przykład polecenia transakcyjnego KQL |
eventstats |
Generuje statystyki sumaryczne z pól w zdarzeniach i zapisuje te statystyki w nowym polu. Przykład SPL |
Przykłady: • Dołącz • make_list • rozszerzenie mv-expand |
Przykład KQL |
streamstats |
Znajdź sumę skumulowaną pola. Przykład SPL: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Znajdź anomalie w określonym polu. Przykład SPL |
series_decompose_anomalies() | Przykład KQL |
where |
Filtruje wyniki wyszukiwania przy użyciu eval wyrażeń. Służy do porównywania dwóch różnych pól. |
Gdzie | T | where fruit=="apple" |
lookup polecenie: przykład KQL
Ten przykład KQL służy externaldata do odtworzenia wzorca SPL lookup poprzez filtrowanie użytkowników względem zewnętrznego źródła danych.
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 polecenie: przykład KQL
Ten przykład KQL służy summarize do liczenia transakcji i sumowania sum, pogrupowanych według owoców i miesięcy.
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats polecenie: przykład KQL
Ten przykład KQL dzieli wartości metryczne na zakresy cenowe i liczy rekordy w każdym zakresie.
T | summarize count() by price_range=bin(price, 10.0)
transaction przykład polecenia SPL
Ten przykład SPL grupuje powiązane zdarzenia startu i stop w jedną transakcję według ID aktywności.
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction polecenie: przykład KQL
Ten przykład KQL odtwarza grupowanie transakcji SPL, łącząc zdarzenia start i stop na wspólnym ID aktywności i obliczając czas trwania.
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
Użyj row_window_session(), aby obliczyć wartości początkowe sesji dla kolumny w serializowanym zbiorze wierszy.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats przykład polecenia SPL
Ten przykład SPL oblicza liczbę zdarzeń w kategoriach jednominutowych, a następnie dodaje sumę eventstatsna czas za koszyk .
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats polecenie: przykład KQL
Oto przykład z instrukcją join :
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
Oto przykład z instrukcją make_list :
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 przykład polecenia SPL
Ten przykład SPL wykrywa anomalie w historycznych danych o cenach zamknięcia z okresu 10 lat.
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection polecenie: przykład KQL
Ten przykład KQL wykorzystuje funkcje analizy szeregów czasowych do wykrywania anomalii w trendach logowania kont niepełnosprawnych w ciągu siedmiodniowego okresu wstecznego.
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)
Porównaj typowe polecenia Splunk eval z odpowiednikami KQL
Ta tabela mapuje typowe funkcje SPL eval na ich odpowiedniki KQL w Microsoft Sentinel.
| polecenie SPL | Opis | Przykład SPL | Polecenie KQL | Przykład KQL |
|---|---|---|---|---|
abs(X) |
Zwraca wartość bezwzględną X. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Przyjmuje pary argumentów X i Y, w których argumenty X są wyrażeniami logicznymi. Jeśli wynikiem jest TRUE, argumenty zwracają odpowiedni argument Y. |
Przykład SPL | case |
Przykład KQL |
ceil(X) |
Limit liczby X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Identyfikuje adresy IP należące do określonej podsieci. | 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,…) |
Zwraca pierwszą wartość, która nie jest null. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"),tolong("42"), 33) == 42 |
cos(X) |
Oblicza cosinus X. | n=cos(0) |
cos() | cos(X) |
exact(X) |
Oblicza wyrażenie X przy użyciu arytmetyki zmiennoprzecinkowych podwójnej precyzji. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
Zwraca eX. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Jeśli X ma wartość TRUE, wynikiem jest drugi argument Y. Jeśli X przyjmuje wartość FALSE, wynik przyjmuje wartość trzeciego argumentu Z. |
if(error==200,"OK", "Error") |
iff() |
Przykład KQL |
isbool(X) |
Zwraca TRUE wartość , jeśli X jest wartością logiczną. |
isbool(field) |
• iff()• gettype |
iff(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
Zwraca TRUE wartość , jeśli X jest liczbą całkowitą. |
isint(field) |
• iff()• gettype |
Przykład KQL |
isnull(X) |
Zwraca wartość TRUE , jeśli X ma wartość null. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Zwraca TRUE, jeśli X jest ciągiem znaków. |
isstr(field) |
• iff()• gettype |
Przykład KQL |
len(X) |
Ta funkcja zwraca długość znaku ciągu X. |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
Zwraca TRUE wtedy i tylko wtedy, gdy X pasuje do wzorca SQLite w Y. |
like(field, "addr%") |
• has• contains• startswith• dopasowuje regex |
Przykład KQL |
log(X,Y) |
Zwraca dziennik pierwszego argumentu X przy użyciu drugiego argumentu Y jako podstawy. Wartość domyślna Y to 10. |
log(number,2) |
• log• log2• log10 |
log(X)log2(X)log10(X) |
lower(X) |
Zwraca wartość X zapisaną małymi literami. |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
Zwraca X znaki w parametrze Y przycięte z lewej strony. Domyślne dane wyjściowe Y to spacje i tabulatory. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
Zwraca wartość , jeśli X pasuje do wzorca regex Y. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
Zwraca wartość maksymalną w kolumnie. | max(delay, mydelay) |
• max()• arg_max() |
… | summarize max(field) |
md5(X) |
Zwraca skrót MD5 ciągu X. |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
Zwraca wartość minimalną w kolumnie. | min(delay, mydelay) |
• min_of()• min() • arg_min |
Przykład KQL |
mvcount(X) |
Zwraca liczbę (całkowitą X ) wartości. |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Filtruje pole wielowartościowe na podstawie wyrażenia logicznego X . |
mvfilter(match(email, "net$")) |
mv-apply |
Przykład KQL |
mvindex(X,Y,Z) |
Zwraca podzbiór argumentu wielowartościowego X z pozycji początkowej (na podstawie zera) Y do Z (opcjonalnie). |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Dla pola wielowartościowego X i separatora ciągu znaków Y łączy poszczególne wartości X za pomocą Y. |
mvjoin(address, ";") |
strcat_array |
Przykład KQL |
now() |
Zwraca bieżący czas w formacie czasu Unix. | now() |
now() |
now()now(-2d) |
null() |
Nie akceptuje argumentów i zwraca wartość NULL. |
null() |
Null | null |
nullif(X,Y) |
Przyjmuje dwa argumenty, X i Y, i zwraca X, jeśli argumenty są różne. W przeciwnym razie zwraca wartość NULL. |
nullif(fieldA, fieldB) |
iff |
iff(fieldA==fieldB, null, fieldA) |
random() |
Zwraca liczbę pseudolosową z zakresu od 0 do 2147483647. |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Dla czasu epoki X i specyfikatora czasu względnego Y zwraca wartość czasu epoki dla Y zastosowanego do X. |
relative_time(now(),"-1d@d") |
czas unix | Przykład KQL |
replace(X,Y,Z) |
Zwraca ciąg utworzony przez zastąpienie każdego wystąpienia wyrażenia regularnego Z w ciągu Y ciągiem X. |
Zwraca datę z zamienionymi numerami miesiąca i dnia. Na przykład dla 4/30/2015 danych wejściowych dane wyjściowe to 30/4/2009:replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
Przykład KQL |
round(X,Y) |
Zwraca X zaokrąglane do liczby miejsc dziesiętnych określonych przez Y. Domyślnie jest zaokrąglać do liczby całkowitej. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
Zwraca X, z obciętymi z prawej strony znakami z Y. Jeśli nie określono Y, spacje i tabulatory są usuwane. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
Zwraca TRUE, jeśli zdarzenie pasuje do ciągu wyszukiwania X. |
searchmatch("foo AND bar") |
iff() | iff(field has "X","Yes","No") |
split(X,"Y") |
Zwraca X jako pole wielowartościowe podzielone według ogranicznika Y. |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
Zwraca pierwiastek kwadratowy elementu X. |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Zwraca wartość X czasu epoki renderowaną przy użyciu formatu określonego przez Y. |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
Biorąc pod uwagę czas reprezentowany przez ciąg X, zwraca wartość przeanalizowaną z formatu Y. |
strptime(timeStr, "%H:%M") |
format_datetime() | Przykład KQL |
substr(X,Y,Z) |
Zwraca pole podciągu X od pozycji początkowej (liczonej od 1) Y na Z (opcjonalnie) znaków. |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
Zwraca czas zegara ściennego z rozdzielczością mikrosekund. | time() |
format_datetime() |
Przykład KQL |
tonumber(X,Y) |
Konwertuje ciąg X wejściowy na liczbę, gdzie Y (opcjonalnie wartość domyślna to 10) definiuje podstawę liczby do przekonwertowania. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
Opis | Przykład SPL | tostring() |
tostring(123) |
typeof(X) |
Zwraca ciąg reprezentujący typ pola. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
Zwraca adres URL X zdekodowany. |
Przykład SPL | url_decode |
Przykład KQL |
case(X,"Y",…) Przykład SPL
Ten przykład SPL zwraca inny ciąg wiadomości na podstawie kodu błędu HTTP.
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…) Przykład KQL
Ten przykład KQL służy case() do przypisania wiadomości na podstawie wartości kodu błędu.
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z) Przykład KQL
Ten przykład KQL służy iif() do oznaczania, czy znacznik czasu przypada na bieżący dzień.
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X) Przykład KQL
Ten przykład KQL sprawdza, czy X ma typ zgodny z liczbami całkowitoliczbowymi, używając gettype i .iif
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X) Przykład KQL
Ten przykład KQL sprawdza, czy X jest wartością ciągu znaków, używając gettype i .iif
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y") Przykład
Przykłady KQL pokazują kilka operatorów dopasowania ciągów ciągów, których można użyć do odtworzenia dopasowania wzorców SPL like .
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…) Przykład KQL
Te przykłady KQL pokazują różne sposoby obliczania minimalnych wartości za pomocą min_of, min, oraz arg_min.
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X) Przykład KQL
Ten przykład KQL służy mv-apply do filtrowania i redukcji zawartości wielowartościowej, podobnie jak funkcja SPL mvfilter .
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y) Przykład KQL
Ten przykład KQL służy strcat_array do łączenia elementów tablicy w jeden ciąg za pomocą niestandardowego separatora.
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y) Przykład KQL
Ten przykład KQL przekształca wartość czasu datowego na czas epoki Unix dla obliczeń w czasie względnym.
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z) Przykład KQL
Ten przykład KQL wykorzystuje replace() wzór regex do zamiany części miesiąca i dnia w ciągu daty.
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y) Przykład KQL
Ten przykład KQL używa format_datetime wyświetlania jedynie godzin i minut od wartości daty-godziny.
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time() Przykład KQL
Ten przykład KQL formatuje wartość datetime jako ciąg czasu pokazujący godziny, minuty i sekundy.
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y) Opis
Funkcja SPL tostring(X,Y) konwertuje wartości na ciągi znaków i obsługuje kilka opcji formatowania. Zwraca wartość pola jako X ciąg ciągów.
- Jeśli wartość
Xjest liczbą,Xjest ponownie sformatowana na wartość ciągu. - Jeśli
Xjest wartością logiczną,Xjest formatowane jakoTRUElubFALSE. - Jeśli
Xjest liczbą, drugi argumentYjest opcjonalny i może mieć wartośćhex(konwertujeXdo postaci szesnastkowej),commas(formatujeXz przecinkami i dwoma miejscami po przecinku) lubduration(konwertujeXz formatu czasu w sekundach na czytelny format czasu:HH:MM:SS).
tostring(X,Y) Przykład SPL
Ten tostring przykład SPL zwraca:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X) Przykład SPL
Ten przykład SPL dekoduje ciąg zakodowany przez URL z powrotem do jego pierwotnej formy.
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
Porównaj typowe polecenia Splunk stats z odpowiednikami KQL
Ta tabela mapuje typowe funkcje agregacji SPL stats na ich odpowiedniki KQL w Microsoft Sentinel.
| polecenie SPL | Opis | Polecenie KQL | Przykład KQL |
|---|---|---|---|
avg(X) |
Zwraca średnią wartości pola X. |
Avg() | avg(X) |
count(X) |
Zwraca liczbę wystąpień pola X. Aby wskazać określoną wartość pola do dopasowania, sformatuj X jako eval(field="value"). |
count() | summarize count() |
dc(X) |
Zwraca liczbę unikatowych wartości pola X. |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
Zwraca najwcześniejszą chronologicznie wartość elementu X. |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Zwraca ostatnią chronologicznie zaobserwowaną wartość X. |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
Zwraca maksymalną wartość pola X. Jeśli wartości X są nieliczbowe, wartość maksymalna jest odnaleziona za pośrednictwem kolejności alfabetycznej. |
Max() | …\| summarize max(X) |
median(X) |
Zwraca środkową wartość pola X. |
percentile() | …\| summarize percentile(X, 50) |
min(X) |
Zwraca wartość minimalną pola X. Jeśli wartości X są nieliczbowe, wartość minimalna jest odnaleziona za pośrednictwem kolejności alfabetycznej. |
Min() | …\| summarize min(X) |
mode(X) |
Zwraca najczęstszą wartość pola X. |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
Zwraca wartość percentyla X pola Y. Na przykład perc5(total) zwraca piątą wartość percentyla pola total. |
percentile() | …\| summarize percentile(Y, 5) |
range(X) |
Zwraca różnicę między wartościami maksymalnymi i minimalnymi pola X. |
range() | range(1, 3) |
stdev(X) |
Zwraca przykładowe odchylenie standardowe pola X. |
Stdev | stdev() |
stdevp(X) |
Zwraca odchylenie standardowe populacji pola X. |
stdevp() | stdevp() |
sum(X) |
Zwraca sumę wartości pola X. |
Sum() | sum(X) |
sumsq(X) |
Zwraca sumę kwadratów wartości pola X. |
||
values(X) |
Zwraca listę wszystkich unikatowych wartości pola X jako wpis wielowartościowy. Kolejność wartości jest alfabetyczna. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
Zwraca przykładową wariancję pola X. |
Wariancji | variance(X) |
Następne kroki
Nauczono się identyfikować, porównywać i mapować reguły wykrywania Splunk na reguły analityczne Microsoft Sentinel. Kontynuuj migrację automatyzacji SOAR.