Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Splunk-detectieregels zijn SIEM-onderdelen (Security Information and Event Management) die vergelijkbaar zijn met analyseregels in Microsoft Sentinel. In dit artikel worden de concepten beschreven om deze te identificeren, te vergelijken en te migreren naar Microsoft Sentinel. De beste manier is om te beginnen met de SIEM-migratie-ervaring, die out-of-the-box (OOTB) analyseregels identificeert waarnaar automatisch moet worden vertaald.
Als u uw Splunk Observability-implementatie wilt migreren, vindt u meer informatie over het migreren van Splunk naar Azure Monitor-logboeken.
Controleregels
Microsoft Sentinel maakt gebruik van machine learning-analyse om incidenten met hoge kwaliteit en actie mogelijk te maken. Sommige van uw bestaande Splunk-detecties zijn mogelijk redundant in Microsoft Sentinel, dus migreer ze niet allemaal blindelings. Bekijk deze overwegingen bij het identificeren van uw bestaande detectieregels.
- 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.
- Bekijk verouderde regels die geen waarschuwingen bevatten voor de afgelopen 6-12 maanden en bepaal of ze nog steeds relevant zijn.
- Elimineer bedreigingen op laag niveau of waarschuwingen die u regelmatig negeert.
- Bevestig verbonden gegevensbronnen en controleer uw gegevensverbindingsmethoden. Microsoft Sentinel Analytics vereisen dat het gegevenstype aanwezig is in de Log Analytics-werkruimte voordat een regel wordt ingeschakeld. Ga opnieuw naar gesprekken over gegevensverzameling om ervoor te zorgen dat de gegevens diep en breed zijn in de gebruiksscenario's die u wilt detecteren. Gebruik vervolgens de SIEM-migratie-ervaring 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-ervaring om te zien welke Splunk-detecties automatisch worden geconverteerd naar OOTB-sjablonen.
- Detecties vertalen 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 use cases door communitybronnen te verkennen, zoals de SOC Prime Threat Detection Marketplace.
- 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 Best practices voor het migreren van detectieregels voor meer informatie.
Stappen voor regelmigratie
Controleer of u een testsysteem hebt 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 bronnen heeft om uw gemigreerde regels te testen.
Controleer of de vereiste gegevensbronnen zijn verbonden en controleer de methoden voor gegevensverbinding.
Controleer of uw detecties beschikbaar zijn als OOTB-sjablonen in Microsoft Sentinel:
Gebruik de SIEM-migratie-ervaring om de vertaling en installatie van de OOTB-sjablonen te automatiseren.
Zie De SIEM-migratie-ervaring gebruiken voor meer informatie.
Als u use cases hebt die niet worden weergegeven in de detecties, maakt u regels voor uw eigen werkruimte met OOTB-regelsjablonen.
Ga in Microsoft Sentinel naar de hub Inhoud.
Inhoudstype filteren voor sjablonen voor analytics-regels.
Zoek en installeer/werk elke bijbehorende Content Hub-oplossing of zelfstandige analyseregelsjabloon bij.
Zie Bedreigingen out-of-the-box 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. Gebruik in dergelijke gevallen de volgende stappen om uw regel te maken:
Identificeer de gegevensbronnen die u in uw regel wilt gebruiken. Identificeer de Microsoft Sentinel tabellen die u wilt opvragen door een toewijzingstabel te maken tussen gegevensbronnen en gegevenstabellen.
Identificeer kenmerken, velden of entiteiten in uw gegevens die u in uw regels wilt gebruiken.
Identificeer uw regelcriteria en logica. Overweeg in deze fase regelsjablonen te vinden als voorbeelden voor het samenstellen van uw KQL-query's.
Denk aan filters, correlatieregels, actieve lijsten, verwijzingssets, 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 triggervoorwaarde en regelactie en stel vervolgens uw KQL-query samen en controleer deze. Wanneer u uw query bekijkt, kunt u rekening houden met hulpmiddelen voor KQL-optimalisatie.
Test de regel met elk van uw relevante use cases. Als er geen verwachte resultaten worden weergegeven, controleert en bewerkt u de KQL en test u deze opnieuw.
Wanneer u tevreden bent, kunt u de gemigreerde regel overwegen. Maak zo nodig een playbook voor uw regelactie. Zie Reactie op bedreigingen automatiseren met playbooks in Microsoft Sentinel voor meer informatie.
Meer informatie over analyseregels:
- Aangepaste analyseregels maken om bedreigingen te detecteren. Gebruik waarschuwingsgroepering om de vermoeidheid van waarschuwingen te verminderen door waarschuwingen te groeperen die binnen een bepaald tijdsbestek optreden.
- Wijs gegevensvelden toe aan entiteiten in Microsoft Sentinel zodat SOC-technici entiteiten kunnen definiëren als onderdeel van het bewijs dat tijdens een onderzoek moet worden bijgehouden. Entiteitstoewijzing maakt het ook mogelijk voor SOC-analisten om te profiteren van een intuïtieve [onderzoeksgrafiek] (investigate-cases.md#use-the-investigation-graph-to-deep-dive) die tijd en moeite kan helpen verminderen.
- Onderzoek incidenten met UEBA-gegevens, als voorbeeld van hoe u bewijs kunt gebruiken om gebeurtenissen, waarschuwingen en bladwijzers die aan een bepaald incident zijn gekoppeld, weer te geven in het voorbeeldvenster van incidenten.
- Kusto-querytaal (KQL), waarmee u alleen-lezenaanvragen kunt verzenden naar uw Log Analytics-database 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 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 Search Processing Language (SPL).
| Splunk | Microsoft Sentinel | |
|---|---|---|
| Regeltype | •Geplande •Real-time |
• Geplande query •Fusion • Microsoft-beveiliging • Machine Learning (ML) Behavior Analytics |
| Criteria | Definiëren in SPL | Definiëren in KQL |
| Triggervoorwaarde | • Aantal resultaten • Aantal hosts • Aantal bronnen •Aangepaste |
Drempelwaarde: aantal queryresultaten |
| Actie | • Toevoegen aan geactiveerde waarschuwingen • Logboek gebeurtenis • 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 te vergelijken en toe te wijzen aan Microsoft Sentinel in verschillende scenario's.
Algemene zoekopdrachten
| SPL-opdracht | Beschrijving | KQL-operator | KQL-voorbeeld |
|---|---|---|---|
chart/ timechart |
Retourneert resultaten in een tabellaire uitvoer voor tijdreeksgrafieken. | renderoperator | … | render timechart |
dedup |
Hiermee verwijdert u volgende resultaten die overeenkomen met een opgegeven criterium. | • uniek • samenvatten |
… | summarize by Computer, EventID |
eval |
Berekent een expressie. Meer informatie over algemene eval opdrachten. |
Uitbreiden | T | extend duration = endTime - startTime |
fields |
Hiermee verwijdert u velden uit zoekresultaten. | • project • project-away |
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 uit 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. | Zoek | search "X" |
sort |
Hiermee sorteert u de zoekresultaten op de opgegeven velden. | Sorteren | T | sort by strlen(country) asc, price desc |
stats |
Biedt statistieken, optioneel gegroepeerd op velden. Meer informatie over algemene opdrachten voor statistieken. | 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 |
De zoekresultaten worden gegroepeerd in transacties. SPL-voorbeeld |
Voorbeeld: row_window_session | KQL-voorbeeld |
eventstats |
Genereert samenvattingsstatistieken van velden in uw gebeurtenissen en slaat deze statistieken op in een nieuw veld. SPL-voorbeeld |
Voorbeelden: • deelnemen • make_list • mv-expand |
KQL-voorbeeld |
streamstats |
Zoek de cumulatieve som van een veld. SPL-voorbeeld: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Zoek afwijkingen in het opgegeven veld. SPL-voorbeeld |
series_decompose_anomalies() | KQL-voorbeeld |
where |
Hiermee worden zoekresultaten gefilterd 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
Gebruik row_window_session() deze optie om sessiestartwaarden te berekenen voor een kolom in een geserialiseerde rijenset.
...| 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 | SPL-voorbeeld | KQL-opdracht | KQL-voorbeeld |
|---|---|---|---|---|
abs(X) |
Retourneert de absolute waarde van X. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Gebruikt paren en XY argumenten, waarbij de X argumenten booleaanse expressies zijn. Wanneer de waarde wordt geëvalueerd op TRUE, retourneren de argumenten het bijbehorende Y argument. |
SPL-voorbeeld | case |
KQL-voorbeeld |
ceil(X) |
Plafond van een getal X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Hiermee worden IP-adressen geïdentificeerd 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 berekeningen met dubbele precisie met drijvende komma. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
Retourneert eX. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Als X wordt geëvalueerd naar TRUE, is het resultaat het tweede argument Y. Als X wordt geëvalueerd naar FALSE, wordt het resultaat geëvalueerd naar het derde argument Z. |
if(error==200,"OK", "Error") |
iff() |
KQL-voorbeeld |
isbool(X) |
Retourneert als X booleaans TRUE is. |
isbool(field) |
• iff()• gettype |
iff(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
Retourneert TRUE als X een geheel getal is. |
isint(field) |
• iff()• gettype |
KQL-voorbeeld |
isnull(X) |
Retourneert TRUE als X null is. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Retourneert TRUE als X een tekenreeks is. |
isstr(field) |
• iff()• gettype |
KQL-voorbeeld |
len(X) |
Deze functie retourneert de tekenlengte van een tekenreeks X. |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
Retourneert TRUE als en alleen als X is zoals het SQLite-patroon 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 het tweede argument Y als basis. De standaardwaarde van Y is 10. |
log(number,2) |
• log• log2• log10 |
log(X)log2(X)log10(X) |
lower(X) |
Retourneert de kleine waarde van X. |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
Retourneert X met de tekens in parameter Y die vanaf de linkerkant zijn bijgesneden. De standaarduitvoer van Y is 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 aantal (totaal) X waarden. |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Filtert een veld met meerdere waarden op basis van de Booleaanse X expressie. |
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 tot Z (optioneel). |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Gegeven een veld X met meerdere waarden en tekenreeksscheidingstekens Yen worden de afzonderlijke waarden van het gebruik Yvan X 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() |
null | null |
nullif(X,Y) |
Bevat twee argumenten en XY, en retourneert X als de argumenten verschillen. Anders retourneert NULL. |
nullif(fieldA, fieldB) |
iff |
iff(fieldA==fieldB, null, fieldA) |
random() |
Retourneert een pseudo-willekeurig getal tussen 0 tot 2147483647. |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Gegeven een tijdsperiode X en een relatieve tijdaanduiding Y, retourneert de tijdswaarde van Y toegepast op X. |
relative_time(now(),"-1d@d") |
unix-tijd | KQL-voorbeeld |
replace(X,Y,Z) |
Retourneert een tekenreeks die wordt gevormd door tekenreeks Z te vervangen voor elk exemplaar van een reguliere expressietekenreeks Y in tekenreeks X. |
Retourneert de datum waarbij de maand- en dagnummers zijn gewisseld. Voor de 4/30/2015 invoer is 30/4/2009de uitvoer bijvoorbeeld :replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
KQL-voorbeeld |
round(X,Y) |
Retourneert afgerond op het aantal decimalen X dat is opgegeven door Y. De standaardinstelling is om af te ronden op een geheel getal. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
Retourneert X met de tekens van Y bijgesneden vanaf de rechterkant. Als Y 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 zoektekenreeks X. |
searchmatch("foo AND bar") |
iff() | iff(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) |
Retourneert de vierkantswortel van X. |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Retourneert de tijdwaarde X voor het tijdvak 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) |
Gegeven een tijd die wordt vertegenwoordigd door een tekenreeks X, retourneert de waarde die is geparseerd vanuit de indeling Y. |
strptime(timeStr, "%H:%M") |
format_datetime() | KQL-voorbeeld |
substr(X,Y,Z) |
Retourneert een subtekenreeksveld X vanaf de beginpositie (op basis van één) Y voor Z (optioneel) tekens. |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
Retourneert de kloktijd van de wand met een resolutie van microseconden. | time() |
format_datetime() |
KQL-voorbeeld |
tonumber(X,Y) |
Converteert 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 | SPL-voorbeeld | tostring() |
tostring(123) |
typeof(X) |
Retourneert een tekenreeksweergave van het veldtype. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
Retourneert de URL X die is gedecodeerd. |
SPL-voorbeeld | url_decode |
KQL-voorbeeld |
case(X,"Y",…) SPL-voorbeeld
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
Xeen getal is,Xwordt opnieuw opgemaakt naar een tekenreekswaarde. - Als
Xeen booleaanse waarde is,Xwordt opnieuw opgemaakt inTRUEofFALSE. - Als
Xeen getal is, is het tweede argumentYoptioneel en kan hethex(converterenXnaar een hexadecimaal),commas(notatiesXmet komma's en twee decimalen) ofduration(converteert van een tijdnotatieXin seconden naar een leesbare tijdnotatie:HH:MM:SS).
tostring(X,Y) SPL-voorbeeld
In dit voorbeeld wordt het volgende geretourneerd:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X) SPL-voorbeeld
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
KQL-voorbeeld van veelvoorkomende 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 overeenkomen, notatie 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) |
Retourneert de chronologische vroegst geziene waarde van X. |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Retourneert de chronologische meest recente geziene waarde van X. |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
Retourneert de maximumwaarde van het veld X. Als de waarden van 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 van X 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 steekproefstandaarddeviatie van het veld X. |
Stdev | stdev() |
stdevp(X) |
Retourneert de standaarddeviatie voor 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) |
Retourneert 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.