Splunk-detectieregels migreren naar Microsoft Sentinel
Splunk-detectieregels zijn SIEM-onderdelen (Security Information and Event Management) die worden vergeleken met analyseregels in Microsoft Sentinel. In dit artikel worden de concepten beschreven die u kunt identificeren, vergelijken en migreren naar Microsoft Sentinel. De beste manier is om te beginnen met de SIEM-migratie, waarmee kant-en-klare analyseregels (OOTB) worden geïdentificeerd waarnaar automatisch moet worden vertaald.
Als u de implementatie van Splunk Waarneembaarheid wilt migreren, vindt u meer informatie over het migreren van Splunk naar Azure Monitor-logboeken.
Controleregels
Microsoft Sentinel maakt gebruik van machine learning-analyses om hoogwaardige en bruikbare incidenten te maken. Sommige van uw bestaande Splunk-detecties zijn mogelijk overbodig in Microsoft Sentinel, dus migreer ze niet allemaal blind. Bekijk deze overwegingen wanneer u uw bestaande detectieregels identificeert.
- Zorg ervoor dat u use cases selecteert die regelmigratie rechtvaardigen, rekening houdend met bedrijfsprioriteit en efficiëntie.
- Controleer of u microsoft Sentinel-regeltypen begrijpt.
- Controleer of u de terminologie van de regel begrijpt.
- Controleer verouderde regels die geen waarschuwingen hebben voor de afgelopen 6-12 maanden en bepaal of ze nog steeds relevant zijn.
- Verwijder bedreigingen op laag niveau of waarschuwingen die u regelmatig negeert.
- Bevestig verbonden gegevensbronnen en controleer uw gegevensverbindingsmethoden. Microsoft Sentinel Analytics vereist dat het gegevenstype aanwezig is in de Log Analytics-werkruimte voordat een regel wordt ingeschakeld. Ga opnieuw naar gesprekken over het verzamelen van gegevens om gegevensdiepte en breedte te garanderen in de use cases die u wilt detecteren. Gebruik vervolgens de SIEM-migratie om ervoor te zorgen dat de gegevensbronnen op de juiste manier worden toegewezen.
Regels migreren
Nadat u de Splunk-detecties hebt geïdentificeerd die moeten worden gemigreerd, bekijkt u deze overwegingen voor het migratieproces:
- Vergelijk de bestaande functionaliteit van de OOTB-analyseregels van Microsoft Sentinel met uw huidige use cases. Gebruik de SIEM-migratie om te zien welke Splunk-detecties automatisch worden geconverteerd naar OOTB-sjablonen.
- Vertaal detecties die niet zijn afgestemd op OOTB-analyseregels. De beste manier om Splunk-detecties automatisch te vertalen, is met de SIEM-migratie-ervaring.
- Ontdek meer algoritmen voor uw gebruiksvoorbeelden door communityresources zoals soc Prime Threat Detection Marketplace te verkennen.
- Detecties handmatig vertalen als ingebouwde regels niet beschikbaar zijn of niet automatisch worden vertaald. Maak de nieuwe KQL-query's en controleer de toewijzing van regels.
Zie de aanbevolen procedures voor het migreren van detectieregels voor meer informatie.
Stappen voor regelmigratie
Controleer of er een testsysteem is ingesteld voor elke regel die u wilt migreren.
Bereid een validatieproces voor voor uw gemigreerde regels, inclusief volledige testscenario's en scripts.
Zorg ervoor dat uw team nuttige resources heeft om uw gemigreerde regels te testen.
Controleer of u de vereiste gegevensbronnen hebt verbonden en controleer de methoden voor gegevensverbindingen.
Controleer of uw detecties beschikbaar zijn als OOTB-sjablonen in Microsoft Sentinel:
Gebruik de SIEM-migratie-ervaring om vertaling en installatie van de OOTB-sjablonen te automatiseren.
Zie De SIEM-migratie-ervaring gebruiken voor meer informatie.
Als u use cases niet weerspiegelt in de detecties, maakt u regels voor uw eigen werkruimte met OOTB-regelsjablonen.
Ga in Microsoft Sentinel naar de Inhoudshub.
Filter inhoudstype voor analyseregelsjablonen .
Zoek en installeer/werk elke bijbehorende Content Hub-oplossing of zelfstandige sjabloon voor analyseregels bij.
Zie Standaard bedreigingen detecteren voor meer informatie.
Als u detecties hebt die niet worden gedekt door de OOTB-regels van Microsoft Sentinel, probeert u eerst de SIEM-migratie-ervaring voor automatische vertaling.
Als de OOTB-regels en de SIEM-migratie de detectie niet volledig vertalen, maakt u de regel handmatig. In dergelijke gevallen gebruikt u de volgende stappen om uw regel te maken:
Identificeer de gegevensbronnen die u wilt gebruiken in uw regel. Identificeer de Microsoft Sentinel-tabellen waarop u een query wilt uitvoeren door een toewijzingstabel te maken tussen gegevensbronnen en gegevenstabellen.
Identificeer kenmerken, velden of entiteiten in uw gegevens die u wilt gebruiken in uw regels.
Bepaal uw regelcriteria en logica. In deze fase kunt u regelsjablonen vinden als voorbeelden voor het maken van uw KQL-query's.
Overweeg filters, correlatieregels, actieve lijsten, referentiesets, volglijsten, detectieafwijkingen, aggregaties, enzovoort. U kunt verwijzingen van uw verouderde SIEM gebruiken om te begrijpen hoe u de querysyntaxis het beste kunt toewijzen.
Identificeer de actie triggervoorwaarde en regel en bouw en controleer vervolgens uw KQL-query. Wanneer u uw query bekijkt, kunt u hulpbronnen voor KQL-optimalisatie overwegen.
Test de regel met elk van uw relevante use cases. Als er geen verwachte resultaten worden opgegeven, controleert en bewerkt u de KQL en test u deze opnieuw.
Houd rekening met de gemigreerde regel wanneer u tevreden bent. Maak indien nodig een playbook voor uw regelactie. Zie voor meer informatie Bedreigingsrespons automatiseren met playbooks in Microsoft Sentinel.
Meer informatie over analyseregels:
- Maak aangepaste analyseregels om bedreigingen te detecteren. Gebruik waarschuwingsgroepering om de vermoeidheid van waarschuwingen te verminderen door waarschuwingen te groeperen die binnen een bepaalde periode plaatsvinden.
- Wijs gegevensvelden toe aan entiteiten in Microsoft Sentinel om SOC-technici in staat te stellen entiteiten te definiëren als onderdeel van het bewijs dat tijdens een onderzoek moet worden bijgehouden. Met entiteitstoewijzing kunnen SOC-analisten ook profiteren van een intuïtieve [onderzoeksgrafiek] (investigation-cases.md#use-the-investigation-graph-to-deep-dive) waarmee u tijd en moeite kunt verminderen.
- Onderzoek incidenten met UEBA-gegevens, als voorbeeld van het gebruik van bewijs om gebeurtenissen, waarschuwingen en bladwijzers weer te geven die zijn gekoppeld aan een bepaald incident in het voorbeeldvenster van het incident.
- Kusto-querytaal (KQL), waarmee u alleen-lezenaanvragen naar uw Log Analytics-database kunt verzenden om gegevens te verwerken en resultaten te retourneren. KQL wordt ook gebruikt in andere Microsoft-services, zoals Microsoft Defender voor Eindpunt en Application Insights.
Regelterminologie vergelijken
Deze tabel helpt u om het concept van een regel op basis van Kusto-querytaal (KQL) in Microsoft Sentinel te verduidelijken in vergelijking met een Splunk-detectie op basis van SPL (Search Processing Language).
Splunk | Microsoft Sentinel | |
---|---|---|
Regeltype | •Gepland •Real-time |
• Geplande query •Samensmelting • Microsoft-beveiliging • Machine Learning (ML) Behavior Analytics |
Criteria | Definiëren in SPL | Definiëren in KQL |
Triggervoorwaarde | • Aantal resultaten • Aantal hosts • Aantal bronnen •Gewoonte |
Drempelwaarde: aantal queryresultaten |
Actie | • Toevoegen aan geactiveerde waarschuwingen • Gebeurtenis vastleggen • Uitvoerresultaten om op te zoeken • En meer |
• Waarschuwing of incident maken • Integreert met Logic Apps |
Regelvoorbeelden toewijzen en vergelijken
Gebruik deze voorbeelden om regels van Splunk in verschillende scenario's te vergelijken en toe te wijzen aan Microsoft Sentinel.
Algemene zoekopdrachten
SPL-opdracht | Beschrijving | KQL-operator | KQL-voorbeeld |
---|---|---|---|
chart/ timechart |
Retourneert resultaten in een tabelvormige uitvoer voor tijdreeksgrafieken. | renderoperator | … | render timechart |
dedup |
Hiermee verwijdert u de volgende resultaten die overeenkomen met een opgegeven criterium. | • uniek • samenvatten |
… | summarize by Computer, EventID |
eval |
Hiermee wordt een expressie berekend. Meer informatie over algemene eval opdrachten. |
verlengen | T | extend duration = endTime - startTime |
fields |
Hiermee verwijdert u velden uit zoekresultaten. | • project • project-afwezig |
T | project cost=price*quantity, price |
head/tail |
Retourneert de eerste of laatste N-resultaten. | Boven | T | top 5 by Name desc nulls last |
lookup |
Hiermee worden veldwaarden van een externe bron toegevoegd. | • externe gegevens • opzoeken |
KQL-voorbeeld |
rename |
Hiermee wijzigt u de naam van een veld. Gebruik jokertekens om meerdere velden op te geven. | projectnaam wijzigen | T | project-rename new_column_name = column_name |
rex |
Hiermee geeft u groepsnamen op met behulp van reguliere expressies om velden te extraheren. | komt overeen met regex | … | where field matches regex "^addr.*" |
search |
Hiermee worden resultaten gefilterd op resultaten die overeenkomen met de zoekexpressie. | zoeken | search "X" |
sort |
Hiermee sorteert u de zoekresultaten op de opgegeven velden. | sort | T | sort by strlen(country) asc, price desc |
stats |
Biedt statistieken, optioneel gegroepeerd op velden. Meer informatie over algemene statistiekenopdrachten. | samenvatten | KQL-voorbeeld |
mstats |
Vergelijkbaar met statistieken, gebruikt voor metrische gegevens in plaats van gebeurtenissen. | samenvatten | KQL-voorbeeld |
table |
Hiermee geeft u op welke velden in de resultatenset moeten worden bewaard en worden gegevens in tabelvorm bewaard. | project | T | project columnA, columnB |
top/rare |
Geeft de meest of minst voorkomende waarden van een veld weer. | Boven | T | top 5 by Name desc nulls last |
transaction |
Groepen zoekresultaten in transacties. Voorbeeld van SPL |
Voorbeeld: row_window_session | KQL-voorbeeld |
eventstats |
Hiermee worden samenvattingsstatistieken gegenereerd van velden in uw gebeurtenissen en worden deze statistieken opgeslagen in een nieuw veld. Voorbeeld van SPL |
Voorbeelden: • lid worden • make_list • mv-expand |
KQL-voorbeeld |
streamstats |
De cumulatieve som van een veld zoeken. SPL-voorbeeld: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Zoek afwijkingen in het opgegeven veld. Voorbeeld van SPL |
series_decompose_anomalies() | KQL-voorbeeld |
where |
Hiermee filtert u zoekresultaten met behulp van eval expressies. Wordt gebruikt om twee verschillende velden te vergelijken. |
waar | T | where fruit=="apple" |
lookup
opdracht: KQL-voorbeeld
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
opdracht: KQL-voorbeeld
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats
opdracht: KQL-voorbeeld
T | summarize count() by price_range=bin(price, 10.0)
transaction
opdracht: SPL-voorbeeld
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction
opdracht: KQL-voorbeeld
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
Hiermee row_window_session()
kunt u waarden voor sessiestarts berekenen voor een kolom in een geserialiseerde rijset.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats
opdracht: SPL-voorbeeld
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats
opdracht: KQL-voorbeeld
Hier volgt een voorbeeld met de join
instructie:
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 volgt een voorbeeld met de make_list
instructie:
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
opdracht: SPL-voorbeeld
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection
opdracht: KQL-voorbeeld
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)
Algemene eval
opdrachten
SPL-opdracht | Beschrijving | Voorbeeld van SPL | KQL-opdracht | KQL-voorbeeld |
---|---|---|---|---|
abs(X) |
Geeft als resultaat de absolute waarde van X. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Neemt paren en X Y argumenten, waarbij de X argumenten booleaanse expressies zijn. Wanneer dit wordt geëvalueerd TRUE , retourneren de argumenten het bijbehorende Y argument. |
Voorbeeld van SPL | case |
KQL-voorbeeld |
ceil(X) |
Plafond van een getal X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Identificeert IP-adressen die deel uitmaken van een bepaald subnet. | 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,…) |
Retourneert de eerste waarde die niet null is. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"), tolong("42"), 33) == 42 |
cos(X) |
Berekent de cosinus van X. | n=cos(0) |
cos() | cos(X) |
exact(X) |
Evalueert een expressie X met behulp van rekenkundige berekeningen met dubbele precisie. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
Retourneert eX. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Als X dit TRUE wordt geëvalueerd, is het resultaat het tweede argument Y . Als X dit wordt geëvalueerd FALSE , wordt het resultaat geëvalueerd naar het derde argument Z . |
if(error==200, "OK", "Error") |
iif() |
KQL-voorbeeld |
isbool(X) |
Retourneert TRUE of X booleaanse waarde is. |
isbool(field) |
• iif() • gettype |
iif(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
Retourneert TRUE als X een geheel getal. |
isint(field) |
• iif() • gettype |
KQL-voorbeeld |
isnull(X) |
Retourneert TRUE als X null. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Retourneert TRUE een X tekenreeks. |
isstr(field) |
• iif() • gettype |
KQL-voorbeeld |
len(X) |
Met deze functie wordt de tekenlengte van een tekenreeks X geretourneerd. |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
Retourneert TRUE if en only if X is like the SQLite pattern in Y . |
like(field, "addr%") |
• has • contains • startswith • komt overeen met regex |
KQL-voorbeeld |
log(X,Y) |
Retourneert het logboek van het eerste argument X met behulp van het tweede argument Y als basis. De standaardwaarde Y is 10 . |
log(number,2) |
• log • log2 • log10 |
log(X) log2(X) log10(X) |
lower(X) |
Geeft als resultaat de waarde in kleine letters van X . |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
Retourneert X de tekens in de parameter Y die vanaf de linkerkant is ingekort. De standaarduitvoer is Y spaties en tabbladen. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
Retourneert als X overeenkomt met het regex-patroon Y. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
Retourneert de maximumwaarde in een kolom. | max(delay, mydelay) |
• max() • arg_max() |
… | summarize max(field) |
md5(X) |
Retourneert de MD5-hash van een tekenreekswaarde X . |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
Retourneert de minimumwaarde in een kolom. | min(delay, mydelay) |
• min_of() • min() • arg_min |
KQL-voorbeeld |
mvcount(X) |
Retourneert het getal (totaal) van X waarden. |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Hiermee filtert u een veld met meerdere waarden op basis van de Boole-expressie X . |
mvfilter(match(email, "net$")) |
mv-apply |
KQL-voorbeeld |
mvindex(X,Y,Z) |
Retourneert een subset van het argument met meerdere waarden X van een beginpositie (op basis van nul) Y naar Z (optioneel). |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Gezien een veld X met meerdere waarden en tekenreeksscheidingstekens Y , en wordt de afzonderlijke waarden van X het gebruik Y samengevoegd. |
mvjoin(address, ";") |
strcat_array |
KQL-voorbeeld |
now() |
Retourneert de huidige tijd, weergegeven in Unix-tijd. | now() |
now() |
now() now(-2d) |
null() |
Accepteert geen argumenten en retourneert .NULL |
null() |
nul | null |
nullif(X,Y) |
Bevat twee argumenten X en , en Y retourneert X als de argumenten verschillen. Anders wordt geretourneerd NULL . |
nullif(fieldA, fieldB) |
iif |
iif(fieldA==fieldB, null, fieldA) |
random() |
Geeft als resultaat een pseudo-willekeurig getal tussen 0 2147483647 . |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Uitgaande van een tijdsduur X en relatieve tijdaanduiding Y , geeft als resultaat de tijdswaarde van de periode waarop wordt Y toegepast X . |
relative_time(now(),"-1d@d") |
unix-tijd | KQL-voorbeeld |
replace(X,Y,Z) |
Retourneert een tekenreeks die wordt gevormd door een tekenreeks Z te vervangen voor elk exemplaar van een reguliere-expressietekenreeks Y in een tekenreeks X . |
Retourneert de datum waarop de maand- en dagnummers zijn gewijzigd. Voor de 4/30/2015 invoer is 30/4/2009 de uitvoer bijvoorbeeld:replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
KQL-voorbeeld |
round(X,Y) |
Retourneert X afgerond op het aantal decimalen dat is opgegeven door Y . De standaardwaarde is om af te ronden op een geheel getal. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
Retourneert de tekens van Y afgekapt X vanaf de rechterkant. Als Y dit niet is opgegeven, worden spaties en tabbladen ingekort. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
Retourneert TRUE als de gebeurtenis overeenkomt met de zoekreeks X . |
searchmatch("foo AND bar") |
iif() | iif(field has "X","Yes","No") |
split(X,"Y") |
Retourneert X als een veld met meerdere waarden, gesplitst op scheidingsteken Y . |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
Geeft als resultaat de vierkantswortel van X . |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Retourneert de tijdsduurwaarde X die wordt weergegeven met behulp van de indeling die is opgegeven door Y . |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
Uitgaande van een tijd die wordt vertegenwoordigd door een tekenreeks X , wordt de waarde geretourneerd die is geparseerd uit de notatie Y . |
strptime(timeStr, "%H:%M") |
format_datetime() | KQL-voorbeeld |
substr(X,Y,Z) |
Retourneert een subtekenreeksveld X vanaf de beginpositie (één gebaseerd) Y voor Z (optionele) tekens. |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
Retourneert de wandkloktijd met microsecondenresolutie. | time() |
format_datetime() |
KQL-voorbeeld |
tonumber(X,Y) |
Converteert de invoertekenreeks X naar een getal, waarbij Y (optioneel, standaardwaarde is 10 ) de basis definieert van het getal waarnaar moet worden geconverteerd. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
Beschrijving | Voorbeeld van SPL | tostring() |
tostring(123) |
typeof(X) |
Retourneert een tekenreeksweergave van het veldtype. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
Retourneert de URL X gedecodeerd. |
Voorbeeld van SPL | url_decode |
KQL-voorbeeld |
case(X,"Y",…)
Voorbeeld van SPL
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…)
KQL-voorbeeld
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z)
KQL-voorbeeld
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X)
KQL-voorbeeld
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X)
KQL-voorbeeld
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y")
voorbeeld
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…)
KQL-voorbeeld
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X)
KQL-voorbeeld
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y)
KQL-voorbeeld
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y)
KQL-voorbeeld
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z)
KQL-voorbeeld
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y)
KQL-voorbeeld
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time()
KQL-voorbeeld
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y)
Retourneert een veldwaarde van X
als een tekenreeks.
- Als de waarde van
X
een getal is,X
wordt deze opnieuw opgemaakt met een tekenreekswaarde. - Als
X
een Booleaanse waarde is,X
wordt deze opnieuw opgemaakt opTRUE
ofFALSE
. - Als
X
een getal is, is het tweede argumentY
optioneel en kan dit zijnhex
(converteertX
naar een hexadecimaal getal),commas
(notatiesX
met komma's en twee decimalen) ofduration
(converteertX
van een tijdnotatie in seconden naar een leesbare tijdnotatie:HH:MM:SS
).
tostring(X,Y)
Voorbeeld van SPL
In dit voorbeeld wordt het volgende geretourneerd:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X)
Voorbeeld van SPL
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
KQL-voorbeeld van algemene stats
opdrachten
SPL-opdracht | Beschrijving | KQL-opdracht | KQL-voorbeeld |
---|---|---|---|
avg(X) |
Retourneert het gemiddelde van de waarden van het veld X . |
avg() | avg(X) |
count(X) |
Retourneert het aantal exemplaren van het veld X . Als u een specifieke veldwaarde wilt aangeven die moet worden vergeleken, moet u deze opmaken X als eval(field="value") . |
count() | summarize count() |
dc(X) |
Retourneert het aantal afzonderlijke waarden van het veld X . |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
Geeft als resultaat de chronologisch vroegste geziene waarde van X . |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Geeft als resultaat de chronologisch geziene waarde van X . |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
Retourneert de maximumwaarde van het veld X . Als de waarden X niet-numeriek zijn, wordt de maximumwaarde gevonden via alfabetische volgorde. |
max() | …\| summarize max(X) |
median(X) |
Retourneert de middelste waarde van het veld X . |
percentiel() | …\| summarize percentile(X, 50) |
min(X) |
Retourneert de minimumwaarde van het veld X . Als de waarden X van niet-numeriek zijn, wordt de minimumwaarde gevonden via alfabetische volgorde. |
min() | …\| summarize min(X) |
mode(X) |
Retourneert de meest voorkomende waarde van het veld X . |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
Retourneert de percentielwaarde X van het veld Y . Retourneert bijvoorbeeld perc5(total) de vijfde percentielwaarde van een veld total . |
percentiel() | …\| summarize percentile(Y, 5) |
range(X) |
Retourneert het verschil tussen de maximum- en minimumwaarden van het veld X . |
range() | range(1, 3) |
stdev(X) |
Retourneert de standaarddeviatie van de steekproef van het veld X . |
stdev | stdev() |
stdevp(X) |
Geeft als resultaat de standaarddeviatie van de populatie van het veld X . |
stdevp() | stdevp() |
sum(X) |
Retourneert de som van de waarden van het veld X . |
sum() | sum(X) |
sumsq(X) |
Retourneert de som van de kwadraten van de waarden van het veld X . |
||
values(X) |
Retourneert de lijst met alle afzonderlijke waarden van het veld X als een vermelding met meerdere waarden. De volgorde van de waarden is alfabetisch. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
Geeft als resultaat de variantie van het voorbeeld van het veld X . |
variantie | variance(X) |
Volgende stappen
In dit artikel hebt u geleerd hoe u uw migratieregels van Splunk kunt toewijzen aan Microsoft Sentinel.