Splunk-észlelési szabályok migrálása a Microsoft Sentinelbe
A Splunk-észlelési szabályok olyan biztonsági információk és eseménykezelési (SIEM) összetevők, amelyek összehasonlítják a Microsoft Sentinel elemzési szabályait. Ez a cikk azokat a fogalmakat ismerteti, amelyek azonosítják, összehasonlítják és migrálják őket a Microsoft Sentinelbe. A legjobb módszer az, ha a SIEM migrálási felületével kezdjük, amely a beépített (OOTB) elemzési szabályokat azonosítja, amelyek automatikusan lefordíthatóak.
Ha át szeretné migrálni a Splunk Megfigyelhetőség üzembe helyezését, tudjon meg többet arról, hogyan migrálhat a Splunkból az Azure Monitor-naplókba.
Naplózási szabályok
A Microsoft Sentinel gépi tanulási analitikát használ a magas megbízhatóságú és végrehajtható incidensek létrehozásához. Egyes meglévő Splunk-észlelések redundánsak lehetnek a Microsoft Sentinelben, ezért ne migrálja őket vakon. Tekintse át ezeket a szempontokat a meglévő észlelési szabályok azonosításakor.
- Ügyeljen arra, hogy olyan használati eseteket válasszon, amelyek indokolják a szabálymigrálást, figyelembe véve az üzleti prioritást és a hatékonyságot.
- Ellenőrizze, hogy ismeri-e a Microsoft Sentinel-szabálytípusokat.
- Ellenőrizze, hogy ismeri-e a szabály terminológiát.
- Tekintse át az elavult szabályokat, amelyek nem rendelkeznek riasztásokkal az elmúlt 6–12 hónapban, és állapítsa meg, hogy továbbra is relevánsak-e.
- Kiküszöbölheti azokat az alacsony szintű fenyegetéseket vagy riasztásokat, amelyeket rendszeresen figyelmen kívül hagy.
- Erősítse meg a csatlakoztatott adatforrásokat, és tekintse át az adatkapcsolati módszereket. A Microsoft Sentinel Analytics megköveteli, hogy az adattípus jelen legyen a Log Analytics-munkaterületen egy szabály engedélyezése előtt. Az adatgyűjtési beszélgetések újbóli megtekintése az észlelni kívánt használati esetek adatmélységének és szélességének biztosítása érdekében. Ezután a SIEM migrálási felületével győződjön meg arról, hogy az adatforrások megfelelően vannak leképezve.
Szabályok migrálása
Miután azonosította a migrálni kívánt Splunk-észleléseket, tekintse át az áttelepítési folyamat alábbi szempontjait:
- Hasonlítsa össze a Microsoft Sentinel OOTB-elemzési szabályainak meglévő funkcióit az aktuális használati esetekkel. A SIEM migrálási felületével megtekintheti, hogy mely Splunk-észlelések lesznek automatikusan OOTB-sablonokká konvertálva.
- Olyan észlelések fordítása, amelyek nem igazodnak az OOTB-elemzési szabályokhoz. A Splunk-észlelések automatikus lefordításának legjobb módja a SIEM migrálási felülete.
- További algoritmusokat fedezhet fel a használati esetekhez olyan közösségi erőforrások feltárásával, mint például az SOC Prime Threat Detection Marketplace.
- Az észlelések manuális fordítása, ha a beépített szabályok nem érhetők el, vagy nem lesznek automatikusan lefordítva. Hozza létre az új KQL-lekérdezéseket, és tekintse át a szabályok leképezését.
További információkért tekintse meg az észlelési szabályok migrálásának ajánlott eljárásait.
Szabálymigrálási lépések
Ellenőrizze, hogy minden áttelepítendő szabályhoz rendelkezik-e tesztelési rendszerrel.
Készítsen elő egy érvényesítési folyamatot a migrált szabályokhoz, beleértve a teljes tesztelési forgatókönyveket és szkripteket.
Győződjön meg arról, hogy csapata hasznos erőforrásokkal rendelkezik a migrált szabályok teszteléséhez.
Győződjön meg arról, hogy a szükséges adatforrások csatlakoztatva vannak, és tekintse át az adatkapcsolati módszereket.
Ellenőrizze, hogy az észlelések OOTB-sablonokként érhetők-e el a Microsoft Sentinelben:
A SIEM migrálási felületével automatizálhatja az OOTB-sablonok fordítását és telepítését.
További információ: A SIEM migrálási felületének használata.
Ha olyan eseteket használ, amelyek nem tükröződnek az észlelésekben, hozzon létre szabályokat a saját munkaterületéhez OOTB-szabálysablonokkal.
A Microsoft Sentinelben nyissa meg a Content Hubot.
Az Analytics-szabálysablonok tartalomtípusának szűrése.
Keresse meg és telepítse/frissítse az egyes tartalomközpont-megoldásokat vagy önálló elemzési szabálysablonokat.
További információ: Veszélyforrások észlelése beépítetten.
Ha olyan észlelésekkel rendelkezik, amelyekre nem vonatkoznak a Microsoft Sentinel OOTB-szabályai, először próbálja ki a SIEM migrálási felületét az automatikus fordításhoz.
Ha sem az OOTB-szabályok, sem az SIEM-migrálás nem fordítja le teljesen az észlelést, hozza létre manuálisan a szabályt. Ilyen esetekben a következő lépésekkel hozhatja létre a szabályt:
Azonosítsa a szabályban használni kívánt adatforrásokat. Az adatforrások és adattáblák közötti leképezési tábla létrehozásával azonosíthatja a lekérdezni kívánt Microsoft Sentinel-táblákat.
Azonosítsa az adatokban a szabályokban használni kívánt attribútumokat, mezőket vagy entitásokat .
Azonosítsa a szabályfeltételeket és a logikát. Ebben a szakaszban érdemes lehet mintaként megtalálni a szabálysablonokat a KQL-lekérdezések létrehozásához.
Fontolja meg a szűrőket, korrelációs szabályokat, aktív listákat, referenciakészleteket, figyelőlistákat, észlelési rendellenességeket, összesítéseket stb. Az örökölt SIEM-hez megadott hivatkozásokkal megtudhatja , hogyan képezheti le legjobban a lekérdezés szintaxisát.
Azonosítsa az eseményindító feltételt és a szabályműveletet, majd hozza létre és tekintse át a KQL-lekérdezést. A lekérdezés áttekintésekor fontolja meg a KQL optimalizálási útmutató erőforrásait.
Tesztelje a szabályt minden releváns használati esettel. Ha nem adja meg a várt eredményeket, tekintse át és szerkessze a KQL-t, és tesztelje újra.
Ha elégedett, fontolja meg a migrált szabályt. Szükség szerint hozzon létre egy forgatókönyvet a szabályművelethez. További információért lásd: A fenyegetésekre való reagálás automatizálása a Microsoft Sentinel forgatókönyveivel.
További információ az elemzési szabályokról:
- Egyéni elemzési szabályok létrehozása a fenyegetések észleléséhez. A riasztások csoportosításával csökkentheti a riasztások kifáradását egy adott időkereten belül előforduló riasztások csoportosításával.
- Adatmezők leképezése a Microsoft Sentinel entitásaihoz annak érdekében, hogy az SOC mérnökei entitásokat definiálhassanak a vizsgálat során nyomon követhető bizonyítékok részeként. Az entitásleképezés lehetővé teszi az SOC-elemzők számára, hogy kihasználják az intuitív [vizsgálati gráf] (investigation-cases.md#use-the-investigation-graph-to-deep-dive) előnyeit, amelyek csökkenthetik az időt és az erőfeszítést.
- Vizsgálja meg az incidenseket UEBA-adatokkal, példaként arra, hogyan lehet bizonyítékokat használni az incidensek, riasztások és az incidens előnézeti paneljén egy adott incidenshez társított könyvjelzők felszínre hozására.
- Kusto lekérdezésnyelv (KQL), amellyel írásvédett kérelmeket küldhet a Log Analytics-adatbázisnak az adatok feldolgozásához és az eredmények visszaadásához. A KQL más Microsoft-szolgáltatások is használható, például Végponthoz készült Microsoft Defender és Application Insights.
Szabály terminológiája összehasonlítása
Ez a táblázat segít tisztázni a Microsoft Sentinelben Kusto lekérdezésnyelv (KQL) alapuló szabály fogalmát a keresési feldolgozási nyelven (SPL) alapuló Splunk-észleléshez képest.
Splunk | Microsoft Sentinel | |
---|---|---|
Szabály típusa | •Ütemezett •Valós idejű |
• Ütemezett lekérdezés •Fúzió • Microsoft Security • Machine Learning (ML) Behavior Analytics |
Feltételek | Definiálás az SPL-ben | Definiálás a KQL-ben |
Eseményindító feltétel | • Találatok száma • Gazdagépek száma • Források száma •Szokás |
Küszöbérték: Lekérdezési eredmények száma |
Művelet | • Hozzáadás az aktivált riasztásokhoz • Naplóesemény • A találatok keresése • És még sok más |
• Riasztás vagy incidens létrehozása • Integrálható a Logic Appsszel |
Szabályminták leképezése és összehasonlítása
Ezekkel a mintákkal összehasonlíthatja és megfeleltethet szabályokat a Splunktól a Microsoft Sentinelig különböző helyzetekben.
Gyakori keresési parancsok
SPL-parancs | Leírás | KQL operátor | KQL-példa |
---|---|---|---|
chart/ timechart |
Táblázatos kimenetet ad vissza az idősoros diagramkészítéshez. | renderelési operátor | … | render timechart |
dedup |
Eltávolítja a megadott feltételnek megfelelő későbbi eredményeket. | • eltérő • összegzés |
… | summarize by Computer, EventID |
eval |
Kifejezés kiszámítása. Tudnivalók a gyakori eval parancsokról. |
meghosszabbít | T | extend duration = endTime - startTime |
fields |
Eltávolítja a mezőket a keresési eredményekből. | • projekt • projekten kívüli |
T | project cost=price*quantity, price |
head/tail |
Az első vagy az utolsó N eredményt adja vissza. | felső | T | top 5 by Name desc nulls last |
lookup |
Mezőértékeket ad hozzá külső forrásból. | • externaldata • keresés |
KQL-példa |
rename |
Egy mező átnevezése. Több mező megadása helyettesítő karakterekkel. | projekt átnevezése | T | project-rename new_column_name = column_name |
rex |
A mezők kinyeréséhez használt reguláris kifejezéseket használó csoportneveket adja meg. | egyezés regex | … | where field matches regex "^addr.*" |
search |
A keresési kifejezésnek megfelelő találatok szűrése. | search | search "X" |
sort |
A keresési eredményeket a megadott mezők szerint rendezi. | fajta | T | sort by strlen(country) asc, price desc |
stats |
Statisztikai adatokat biztosít, mezők szerint csoportosítva. További információ a gyakori statisztikai parancsokról. | összegez | KQL-példa |
mstats |
A statisztikákhoz hasonlóan, események helyett metrikákban használatos. | összegez | KQL-példa |
table |
Megadja, hogy mely mezők legyenek megtartva az eredményhalmazban, és táblázatos formátumban tárolja az adatokat. | projekt | T | project columnA, columnB |
top/rare |
Egy mező leggyakoribb vagy legkevésbé gyakori értékeit jeleníti meg. | felső | T | top 5 by Name desc nulls last |
transaction |
A keresési eredményeket tranzakciókba csoportosítja. SPL-példa |
Példa: row_window_session | KQL-példa |
eventstats |
Összegző statisztikákat hoz létre az események mezőiből, és ezeket a statisztikákat egy új mezőbe menti. SPL-példa |
Példák: • csatlakozás • make_list • mv-expand |
KQL-példa |
streamstats |
Egy mező összegének megkeresése. SPL-példa: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Keresse meg az anomáliákat a megadott mezőben. SPL-példa |
series_decompose_anomalies() | KQL-példa |
where |
Kifejezésekkel eval szűri a keresési eredményeket. Két különböző mező összehasonlítására szolgál. |
hol | T | where fruit=="apple" |
lookup
parancs: KQL-példa
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
parancs: KQL-példa
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats
parancs: KQL-példa
T | summarize count() by price_range=bin(price, 10.0)
transaction
parancs: SPL-példa
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction
parancs: KQL-példa
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
A szerializált sorkészlet egy oszlopának munkamenet-kezdési értékeinek kiszámítására használható row_window_session()
.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats
parancs: SPL-példa
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats
parancs: KQL-példa
Íme egy példa az utasításra 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
Íme egy példa az utasításra 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
parancs: SPL-példa
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection
parancs: KQL-példa
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)
Gyakori eval
parancsok
SPL-parancs | Leírás | SPL-példa | KQL-parancs | KQL-példa |
---|---|---|---|---|
abs(X) |
Az X abszolút értékét adja vissza. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Párokat X és Y argumentumokat vesz fel, ahol az X argumentumok logikai kifejezések. A kiértékeléskor TRUE az argumentumok a megfelelő Y argumentumot adják vissza. |
SPL-példa | case |
KQL-példa |
ceil(X) |
Az X szám plafonja. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Egy adott alhálózathoz tartozó IP-címeket azonosít. | 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,…) |
Az első nem null értékű értéket adja eredményül. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"), tolong("42"), 33) == 42 |
cos(X) |
Kiszámítja az X koszinuszát. | n=cos(0) |
cos() | cos(X) |
exact(X) |
Az X kifejezés kiértékelése dupla pontosságú lebegőpontos aritmetikai módszerrel. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
EX értéket ad vissza. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Ha X a kiértékelés eredménye TRUE a második argumentum Y . Ha X a kiértékelés eredménye FALSE a harmadik argumentum Z . |
if(error==200, "OK", "Error") |
iif() |
KQL-példa |
isbool(X) |
Logikai értéket ad TRUE X vissza. |
isbool(field) |
• iif() • gettype |
iif(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
TRUE
X Egész szám esetén adja vissza. |
isint(field) |
• iif() • gettype |
KQL-példa |
isnull(X) |
Null értéket ad TRUE X vissza. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Visszaadja TRUE , ha X sztring. |
isstr(field) |
• iif() • gettype |
KQL-példa |
len(X) |
Ez a függvény egy sztring X karakterhosszát adja vissza. |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
TRUE Ha és csak akkor X ad vissza értéket, mint a SQLite minta.Y |
like(field, "addr%") |
• has • contains • startswith • egyezik a regex |
KQL-példa |
log(X,Y) |
Az első argumentum X naplóját adja vissza a második argumentum Y alapján. Az alapértelmezett érték az Y 10 . |
log(number,2) |
• log • log2 • log10 |
log(X) log2(X) log10(X) |
lower(X) |
A kisbetű értékét X adja vissza. |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
X A bal oldalról levágott paraméterben Y szereplő karaktereket adja vissza. Az alapértelmezett kimenet a Y szóközök és a lapok. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
Visszaadja, ha X megegyezik az Y regex mintával. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
Egy oszlop maximális értékét adja vissza. | max(delay, mydelay) |
• max() • arg_max() |
… | summarize max(field) |
md5(X) |
Egy sztringérték X MD5 kivonatát adja vissza. |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
Egy oszlop minimális értékét adja vissza. | min(delay, mydelay) |
• min_of() • min() • arg_min |
KQL-példa |
mvcount(X) |
Az értékek számát (összegét) adja eredményül X . |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Szűr egy többértékű mezőt a logikai X kifejezés alapján. |
mvfilter(match(email, "net$")) |
mv-apply |
KQL-példa |
mvindex(X,Y,Z) |
A többértékű X argumentum egy részhalmazát adja vissza egy kezdő pozícióból (nulla alapú) a (nem kötelező) Y értékre Z . |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Többértékű mezőt X és sztringelválasztót Y ad meg, és összekapcsolja a használat Y egyedi értékeitX . |
mvjoin(address, ";") |
strcat_array |
KQL-példa |
now() |
Az aktuális időt adja vissza, unix időpontban ábrázolva. | now() |
now() |
now() now(-2d) |
null() |
Nem fogadja el az argumentumokat és a visszaadott értékeket NULL . |
null() |
nulla | null |
nullif(X,Y) |
Két argumentumot tartalmaz, X és Y a visszaadott X értéket, ha az argumentumok eltérnek. Ellenkező esetben a visszaadott érték NULL . |
nullif(fieldA, fieldB) |
iif |
iif(fieldA==fieldB, null, fieldA) |
random() |
Egy pszeudo-véletlenszerű számot 0 ad vissza.2147483647 |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Az idő X és a relatív idő megadása Y esetén a rendszer az alkalmazott X időszak időértékét Y adja vissza. |
relative_time(now(),"-1d@d") |
unix time | KQL-példa |
replace(X,Y,Z) |
Egy sztringet ad vissza, amelyet a sztringben Z szereplő reguláris kifejezési sztringek Y minden előfordulásához sztring helyettesítésével alakítottak X ki. |
Dátumot ad vissza a hónap és a nap számának kapcsolójával. A bemenet esetében például a 4/30/2015 kimenet a következő 30/4/2009 :replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
KQL-példa |
round(X,Y) |
X A függvény a megadott tizedesjegyek Y számára kerekítve adja vissza. Az alapértelmezett érték egy egész számra kerekítése. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
X A jobb oldalon levágott karaktereket Y tartalmazó visszatérési érték. Ha Y nincs megadva, a rendszer levágja a szóközöket és a lapokat. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
Visszaadja TRUE , ha az esemény megfelel a keresési sztringnek X . |
searchmatch("foo AND bar") |
iif() | iif(field has "X","Yes","No") |
split(X,"Y") |
X Többértékű mezőként ad vissza, elválasztójelek Y szerint felosztva. |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
A négyzetgyökét X adja vissza. |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
A megadott formátummal Y renderelt időértéket X adja vissza. |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
Egy sztring X által képviselt idő alapján a formátumból Y elemezett értéket ad vissza. |
strptime(timeStr, "%H:%M") |
format_datetime() | KQL-példa |
substr(X,Y,Z) |
Egy részszűkítési mezőt X ad vissza a kezdő pozícióból (egy-alapú) Y a (nem kötelező) karakterekhez Z . |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
A fali óra időt adja vissza mikroszekundumos felbontással. | time() |
format_datetime() |
KQL-példa |
tonumber(X,Y) |
A bemeneti sztringet X számmá alakítja, ahol Y (nem kötelező, alapértelmezett érték 10 ) határozza meg a konvertálni kívánt szám alapjait. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
Leírás | SPL-példa | tostring() |
tostring(123) |
typeof(X) |
A mezőtípus sztring-ábrázolását adja vissza. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
A dekódolt URL-címet X adja vissza. |
SPL-példa | url_decode |
KQL-példa |
case(X,"Y",…)
SPL-példa
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…)
KQL-példa
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z)
KQL-példa
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X)
KQL-példa
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X)
KQL-példa
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y")
példa
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…)
KQL-példa
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X)
KQL-példa
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y)
KQL-példa
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y)
KQL-példa
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z)
KQL-példa
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y)
KQL-példa
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time()
KQL-példa
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y)
Sztringként megadott X
mezőértéket ad vissza.
- Ha a szám értéke
X
egy szám,X
akkor a program sztringértékre újraformálja. - Ha
X
logikai érték,X
akkor a program újraformázva lesz a logikai értékreTRUE
vagyFALSE
a . - Ha
X
szám, akkor a második argumentumY
nem kötelező, és lehethex
(hexadecimálisra konvertáljaX
),commas
(X
vesszővel és két tizedesjegygel formázza), vagyduration
(másodpercek alatt konvertáljaX
az időformátumot olvasható időformátumra:HH:MM:SS
).
tostring(X,Y)
SPL-példa
Ez a példa a következőt adja vissza:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X)
SPL-példa
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
Gyakori stats
parancsok – KQL-példa
SPL-parancs | Leírás | KQL-parancs | KQL-példa |
---|---|---|---|
avg(X) |
A mező X értékeinek átlagát adja eredményül. |
avg() | avg(X) |
count(X) |
A mező előfordulásainak számát adja eredményül X . Ha meg szeretne jelölni egy adott mezőértéket, formázza X a következőképpen eval(field="value") : . |
darabszám() | summarize count() |
dc(X) |
A mező X különböző értékeinek számát adja vissza. |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
A kronológiailag legkorábbi látható értéket X adja vissza. |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Az időrendben utoljára látható értéket adja eredményül X . |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
A mező X maximális értékét adja vissza. Ha az értékek X nem numerikusak, a maximális érték betűrendbe rendezéssel lesz megadva. |
max() | …\| summarize max(X) |
median(X) |
A mező X középértékét adja vissza. |
percentilis() | …\| summarize percentile(X, 50) |
min(X) |
A mező X minimális értékét adja vissza. Ha az értékek X nem numerikusak, a minimális érték betűrendbe rendezéssel lesz megadva. |
min() | …\| summarize min(X) |
mode(X) |
A mező X leggyakoribb értékét adja vissza. |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
A mező Y percentilisértékét X adja vissza. Egy mező total ötödik percentilisértékét adja vissza. perc5(total) |
percentilis() | …\| summarize percentile(Y, 5) |
range(X) |
A mező X maximális és minimális értékei közötti különbséget adja eredményül. |
tartomány() | range(1, 3) |
stdev(X) |
A mező X minta szórását adja vissza. |
stdev | stdev() |
stdevp(X) |
A mező statisztikai szórását adja eredményül X . |
stdevp() | stdevp() |
sum(X) |
A mező X értékeinek összegét adja vissza. |
sum() | sum(X) |
sumsq(X) |
A mező X értékeinek négyzeteinek összegét adja vissza. |
||
values(X) |
A mező X összes különböző értékének listáját adja vissza többértékű bejegyzésként. Az értékek sorrendje betűrendben van. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
A mező X minta varianciáját adja vissza. |
eltérés | variance(X) |
Következő lépések
Ebben a cikkben megtanulta, hogyan képezheti le a migrálási szabályokat a Splunkból a Microsoft Sentinelbe.