بيانات الاستعلام باستخدام لغة الاستعلام Kusto

مكتمل

يمكنك استخدام لغة استعلام كوستو (KQL) في Microsoft Azure Sentinel للبحث عن البيانات المجمعة وتصفيتها.

Kusto Query Language

يوفر لك KQL القدرة على إنشاء تحليلات تفاعلية وتخزينها وتشغيلها على البيانات المجمعة. يستخدم Microsoft Azure Sentinel KQL لتصور وتحليل البيانات الهامة. يمكنك استخدام لغة KQL لإنشاء استعلامات تحليلية معقدة تتضمن بعض عوامل التشغيل التالية:

  • الأعمدة المحسوبة
  • وظائف الانضمام
  • المجموعة حسب التجميعات

كتابة الاستعلامات الأساسية وتشغيلها

الاستعلام هو طلب للقراءة فقط يقوم بمعالجة البيانات وإرجاع نتائج هذه المعالجة دون تعديل البيانات أو بيانات التعريف. على غرار استعلامات SQL، تستخدم استعلامات KQL كيانات مخطط منظمة في تسلسل هرمي مثل قواعد البيانات والجداول والأعمدة. المخطط هو مجموعة من الجداول التي تم تجميعها ضمن فئات منطقية. تتكون الاستعلامات من تسلسلات عبارات الاستعلام المحددة بفاصلة منقوطة (;).

عند إنشاء استعلام، تبدأ إما باسم جدول أو أمر بحث. على سبيل المثال، يسترد الاستعلام التالي جميع السجلات من Event الجدول:

Event

يمكنك استخدام حرف توجيه الإخراج (|) لفصل الأوامر. تصبح مخرجات الأمر الأول هو مدخلات الأمر التالي. يمكنك إضافة أي عدد من الأوامر إلى استعلام واحد. يسترد الاستعلام التالي السجلات من Event الجدول، ثم يبحث عنها عن المصطلح error في أي خاصية:

Event

| search error

يمكنك إنشاء الاستعلام باستخدام عوامل جدولة وعددية تدمجها لغة KQL في عبارات تعبير جدولي متعددة، والتي تنتج نتائج الاستعلام.

source1 | operator1 | operator2

في المثال التالي، المصدر هو AzureActivity. عامل التشغيل الأول هو where، الذي يقوم بتصفية السجلات استنادا إلى التعبير المنطقي. عامل التشغيل الثاني هو مرة أخرى where:

AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'

بشكل افتراضي، يقصر Log Analytics الاستعلامات على نطاق زمني خلال الـ 24 ساعة الماضية. لتعيين نطاق زمني مختلف، يمكنك إضافة عامل تصفية صريح TimeGenerated إلى الاستعلام أو استخدام Time range عنصر التحكم. على سبيل المثال، يقوم الاستعلام التالي بإرجاع بيانات من الساعة السابقة:


AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)

ويمكنك دمج استعلاماتك مع بعض عوامل التشغيل الأكثر استخدامًا:

  • count. إرجاع عدد الصفوف في الجدول.
  • take. إرجاع إلى العدد المحدد لصفوف البيانات.
  • project. تحديد مجموعة فرعية من الأعمدة.
  • sort. فرز صفوف جدول الإدخال إلى ترتيب بواسطة عمود واحد أو أكثر.
  • top. إرجاع عدد N الأولى من السجلات التي تم فرزها حسب الأعمدة المحددة.
  • extend. حساب الأعمدة المشتقة.
  • summarize. تجميع مجموعات الصفوف.
  • render. يعرض النتائج كمخرج رسومي.

لدمج السجلات من مصدرين (جداول)، يمكنك استخدام join عامل التشغيل. يجمع union عامل التشغيل بين جدولين أو أكثر في جدول واحد.

لمزيد من المعلومات، راجع برنامج Log analytics التعليمي الذي يستخدم ميزات "Log analytics" لإنشاء استعلام وتشغيله بدلاً من العمل مع الاستعلام نفسه.

يمكنك أيضًا استخدام برنامج Azure Data explorer التعليمي لمعرفة المزيد حول لغة KQL.

إشعار

لا يدعم Microsoft Azure Sentinel Log Analytics كافة بناء جملة KQL المستخدمة في مستكشف البيانات Azure.

مستودع Microsoft Sentinel على GitHub

يمكنك أيضًا استخدام مستودع Microsoft Azure Sentinel على GitHub للبحث عن الاستعلامات المتخصصة والمصنفات للمساعدة في تأمين بيئتك والبحث عن التهديدات. على سبيل المثال، يعرض الاستعلام التالي من مستودع Microsoft Azure Sentinel GitHub تفويض مريب للأذونات لحسابات المستخدمين.

let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress

ويحلل الاستعلام عنوان IP حيث يمنح المسؤول الوصول لمستخدمين آخرين إلى موارد Azure. إذا لم تكن العملية من عنوان IP صالح، فإن الاستعلام يشير إلى نشاط مريب، والذي يمكنك التحقق منه بشكل أكبر.

إذا كنت تريد تجربة بعض الأمثلة، فاستخدم بيئة العرض التوضيحي على مدخل Azure.

‏‫اختبر معلوماتك

1.

أي من الأدوات التالية يمكن للمسؤول استخدامها للاستعلام عن البيانات في Microsoft Sentinel؟

2.

أي من الأحرف التالية يمكن أن يستخدمها المسؤول لفصل الأوامر في الاستعلام.