ترحيل قواعد الكشف عن Splunk إلى Azure Sentinel
قواعد الكشف عن Splunk هي مكونات إدارة معلومات الأمان والأحداث (SIEM) التي تقارن بقواعد التحليلات في Microsoft Sentinel. توضح هذه المقالة المفاهيم لتحديدها ومقارنتها وترحيلها إلى Microsoft Sentinel. أفضل طريقة هي البدء بتجربة ترحيل SIEM، والتي تحدد قواعد التحليلات الجاهزة (OOTB) للترجمة إليها تلقائيا.
إذا كنت ترغب في ترحيل نشر Splunk Observability، فتعرف على المزيد حول كيفية الترحيل من Splunk إلى سجلات Azure Monitor.
قواعد التدقيق
يستخدم Microsoft Sentinel تحليلات التعلم الآلي لإنشاء أحداث عالية الدقة وقابلة للتنفيذ. قد تكون بعض عمليات اكتشاف Splunk الموجودة لديك زائدة عن الحاجة في Microsoft Sentinel، لذلك لا تقم بترحيلها جميعا بشكل أعمى. راجع هذه الاعتبارات خلال تحديد قواعد الكشف الحالية.
- تأكد من تحديد حالات الاستخدام التي تبرر ترحيل القواعد، مع مراعاة أولوية العمل وكفاءته.
- تحقق من فهمك أنواع قواعد Azure Sentinel.
- تحقق من فهمك للمصطلحات الخاصة بالقاعدة.
- راجع القواعد القديمة التي لا تحتوي على تنبيهات خلال الأشهر من 6 إلى 12 شهرا الماضية، وحدد ما إذا كانت لا تزال ذات صلة.
- تخلص من التهديدات أو التنبيهات منخفضة المستوى التي تتجاهلها بشكل روتيني.
- أكد مصادر البيانات المتصلة وراجع طرق اتصال البيانات الخاصة بك. يتطلب Microsoft Sentinel Analytics أن يكون نوع البيانات موجودا في مساحة عمل Log Analytics قبل تمكين قاعدة. أعد زيارة محادثات جمع البيانات لضمان عمق البيانات واتساعها عبر حالات الاستخدام التي تخطط للكشف عنها. ثم استخدم تجربة ترحيل SIEM لضمان تعيين مصادر البيانات بشكل مناسب.
قواعد الترحيل
بعد تحديد اكتشافات Splunk المراد ترحيلها، راجع هذه الاعتبارات لعملية الترحيل:
- قارن الوظائف الحالية لقواعد تحليلات OOTB الخاصة ب Microsoft Sentinel بحالات الاستخدام الحالية. استخدم تجربة ترحيل SIEM لمعرفة اكتشافات Splunk التي يتم تحويلها تلقائيا إلى قوالب OOTB.
- ترجمة عمليات الكشف التي لا تتوافق مع قواعد تحليلات OOTB. أفضل طريقة لترجمة اكتشافات Splunk تلقائيا هي مع تجربة ترحيل SIEM.
- اكتشف المزيد من الخوارزميات لحالات الاستخدام الخاصة بك عن طريق استكشاف موارد المجتمع مثل SOC Prime Threat Detection Marketplace.
- ترجمة عمليات الكشف يدويا إذا لم تكن القواعد المضمنة متوفرة أو لم تتم ترجمتها تلقائيا. إنشاء استعلامات KQL الجديدة ومراجعة تعيين القواعد.
لمزيد من المعلومات، راجع أفضل الممارسات لترحيل قواعد الكشف.
خطوات ترحيل القواعد
تأكد من وجود نظام اختبار لكل قاعدة تريد ترحيلها.
أعد عملية التحقق من الصحة للقواعد التي تم ترحيلها، بما في ذلك سيناريوهات الاختبار الكاملة والبرامج النصية.
تأكد من أن فريقك لديه موارد مفيدة لاختبار القواعد التي رحلت.
تأكد من توصيل مصادر البيانات المطلوبة، وراجع أساليب اتصال البيانات.
تحقق مما إذا كانت عمليات الكشف الخاصة بك متوفرة كقوالب OOTB في Microsoft Sentinel:
استخدم تجربة ترحيل SIEM لأتمتة ترجمة قوالب OOTB وتثبيتها.
لمزيد من المعلومات، راجع استخدام تجربة ترحيل SIEM.
إذا كانت لديك حالات استخدام لا تنعكس في عمليات الكشف، فبادر بإنشاء قواعد لمساحة العمل الخاصة بك باستخدام قوالب قواعد OOTB.
في Microsoft Sentinel، انتقل إلى مركز المحتوى.
تصفية نوع المحتوى لقوالب قواعد التحليلات.
ابحث عن كل حل لمركز المحتوى أو قالب قاعدة تحليلات مستقل وتثبيته/تحديثه.
لمزيد من المعلومات، راجع الكشف عن التهديدات الجاهزة.
إذا كان لديك اكتشافات لا تغطيها قواعد OOTB الخاصة ب Microsoft Sentinel، فجرب أولا تجربة ترحيل SIEM للترجمة التلقائية.
إذا لم تترجم قواعد OOTB أو ترحيل SIEM الكشف تماما، فبادر بإنشاء القاعدة يدويا. في مثل هذه الحالات، استخدم الخطوات التالية لإنشاء القاعدة الخاصة بك:
حدد مصادر البيانات التي ترغب استخدامها في القاعدة الخاصة بك. حدد جداول Microsoft Sentinel التي تريد الاستعلام بها عن طريق إنشاء جدول تعيين بين مصادر البيانات وجداول البيانات.
حدد أي سمات أو حقول أو كيانات في البيانات الخاصة بك تريد استخدامها في القواعد.
حدد المعايير الخاصة بالقاعدة والمنطق. في هذه المرحلة، ضع في اعتبارك العثور على قوالب القواعد كعينات لكيفية إنشاء استعلامات KQL الخاصة بك.
النظر في عوامل التصفية وقواعد الارتباط والقوائم النشطة ومجموعات المراجع وقوائم المشاهدة والحالات الشاذة للكشف والتجميعات، وما إلى ذلك. يمكنك استخدام المراجع التي يوفرها SIEM القديم لفهم كيفية أفضل طريقة لتعيين بناء جملة الاستعلام الخاص بك.
حدد شرط المشغل وقاعدة الإجراء، ثم أنشئ استعلام KQL الخاص بك ومراجعته. أثناء مراجعة الاستعلام الخاص بك، ضع في اعتبارك موارد إرشادات التحسين KQL.
تأكد من اختبار القاعدة مع كل حالة من حالات الاستخدام ذات الصلة. إذا لم يوفر النتائج المتوقعة، فراجع KQL وحرره واختبره مرة أخرى.
عندما تكون راضيا، ضع في اعتبارك القاعدة التي تم ترحيلها. أنشئ دليل المبادئ لإجراءات القاعدة الخاصة بك عند الحاجة. للمزيد من المعلومات، راجع أتمتة الاستجابة للمخاطر باستخدام أدلة المبادئ في Azure Sentinel.
تعرف على المزيد عن قواعد التحليلات:
- أنشئ قواعد تحليلات مخصصة للكشف عن التهديدات. استخدم تجميع التنبيهات لتقليل إجهاد التنبيه عن طريق تجميع التنبيهات التي تحدث ضمن إطار زمني معين.
- تعيين حقول البيانات إلى كيانات في Azure Sentinel لتمكين مهندسي SOC من تحديد الكيانات كجزء من الأدلة التي يجب تعقبها أثناء التحقيق. كما يتيح تعيين الكيان لمحللي SOC الاستفادة من [الرسم البياني للتحقيق] البديهي (investigate-cases.md#use-the-investigation-graph-to-deep-dive) الذي يمكن أن يساعد في تقليل الوقت والجهد.
- تحقق من الأحداث باستخدام بيانات UEBA، كمثال على كيفية استخدام الأدلة لعرض الأحداث والتنبيهات وأي إشارات مرجعية ذات صلة بحدث معين في جزء الإصدار الأولي للحدث.
- لغة استعلام الخاصة بـ Kusto (KQL) والتي يمكنك استخدامها لإرسال طلبات للقراءة فقط إلى قاعدة بيانات Log Analytics لمعالجة البيانات وإرجاع النتائج. يستخدم KQL أيضاً من خلال خدمات Microsoft الأخرى، مثل Microsoft Defender لنقطة النهاية وApplication Insights.
مقارنة مصطلحات القاعدة
يساعدك هذا الجدول على توضيح مفهوم قاعدة تستند إلى لغة استعلام Kusto (KQL) في Microsoft Sentinel مقارنة بالكشف عن Splunk استنادا إلى لغة معالجة البحث (SPL).
Splunk | Microsoft Sentinel | |
---|---|---|
نوع القاعدة | • مجدولة • الوقت الحقيقي |
• استعلام مجدول • Fusion • Microsoft Security • تحليلات سلوك التعلم الآلي من Microsoft Azure |
المعايير | التعريف في SPL | تعريف في KQL |
شرط المشغل | • عدد النتائج • عدد المضيفين • عدد المصادر • مخصص |
الحد: عدد نتائج الاستعلام |
الإجراء | • إضافة إلى التنبيهات التي شغلت • حدث التسجيل • نتائج الإخراج للبحث عن • وأكثر |
• أنشئ تنبيه أو حدث • تكامل مع Logic Apps |
تعيين نماذج القواعد ومقارنتها
استخدم هذه العينات لمقارنة القواعد وتعيينها من Splunk إلى Azure Sentinel في سيناريوهات مختلفة.
أوامر البحث العامة
الأمر الخاص بـ SPL | الوصف | عامل تشغيل خاص بـ KQL | مثال خاص بـ KQL |
---|---|---|---|
chart/ timechart |
تُرجع النتائج في إخراج جدولي لتخطيط السلاسل الزمنية. | عامل تشغيل العرض | … | render timechart |
dedup |
يعمل علي إزالة النتائج اللاحقة التي تطابق معيارًا محددًا. | • distinct • summarize |
… | summarize by Computer, EventID |
eval |
يحسب التعبير.
تعرف على الأوامر الشائعةeval . |
extend | T | extend duration = endTime - startTime |
fields |
يزيل الحقول من نتائج البحث. | • project • project-away |
T | project cost=price*quantity, price |
head/tail |
يُرجع أول أو آخر نتيجتين. | top | T | top 5 by Name desc nulls last |
lookup |
يضيف قيم الحقل من مصدر خارجي. | • externaldata • بحث |
مثال خاص بـ KQL |
rename |
يعيد تسمية حقل. استخدم أحرف بدل لتحديد حقول متعددة. | إعادة تسمية المشروع | T | project-rename new_column_name = column_name |
rex |
يحدد أسماء المجموعات باستخدام التعبيرات العادية لاستخراج الحقول. | matches regex | … | where field matches regex "^addr.*" |
search |
يقوم بتصفية النتائج إلى النتائج التي تطابق تعبير البحث. | search | search "X" |
sort |
يفرز نتائج البحث حسب الحقول المحددة. | sort | T | sort by strlen(country) asc, price desc |
stats |
يوفر الإحصائيات، مجمعة اختيارياً حسب الحقول. تعرف على المزيد عن أوامر الإحصائيات الشائعة. | summarize | مثال خاص بـ KQL |
mstats |
على غرار الإحصائيات، تُستخدم في المقاييس بدلاً من الأحداث. | summarize | مثال خاص بـ KQL |
table |
يحدد الحقول المطلوب الاحتفاظ بها في مجموعة النتائج، ويحتفظ بالبيانات بتنسيق جدولي. | project | T | project columnA, columnB |
top/rare |
يعرض القيم الأكثر شيوعًا أو الأقل شيوعًا للحقل. | top | T | top 5 by Name desc nulls last |
transaction |
مجموعات نتائج البحث في المعاملات. مثال على SPL |
مثال: row_window_session | مثال خاص بـ KQL |
eventstats |
يولد إحصائيات موجزة من الحقول في الأحداث الخاصة بك ويحفظ تلك الإحصائيات في حقل جديد. مثال على SPL |
أمثلة: • join • make_list • mv-expand |
مثال خاص بـ KQL |
streamstats |
أوجد المجموع التراكمي للحقل. مثال علي SPL: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
ابحث عن الحالات الشاذة في الحقل المُحدد. مثال على SPL |
series_decompose_anomalies() | مثال خاص بـ KQL |
where |
تصفية نتائج البحث باستخدام التعبيرات eval . تستخدم للمقارنة بين مجالين مختلفين. |
حيث | T | where fruit=="apple" |
lookup
الأمر: مثال KQL
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
الأمر: مثال KQL
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats
الأمر: مثال KQL
T | summarize count() by price_range=bin(price, 10.0)
transaction
الأمر: مثال على SPL
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction
الأمر: مثال KQL
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
يستخدم row_window_session()
لحساب قيم بدء جلسة العمل لعمود في مجموعة صفوف متسلسل.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats
الأمر: مثال على SPL
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats
الأمر: مثال KQL
فيما يلي مثال على العبارة 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
فيما يلي مثال على العبارة 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
الأمر: مثال على SPL
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection
الأمر: مثال KQL
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)
الأوامر الشائعة eval
الأمر الخاص بـ SPL | الوصف | مثال على SPL | أمر KQL | مثال خاص بـ KQL |
---|---|---|---|---|
abs(X) |
تُرجع القيمة المطلقة لـ X. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
يأخذ أزواجا من X وY ، وسيطات إذ X تكون الوسيطات تعبيرات منطقية. أثناء تقييمها إلى TRUE ، ترجع الوسيطات الوسيطة المقابلة Y . |
مثال على SPL | case |
مثال خاص بـ KQL |
ceil(X) |
حد أعلي رقم X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
يحدد عناوين IP التي تنتمي إلى شبكة فرعية معينة. | 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,…) |
تُرجع القيمة الأولى غير الفارغة. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"), tolong("42"), 33) == 42 |
cos(X) |
يحسب جيب تمام X. | n=cos(0) |
cos() | cos(X) |
exact(X) |
يقيّم التعبير X باستخدام حساب النقطة العائمة مزدوج الدقة. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
ترجع eX. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
في حالة X تقييم إلى TRUE ، تكون النتيجة هي الوسيطة الثانية Y . في حالة X تقييم إلى FALSE ، تقيم النتيجة إلى الوسيطة الثالثة Z . |
if(error==200, "OK", "Error") |
iif() |
مثال خاص بـ KQL |
isbool(X) |
يرجع TRUE إذا كان X منطقيًا. |
isbool(field) |
• iif() • gettype |
iif(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
يرجع TRUE إذا كان X عددًا صحيحًا. |
isint(field) |
• iif() • gettype |
مثال خاص بـ KQL |
isnull(X) |
يرجع TRUE إذا كان X فارغًا. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
يرجع TRUE إذا كانت X سلسلة. |
isstr(field) |
• iif() • gettype |
مثال خاص بـ KQL |
len(X) |
تُرجع هذه الدالة طول حرف سلسلة X . |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
يرجع TRUE إذا كان و فقط إذا كان X مثل نمط SQLite في Y . |
like(field, "addr%") |
• has • contains • startswith • matches regex |
مثال خاص بـ KQL |
log(X,Y) |
يرجع سجل الوسيطة X الأولى باستخدام الوسيطة Y الثانية كأساس. وتكون القيمة الافتراضية لـ Y هي 10 . |
log(number,2) |
• log • log2 • log10 |
log(X) log2(X) log10(X) |
lower(X) |
ترجع القيمة الصغيرة لـ X . |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
ترجع X مع اقتطاع الأحرف في المعلمة Y من الجانب الأيسر. الإخراج الافتراضي هو مسافات Y وعلامات تبويب. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
تُرجع إذا تطابق X مع نمط التعبير العادي Y. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
ترجع القيمة القصوى في عمود. | max(delay, mydelay) |
• max() • arg_max() |
… | summarize max(field) |
md5(X) |
تُرجع تجزئة MD5 لقيمة سلسلةX . |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
تُرجع الحد الأدنى للقيمة في عمود. | min(delay, mydelay) |
• min_of() • min() • arg_min |
مثال خاص بـ KQL |
mvcount(X) |
يرجع عدد (إجمالي) X القيم. |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
يصفي حقل متعدد القيم استنادًا إلى التعبير المنطقي X . |
mvfilter(match(email, "net$")) |
mv-apply |
مثال خاص بـ KQL |
mvindex(X,Y,Z) |
ترجع مجموعة فرعية من الوسيطة متعددة القيم X من موضع البدء (المستند إلى الصفر) Y إلى Z (اختياري). |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
نظرًا لحقل X متعدد القيم ومحدد Y سلسلة، ويربط القيم X الفردية لاستخدام Y . |
mvjoin(address, ";") |
strcat_array |
مثال خاص بـ KQL |
now() |
لعرض الوقت الحالي المُمثل بوقت Unix. | now() |
now() |
now() now(-2d) |
null() |
لا يقبل الوسيطات والعوائد NULL . |
null() |
قيمة فارغة | null |
nullif(X,Y) |
يشمل وسيطتين، X ، وY وإرجاع X في حالة كانت الوسيطات مختلفة. خلاف ذلك، يعود NULL . |
nullif(fieldA, fieldB) |
iif |
iif(fieldA==fieldB, null, fieldA) |
random() |
ترجع هذه الدالة رقما عشوائيًا مستعارًا بين 0 إلى 2147483647 . |
random() |
rand() |
rand() |
relative_ time(X,Y) |
نظرا إلى وقت X الفترة ومحدد Y الوقت النسبي، تُرجع قيمة Y وقت الفترة المطبقة على X . |
relative_time(now(),"-1d@d") |
unix time | مثال خاص بـ KQL |
replace(X,Y,Z) |
ترجع سلسلة تم تشكيلها عن طريق استبدال سلسلة Z لكل تكرار لسلسلة Y التعبير العادية في السلسلة X . |
تاريخ الإرجاع مع تبديل أرقام الشهر واليوم. على سبيل المثال، فيما يتعلق بـ 4/30/2015 الإدخال، يكون الإخراج هو 30/4/2009 :replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
مثال خاص بـ KQL |
round(X,Y) |
يرجع X مقربًا إلى عدد المنازل العشرية المحددة بواسطة Y . الافتراضي هو التقريب إلى عدد صحيح. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
يرجع X مع أحرف Y اقتطاع من الجانب الأيمن. في حالة Y لم يتم تحديدها، يتم اقتطاع المسافات وعلامات التبويب. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
ترجع TRUE إذا كان الحدث يطابق سلسلة البحثX . |
searchmatch("foo AND bar") |
iif() | iif(field has "X","Yes","No") |
split(X,"Y") |
ترجع X كخانة متعددة القيم، مقسمة حسب المحدد Y . |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
يرجع الجذر التربيعي لرقم X . |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
ترجع قيمة X وقت الفترة المعروضة باستخدام التنسيق المحدد بواسطة Y . |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
بالنظر إلى الوقت الذي تمثله سلسلة X ، ترجع القيمة التي حللت من التنسيق Y . |
strptime(timeStr, "%H:%M") |
format_datetime() | مثال خاص بـ KQL |
substr(X,Y,Z) |
يرجع حقل X سلسلة فرعية من موضع البدء (مستند إلى واحد) Y للأحرف Z (اختياري). |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
يرجع وقت ساعة الحائط بدقة ميكروثانية. | time() |
format_datetime() |
مثال خاص بـ KQL |
tonumber(X,Y) |
تحول سلسلة X الإدخال إلى رقم، إذ أن Y (القيمة الافتراضية الاختيارية هي 10 ) تحدد قاعدة الرقم الذي سيحول إليه. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
الوصف | مثال على SPL | tostring() |
tostring(123) |
typeof(X) |
ترجع تمثيل سلسلة لنوع الحقل. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
يرجع عنوان URL X الذي تم فك ترميزه. |
مثال على SPL | url_decode |
مثال خاص بـ KQL |
case(X,"Y",…)
مثال SPL
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…)
مثال KQL
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z)
مثال KQL
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X)
مثال KQL
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X)
مثال KQL
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y")
على سبيل المثال
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…)
مثال KQL
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X)
مثال KQL
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y)
مثال KQL
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y)
مثال KQL
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z)
مثال KQL
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y)
مثال KQL
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time()
مثال KQL
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y)
ترجع قيمة X
حقل كسلسلة.
- في حالة كانت قيمة
X
رقمًا،X
يعاد تنسيقها إلى قيمة سلسلة. - إذا كانت
X
قيمة منطقية،X
يعاد تنسيقها إلىTRUE
أوFALSE
. - في حالة كانت
X
الوسيطة رقمًا، فإن الوسيطةY
الثانية اختيارية ويمكن أن تكونhex
إما (تحويلX
إلى رقم سداسي عشري)،commas
أو (تنسيقاتX
بفواصل ومنزلتين عشريتين)، أوduration
(تحويلX
من تنسيق زمني بالثواني إلى تنسيق زمني قابل للقراءة:HH:MM:SS
).
tostring(X,Y)
مثال SPL
هذا المثال يرجع:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X)
مثال SPL
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
مثال KQL للأوامر الشائعة stats
الأمر الخاص بـ SPL | الوصف | أمر KQL | مثال خاص بـ KQL |
---|---|---|---|
avg(X) |
ترجع متوسط قيم الحقل X . |
avg() | avg(X) |
count(X) |
ترجع عدد تكرارات الحقل X . للإشارة إلى قيمة حقل معينة لمطابقتها، نسق X باعتباره eval(field="value") . |
count() | summarize count() |
dc(X) |
ترجع عدد القيم المميزة للحقل X . |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
ترجع القيمة التي تمت عرضها حسب الترتيب الزمني لـ X . |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
يعرض القيمة التي تمت عرضها حسب الترتيب الزمني لـ X . |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
ترجع القيمة القصوى للحقل X . إذا كانت قيم X غير رقمية، يعثر على القيمة القصوى عبر الترتيب الأبجدي. |
max() | …\| summarize max(X) |
median(X) |
تعيد هذه الدالة القيمة المتوسطة للحقل X . |
القيمة المئوية() | …\| summarize percentile(X, 50) |
min(X) |
تعيد القيمة القصوى للحقل X . إذا كانت قيم X غير رقمية، يعثر على القيمة الدنيا من خلال الترتيب الأبجدي. |
min() | …\| summarize min(X) |
mode(X) |
ترجع القيمة الأكثر تكراراً للحقل X . |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
ترجع القيمة المئوية X للحقل Y . على سبيل المثال، perc5(total) ترجع القيمة المئوية الخامسة الخاصة بحقل total . |
القيمة المئوية() | …\| summarize percentile(Y, 5) |
range(X) |
ترجع الفرق بين القيم القصوى والحد الأدنى للحقل X . |
range() | range(1, 3) |
stdev(X) |
يرجع نموذج الانحراف المعياري للحقل X . |
stdev | stdev() |
stdevp(X) |
يرجع الانحراف المعياري لفحص المحتوى للحقل X . |
stdevp() | stdevp() |
sum(X) |
يرجع مجموع قيم الحقل X . |
sum() | sum(X) |
sumsq(X) |
يرجع مجموع مربعات قيم الحقل X . |
||
values(X) |
ترجع قائمة بجميع القيم المميزة للحقل X كإدخال متعدد القيم. ترتب القيم أبجديًا. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
يرجع تباين العينة للحقل X . |
variance | variance(X) |
الخطوات التالية
في هذه المقالة، تعلمت كيفية تعيين قواعد الترحيل الخاصة بك من Splunk إلى Azure Sentinel.