
محلل مصادر سجلات Microsoft Sentinel SIEM
لقد اضطررت للإجابة على "ما الذي نحصل عليه فعليًا من هذه السجلات؟" أو "ما هي السجلات الموصى بها لـ Microsoft Sentinel؟" أكثر مما يمكنني عده. تعتمد الإجابة دائمًا على أشياء كثيرة، ولكن يمكننا أن نكون عامين. لذا فقد بنيت هذا الشيء هنا.
Log Horizon يتصل بمساحة عمل Microsoft Sentinel الخاصة بك (واختياريًا بـ Defender XDR)، ويمر عبر كل جدول سجل تقوم بإدخاله، ويخبرك ما إذا كنت تحصل على قيمة أمنية منه أم تحرق الأموال فقط. يقوم بتصنيف الجداول، وتقييمها مقابل قواعد الكشف الخاصة بك، ويمنحك توصيات ملموسة مع تقديرات التوفير.
هام: هذا نهج عام. إذا كنت تعلم أن مصدر سجل معين مهم لبيئتك، فإن هذا السياق له الأولوية دائمًا على ما تخبرك به هذه الأداة. التصنيفات هي نقطة بداية، وليست حقيقة مطلقة.
هل تريد قراءة المزيد؟ لدي بعض المقالات حول Log Horizon على مدونتي:
[!CAUTION] إخلاء مسؤولية
تم تطوير هذه الأداة وصيانتها بمساعدة الذكاء الاصطناعي. يرجى توخي الحذر عند استخدام هذا الحل وفهم دائمًا ما تقوم بتشغيله قبل تشغيله في الإنتاج. لا يتحمل المطور أي مسؤولية عن أي ثغرات أو مشكلات.
بتحميلك لهذه الأداة أو تثبيتها أو استخدامها، فإنك تقر بأنك قد قرأت وفهمت ووافقت على هذه الشروط.
| ما تحتاجه | الإصدار |
|---|---|
| PowerShell | 7.0+ |
| وحدات Az | Az.Accounts، Az.Resources |
| وحدات أخرى | PwshSpectreConsole 2.6.3+ |
إذا لم تكن مسجلاً الدخول إلى Azure بالفعل، فستقوم الوحدة بتشغيل Connect-AzAccount لك. وإذا كنت مسجلاً، فستستمر مباشرة.
بسيط جداً:```powershell
Install-Module -Name Az.Accounts, Az.Resources -Scope CurrentUser Install-Module -Name PwshSpectreConsole -Scope CurrentUser
git clone https://github.com/lnfernux/log-horizon Import-Module ./log-horizon/LogHorizon.psd1
## الاستخدام
### الأساسيات
ابدأ بالاتصال بـ Azure وتأكد من اختيار الحساب والاشتراك الصحيحين:```powershell
Connect-AzAccount
ثم يمكننا استدعاء الأداة:```powershell Invoke-LogHorizon -SubscriptionId '00000000-0000-0000-0000-000000000000' -ResourceGroup 'rg-sentinel' -WorkspaceName 'my-sentinel-ws'
<img width="860" height="842" alt="{F4FFA929-B24F-490C-BD3D-F75E214BCD93}" src="https://assets.kitploit.com/production/public/readmes/13110/ff9d1da85043d02a216df72913ecf63520310b8d820b1bd1278b8e4aca718494.png" />
يحتوي أيضًا على قائمة للتعمق في المخرجات الأخرى:
<img width="395" height="223" alt="{83CE9E6E-F373-49CD-BE05-182DB69F36BE}" src="https://assets.kitploit.com/production/public/readmes/13110/0606a575b10640bd13ebb87b930f74b2438167b5578cb843b412b4fcf273fc26.png" />
### فجوات الكلمات المفتاحية + Defender XDR
هل تريد معرفة ما إذا كنت تفتقد جداول متعلقة ببائعين محددين؟ أضف بعض الكلمات المفتاحية. أضف `-IncludeDefenderXDR` إذا كنت تريد تحليل XDR أيضًا.```powershell
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -Keywords 'CrowdStrike','AWS','Okta' -IncludeDefenderXDR
تمكين تحليل جودة/ضوضاء القواعد بناءً على الحوادث وقواعد الأتمتة:```powershell Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -IncludeDetectionAnalyzer -DetectionLookbackDays 90
### تصدير تقرير```powershell
# JSON
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -Output json -OutputPath ./report.json
# Markdown
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -Output markdown -OutputPath ./report.md
# Static HTML (self-contained, no JS, works offline)
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -Output html -OutputPath ./report.html
# Auto-generate timestamped filename by pointing at a directory
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -Output html -OutputPath ./reports/
يمكنك الآن تحديث فترة الاحتفاظ بالجدول ونوع الجدول مباشرة من واجهة TUI التفاعلية:
Invoke-LogHorizon بشكل طبيعي، ثم اختر إدارة فترة الاحتفاظ ونوع الجدول من القائمة الرئيسية لتحديثات جماعية لفترة الاحتفاظ أو النوع.للاستخدام عبر النصوص البرمجية أو الأتمتة، استخدم الأمر العام المخصص:```powershell
Set-LogHorizonTableRetention -SubscriptionId '...' -ResourceGroupName 'rg' -WorkspaceName 'ws' ` -TableName 'SigninLogs' -TotalRetentionInDays 365 -WhatIf
Set-LogHorizonTableRetention -SubscriptionId '...' -ResourceGroupName 'rg' -WorkspaceName 'ws' ` -TableName 'AzureDiagnostics','VMConnection' -TargetPlan Basic -TotalRetentionInDays 730
Set-LogHorizonTableRetention -SubscriptionId '...' -ResourceGroupName 'rg' -WorkspaceName 'ws' ` -TableName 'SigninLogs' -RetentionInDays -1 -TotalRetentionInDays -1
### وضع غير تفاعلي / وضع CI
تجاوز واجهة TUI التفاعلية وقم بالتصدير مباشرة إلى ملف — مفيد لخطوط الأنابيب أو التشغيل المجدول:```powershell
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -NonInteractive -Output json -OutputPath ./reports/
إذا قمت بحذف -Output، يتم إرجاع كائن التحليل إلى الأنبوب لتتمكن من تمريره إلى منطقك الخاص.
تتضمن واجهة TUI التفاعلية قائمة اقتراحات تقسيم KQL التي تنشئ استعلامات KQL جاهزة للبوابة للجداول المناسبة للتقسيم. تعرض استعلامات KQL لكل جدول يمكنك لصقها مباشرة في محرر قاعدة التقسيم في Sentinel، مع إسناد المصدر (قاعدة المعرفة، تحليل القاعدة، أو مزيج).
السعر الافتراضي هو 5.59 $/GB (الدفع حسب الاستخدام المبسط في غرب أوروبا). إذا كانت طبقة الالتزام الخاصة بك مختلفة:```powershell Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' -PricePerGB 4.61
### جميع المعلمات
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `-SubscriptionId` | string | Yes | - | معرف اشتراك Azure |
| `-ResourceGroup` | string | Yes | - | مجموعة الموارد التي تحتوي على مساحة عمل Sentinel |
| `-WorkspaceName` | string | Yes | - | اسم مساحة عمل Log Analytics |
| `-WorkspaceId` | string | No | - | معرف مساحة العمل (يتم حله تلقائيًا إذا تم حذفه) |
| `-Output` | string | No | - | تنسيق التصدير: `json` أو `markdown` / `md` أو `html` |
| `-OutputPath` | string | No | - | مسار الملف أو المجلد للتصدير (يتم إنشاء اسم ملف بطابع زمني تلقائيًا عند تحديد مجلد) |
| `-Keywords` | string[] | No | - | كلمات مفتاحية لتحليل الفجوات (مثل `'AWS','CrowdStrike'`) |
| `-IncludeDefenderXDR` | switch | No | - | تضمين تحليل الكشف المخصص لـ Defender XDR |
| `-IncludeDetectionAnalyzer` | switch | No | - | تضمين تحليل الكشف المزعج لكل قاعدة باستخدام الحوادث وقواعد الأتمتة |
| `-DetectionLookbackDays` | int | No | 90 | نافذة الاستعلام لتحليل الكشف المستند إلى الحوادث/الأتمتة (1-365 يومًا) |
| `-DaysBack` | int | No | 90 | نافذة الاستعلام لبيانات الاستخدام (1-365 يومًا) |
| `-PricePerGB` | decimal | No | 5.59 | سعر استيعاب Sentinel لكل جيجابايت |
| `-NonInteractive` | switch | No | - | تخطي لوحة TUI والتصدير مباشرة (أو إعادة البيانات إلى خط الأنابيب إذا تم حذف `-Output`) |
| `-CustomClassificationPath` | string | No | - | مسار إلى ملف JSON مخصص لإضافة أو تجاوز التصنيفات |
---
## تحت الغطاء
إذن هناك أربع مراحل.
### 1. جمع البيانات
تتصل الوحدة بـ Azure وتسحب البيانات من واجهات برمجة تطبيقات Log Analytics و Security Insights:
| مصدر البيانات | API | ما يتم الحصول عليه |
|---|---|---|
| استخدام الجداول | جدول `Usage` (KQL) | حجم الاستيعاب لكل جدول عبر نافذة الاستعلام الخاصة بك |
| قواعد التحليل | REST Security Insights | قواعد الكشف النشطة + الجداول التي تستهدفها + علامات الارتباط |
| استعلامات الصيد | REST Security Insights | استعلامات الصيد المحفوظة + الجداول المشار إليها |
| موصلات البيانات | REST Security Insights | جرد الموصلات المثبتة |
| تحسين SOC | REST Security Insights | توصيات SOC المضمنة من Microsoft |
| الاحتفاظ بالجداول | REST Azure Tables | الاحتفاظ والأرشفة والخطة لكل جدول (Analytics/Basic) |
| Defender XDR | REST Security Insights | الكشف المخصص لـ XDR وتكوين البث (اختياري) |
| الحوادث | REST Security Insights | نتائج الحوادث (الحالة/التصنيف) والتوقيت وإشارات ربط القواعد لتصنيف جودة القاعدة |
| قواعد الأتمتة | REST Security Insights | إجراءات إغلاق الحوادث في مستوى القاعدة وشروط مطابقة العنوان لإسناد الإغلاق التلقائي |
| SentinelHealth | Log Analytics KQL | أحداث تشغيل قاعدة الأتمتة مع أرقام الحوادث لإسناد الإغلاق التلقائي بشكل قاطع (اختياري، يتطلب مراقبة الصحة) |
### 2. التصنيف
يتم تصنيف كل جدول من خلال مسارين:
**أولاً**، بحث مباشر في قاعدة المعرفة المكونة من 345 مدخلاً في `Data/log-classifications.json`. يحمل كل مدخل اسم الموصل والتصنيف الأساسي/الثانوي وفئة الأمان وتعيينات مصدر بيانات MITRE ومستوى التسعير الموصى به.
**في حالة عدم وجود تطابق**، يتم تفعيل القواعد الاستكشافية:
- يحتوي الاسم على أنماط أمنية مثل `Alert` أو `Incident` أو `Threat` أو `Signin` أو `Audit` أو `Risk` -> **أساسي**
- يبدو الاسم وكأنه بيانات تتبع بنية تحتية: `Flow` أو `Metric` أو `Diagnostic` أو `Perf` أو `Heartbeat` -> **ثانوي**
- توجد قواعد تحليل نشطة تشير إليه -> **أساسي**
- حجم كبير (أكثر من 10 جيجابايت/شهر) بدون أي اكتشاف عليه -> **ثانوي**
- لا شيء مما سبق -> **غير معروف**
### 3. تسجيل التكلفة والقيمة
يتم تسجيل كل جدول على عدة أبعاد:
- **مستوى التكلفة**: مجاني / منخفض (أقل من 1 جيجابايت) / متوسط (1-10 جيجابايت) / عالي (10-50 جيجابايت) / عالي جدًا (أكبر من 50 جيجابايت)
- **مستوى الكشف**: لا شيء / منخفض (1-2 قاعدة) / متوسط (3-9 قواعد) / عالي (10+ قواعد)
- **التقييم**: قيمة عالية / قيمة جيدة / تغطية مفقودة / مراجعة مطلوبة / مرشح لـ Data Lake / طبقة مجانية
- **نسبة التغطية %**: النسبة المئوية للجداول التي تحتوي على قاعدة تحليل واحدة على الأقل أو استعلام صيد يشير إليها، محسوبة كـ `tablesWithRules / totalTables * 100`. تغطية كل جدول تجمع قواعد التحليل + استعلامات الصيد الموجودة عن طريق تحليل KQL لأسماء الجداول.
ثم تقوم الوحدة بتوليد التوصيات:
| النوع | متى يتم تفعيله | ما يجب فعله |
|---|---|---|
| **Data Lake** | ثانوي + تكلفة عالية + عدد قليل من الاكتشافات | الانتقال إلى طبقة Auxiliary/Data Lake (توفير ~95%) |
| **قيمة منخفضة** | تكلفة عالية + لا توجد اكتشافات | إضافة قواعد أو تصفية أو الانتقال إلى data lake |
| **تحسين XDR** | مُبث عبر XDR + 0 قواعد Sentinel + وجود قواعد XDR | إيقاف البث، واستخدام بوابة XDR الموحدة بدلاً من ذلك |
| **تغطية مفقودة** | أساسي + لا توجد اكتشافات | كتابة قواعد تحليل للحصول على قيمة من البيانات |
| **تصفية وقت الاستيعاب** | أساسي + أكبر من 20 جيجابايت + أقل من أو يساوي 3 اكتشافات | تطبيق تحويل وقت الاستيعاب لتقليل الحجم |
| **مرشح للتقسيم** | أساسي + حجم كبير + اكتشافات + لا يوجد تحويل حالي | تقسيم الجدول — تبقى الصفوف عالية القيمة على Analytics، والباقي يذهب إلى Data Lake |
| **نقص في الاحتفاظ** | احتفاظ الجدول أقل من الحد الأدنى الموصى به | زيادة الاحتفاظ الكلي/الأرشيف لتلبية الإرشادات التنظيمية |
### 4. محلل الكشف (تسجيل الضوضاء)
عند تمرير `-IncludeDetectionAnalyzer`، تجلب الوحدة الحوادث الأخيرة وقواعد الأتمتة، ثم تسجل كل قاعدة كشف نشطة لاحتمال الضوضاء.
**مقاييس كل قاعدة** (محسوبة من بيانات الحوادث):
| المقياس | كيفية حسابه |
|---|---|
| إجمالي الحوادث | عدد الحوادث المرتبطة بالقاعدة |
| نسبة الإغلاق التلقائي | الحوادث المغلقة بواسطة قواعد الأتمتة ÷ إجمالي الحوادث. المصدر الأساسي: جدول SentinelHealth (تطابق قاطع عبر رقم الحادثة). البديل: مطابقة العنوان المراعية للمشغل مقابل شروط قاعدة الأتمتة. |
| نسبة الإيجابيات الكاذبة | الحوادث المصنفة كإيجابية كاذبة ÷ إجمالي الحوادث |
**معادلة درجة الضوضاء**:
يتم تحويل كل مقياس إلى مرتبة مئوية بين جميع القواعد التي تحتوي على حادثة واحدة على الأقل. الدرجة المركبة هي مزيج مرجح:```
Score = (Volume_percentile × 0.35) + (AutoClose_percentile × 0.40) + (FalsePositive_percentile × 0.25)
حدود الدرجات:
يتم عرض القواعد التي تحصل على درجة ≥ 70 ولديها 5 حوادث على الأقل تلقائيًا كـ توصيات عالية الأولوية في عرض التوصيات.
-IncludeDefenderXDR)-IncludeDetectionAnalyzer)موجودة في Data/log-classifications.json. 345 مدخلاً، 190 موصلاً، 21 فئة.
الأولية (211 مدخلاً): الجداول التي تبني عليها اكتشافاتك فعليًا. سجلات تسجيل الدخول، التنبيهات الأمنية، استخبارات التهديدات، مسارات التدقيق، نتائج الثغرات، ضربات جدار الحماية، قياس عن بعد EDR.
الثانوية (133 مدخلاً): مواد داعمة. مقاييس الأداء، تشخيصات البنية التحتية، أحجام تدفق الشبكة، لقطات المخزون، خطوط الأساس للتكوين، فحوصات الصحة.
يمكنك توفير ملف التصنيف الخاص بك لإضافة مدخلات للجداول غير الموجودة في قاعدة البيانات المضمنة، أو تجاوز المدخلات الموجودة عندما لا تتطابق الإعدادات الافتراضية مع بيئتك. تأخذ المدخلات المخصصة الأولوية على المدخلات المضمنة عندما يظهر نفس tableName في كليهما.```powershell
Invoke-LogHorizon -SubscriptionId '...' -ResourceGroup 'rg' -WorkspaceName 'ws' `
-CustomClassificationPath './my-classifications.json'
يستخدم الملف المخصص نفس المخطط مثل `Data/log-classifications.json` — مصفوفة من الكائنات:```json
[
{
"tableName": "MyCustomApp_CL",
"connector": "Custom Logs (DCR)",
"classification": "primary",
"category": "Application Logs",
"description": "Security-relevant audit events from an internal application",
"keywords": ["custom", "internal", "audit"],
"mitreSources": [],
"recommendedTier": "analytics",
"isFree": false
},
{
"tableName": "AzureMetrics",
"connector": "Azure Monitor",
"classification": "primary",
"category": "Infrastructure Diag",
"description": "Override: promoted to primary because we detect on Azure resource metrics in this environment",
"keywords": ["metrics", "azure", "infrastructure", "monitoring"],
"mitreSources": [],
"recommendedTier": "analytics",
"isFree": false
}
]
انظر Data/custom-classifications-example.json للحصول على قالب جاهز للاستخدام.
تم إجراء التصنيف الأولي/الثانوي جزئيًا بواسطة المؤلف ثم عن طريق تغذية موصل البيانات وتعريفات الجداول من Microsoft في الذكاء الاصطناعي مع خط أساس تصنيف بشري، باستخدام أفضل ممارسات Microsoft ومعايير الصناعة كمعايير التصنيف. إذا كان هناك شيء غير مناسب لبيئتك، فثق في سياقك الخاص على الأداة - يمكن للذكاء الاصطناعي أن يرتكب أخطاء، والسياق هو الملك.
تم استخلاص معايير التصنيف من المصادر التالية:
ACSC (المديرية الأسترالية للإشارات، مركز الأمن السيبراني الأسترالي)
CISA (وكالة الأمن السيبراني وأمن البنية التحتية)
Microsoft
MITRE
NIST (المعهد الوطني للمعايير والتكنولوجيا)
NSA (وكالة الأمن القومي)
NCSC-UK (المركز الوطني للأمن السيبراني - المملكة المتحدة)
Google Cloud
LogHorizon.psd1 Module manifest (v0.6.2) LogHorizon.psm1 Module loader Public/ Invoke-LogHorizon.ps1 Entry point, the main orchestrator Private/ Connect-Sentinel.ps1 Azure auth + workspace resolution Get-TableUsage.ps1 KQL query for ingestion volumes Get-AnalyticsRules.ps1 Analytics rules + table/field extraction + correlation tags Get-HuntingQueries.ps1 Hunting queries + table extraction Get-DataConnectors.ps1 Data connector inventory Get-DataTransforms.ps1 DCR transform discovery, split KQL generation Get-DefenderXDR.ps1 Defender XDR analysis (optional) Get-Incidents.ps1 Incident fetch + SentinelHealth auto-close attribution Get-AutomationRules.ps1 Automation rule inventory + close-logic attribution Get-SocOptimization.ps1 SOC improvement recommendations Get-TableRetention.ps1 Per-table retention, archive, and plan type Invoke-AzRestWithRetry.ps1 REST retry wrapper with exponential backoff for 429/5xx Invoke-Classification.ps1 Static DB + heuristic classification + _SPLT_CL detection Invoke-Analysis.ps1 Cost-value matrix + recommendations + split suggestions Write-Report.ps1 Spectre.Console TUI rendering Export-Report.ps1 JSON / Markdown / static HTML export with shared section renderer Data/ log-classifications.json 345-entry classification knowledge base high-value-fields.json 15-table split KQL knowledge base with curated fields and split hints field-frequency-stats.json Community field frequency stats (generated by Build-FieldKnowledgeBase.ps1) custom-classifications-example.json Example custom classification override file ReportTemplate.html Static HTML report template (pure-CSS tabs, zero JS) Tests/ LogHorizon.Tests.ps1 Pester v5 unit tests
### إنشاء قاعدة المعرفة
يتم إنشاء قاعدتي المعرفة المقسمة KQL -- `high-value-fields.json` و `field-frequency-stats.json` -- دون اتصال بواسطة `Build-FieldKnowledgeBase.ps1`. ويقوم البرنامج النصي بما يلي:
1. يقوم باستنساخ ضحل (shallow-clones) لمستودع GitHub [Azure/Azure-Sentinel](https://github.com/Azure/Azure-Sentinel) (سحب انتقائي (sparse checkout) لـ `Solutions/` و `Detections/` و `Hunting Queries/`)
2. يقوم بتحليل حوالي 3,800 ملف قاعدة بصيغة YAML ويستخرج استعلامات KQL عبر التعبيرات النمطية (regex)
3. يقوم بتشغيل `Get-TablesFromKql` و `Get-FieldsFromKql` على كل استعلام لبناء إحصائيات تردد الحقول لكل جدول
4. يقوم بحساب ثلاث مستويات من الحقول الاحتياطية:
- **الحقول العامة** -- الحقول التي تظهر في أكثر من 50% من جميع الجداول (مثل `TimeGenerated`)
- **القيم الافتراضية حسب الفئة** -- الحقول التي تظهر في أكثر من 40% من الجداول ضمن فئة تصنيف معينة
- **الإحصائيات لكل جدول** -- إحصائيات تردد الحقول الخام للجداول التي تحتوي على >= 3 قواعد مرجعية
5. يقوم بدمج الحقول المستخرجة في الملف المنسق الموجود `high-value-fields.json` (يحتفظ بالإدخالات المنسقة، ويضيف الجداول المكتشفة حديثًا التي تحتوي على >= 3 قواعد و >= 3 حقول ذات معنى)
6. يقوم بإخراج كلا الملفين إلى `Data/`
في وقت التشغيل، يستخدم `Get-SplitKql` تسلسلًا هرميًا احتياطيًا: الإدخال المنسق لقاعدة المعرفة -> تحليل الحقول من القواعد الفعلية/الاستقصاء -> الإحصائيات المجتمعية لكل جدول -> القيم الافتراضية حسب الفئة -> الحقول العامة. تردد الحقول ليس طريقة مثالية، لكن من المفيد معرفتها.
## الاختبارات```powershell
Invoke-Pester ./Tests/LogHorizon.Tests.ps1 -Output Detailed
MIT
لتمكين إخراج UTF-8 في الطرفية الخاصة بك، أضف السطر التالي في أعلى ملف $PROFILE الخاص بـ PowerShell وأعد تشغيل الطرفية:```powershell
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
الوحدة النمطية تقوم بتعيين هذا تلقائيًا عند الاستيراد، ولكن حسب جلستك قد يظل التحذير يظهر. إنه تجميلي ولا يؤثر على الوظيفة.
## المساهمة
إذا كانت لديك مشكلات أو ترغب في المساهمة، قم بإنشاء طلب سحب (PR).
## هل أعجبتك الأداة؟
</br>
<a href='https://ko-fi.com/B0B61XGLO7' target='_blank'><img height='36' style='border:0px;height:36px;' src="https://assets.kitploit.com/production/public/readmes/13110/85ecfd7542830b8c7e246d37aec7c2b7397da003291ec4c56074631499f4829a.webp" border='0' alt='اشترِ لي قهوة على ko-fi.com' /></a>
</br>
| الميزة | الوصف |
|---|
| محرك التصنيف | قاعدة معرفة مكونة من 345 مدخلاً تغطي أكثر من 190 موصلاً، و21 فئة، مع إرجاع إرشادي تلقائي للجداول غير المعروفة |
| تقييم التكلفة مقابل القيمة | مصفوفة مستوى التكلفة لكل جدول مقابل مستوى الكشف مع تقييم مشترك (قيمة عالية ← قيمة منخفضة) |
| التوصيات | إجراءات ذات أولوية: مرشحون لـ Data Lake، جداول بدون كشف، هدر بث XDR، تصفية وقت الإدخال، نقص في الاحتفاظ |
| رسم خرائط الكشف | يربط قواعد التحليل، استعلامات الصيد، وكشف XDR بكل جدول لاكتشاف فجوات التغطية |
| وسوم الارتباط | يكتشف وسوم #DONT_CORR# / #INC_CORR# في أوصاف القواعد ويميز القواعد المستبعدة من ارتباط Defender |
| الامتثال للاحتفاظ | يقارن الاحتفاظ الفعلي بالحدود الدنيا الموصى بها بناءً على معايير الصناعة وأفضل الممارسات الأمنية |
| تحسين SOC | يسحب توصيات تحسين SOC من Microsoft نفسها عبر واجهة Security Insights API |
| تحليل فجوات الكلمات المفتاحية | يميز الجداول التي يجب أن تكون قيد الإدخال ولكنها ليست كذلك بناءً على كلمات مفتاحية للبائع/المنتج |
| اكتشاف التحويلات | يكتشف قواعد جمع البيانات (DCRs) ويصنف تحويلات وقت الإدخال (تصفية، إسقاط، إثراء، تجميع) |
| كشف الجداول المقسمة | يحدد جداول التقسيم _SPLT_CL ويربطها بالجداول الأم في محرك التصنيف |
| مولد KQL للتقسيم | يولد KQL جاهزًا للبوابة من قاعدة معرفة منسقة، تحليل القواعد الحية، وإحصائيات تردد الحقول المجتمعية – بتنسيق شرط فقط يُلصق مباشرة في محرر قاعدة التقسيم في Sentinel |
| محلل الكشف | يقيم القواعد التحليلية لاحتمال الضوضاء باستخدام نتائج الحوادث (نسبة الإغلاق التلقائي، نسبة الإيجابيات الكاذبة، ونسب حجم الحوادث المئوية) |
| مدقق XDR | يضيف طبقة استشارية تركز على XDR: فحوصات تغطية البث وإرشادات الاحتفاظ بـ Data Lake لمدة عام للتليمترية المتعلقة بـ XDR |
| التصنيفات المخصصة | وفر JSON الخاص بك لإضافة أو تجاوز قاعدة بيانات التصنيف المدمجة |
| واجهة TUI تفاعلية | لوحة تحكم Spectre.Console مع قوائم، جداول ملونة، تنقلات تفصيلية، وفن ASCII |
| التصدير | تقرير بتنسيق JSON أو Markdown أو HTML ثابت للمشاركة مع الفريق |
| الدرجة | الوسم | المعنى |
|---|
| ≥ 70 | مزعج | القاعدة قد تحتاج إلى ضبط أو تعطيل |
| ≥ 50 | مراقبة | تُظهر القاعدة علامات مبكرة على الإزعاج |
| < 50 | سليم | القاعدة ضمن النطاق الطبيعي |
| N/A | — | لا توجد حوادث مرتبطة بالقاعدة (لا يمكن حساب درجة) |
| الحقل | ما يحمله |
|---|
tableName | اسم جدول Log Analytics (SecurityEvent, SigninLogs, إلخ.) |
connector | أي موصل بيانات ينتج هذا الجدول |
classification | primary (قيمة أمنية) أو secondary (قياس عن بعد داعم) |
category | الفئة الأمنية: الهوية والوصول، أمن الشبكات، إلخ. |
description | ملخص باللغة الإنجليزية المبسطة لما في الجدول |
keywords | مصطلحات لمطابقة تحليل الفجوة بالكلمات المفتاحية |
mitreSources | تعيينات مصادر بيانات MITRE ATT&CK |
recommendedTier | analytics (الطبقة الساخنة) أو datalake (مرشح مساعد) |
recommendedRetentionDays | الحد الأدنى الموصى به للاحتفاظ الكلي بالأيام (إرشادات تنظيمية) |
isFree | هل تقوم Microsoft بابتلاع هذا مجانًا |
| الفئة | العدد | أمثلة |
|---|
| الهوية والوصول | 33 | SigninLogs, OktaSSO, CyberArk_AuditEvents_CL |
| أمن الشبكات | 29 | AZFWNetworkRule, Cloudflare_CL, darktrace_model_alerts_CL |
| التنبيهات الأمنية | 26 | SecurityAlert, SecurityIncident, SentinelOneAlerts_CL |
| كشف نقطة النهاية | 22 | DeviceProcessEvents, DeviceFileEvents, SentinelOne_CL |
| مستوى التحكم السحابي | 22 | AzureActivity, OfficeActivity, GoogleWorkspaceReports |
| تدفق الشبكة | 23 | AzureNetworkAnalytics_CL, CommonSecurityLog, AZFWFatFlow |
| الأمن السحابي | 13 | McasShadowItReporting, PaloAltoPrismaCloudAlertV2_CL |
| أمن البريد الإلكتروني | 20 | EmailEvents, ProofPointTAPMessagesBlockedV2_CL, MimecastSIEM_CL |
| قياس عن بعد لنقطة النهاية | 14 | DeviceInfo, SentinelOneAgents_CL, jamfprotecttelemetryv2_CL |
| إدارة الثغرات | 11 | DeviceTvmSoftwareVulnerabilities, QualysHostDetectionV3_CL |
| أمن البيانات | 12 | PurviewDataSensitivityLogs, VaronisAlerts_CL, MimecastDLP_CL |
| سجلات التطبيقات | 22 | AppServiceHTTPLogs, FunctionAppLogs, DynatraceAttacks_CL |
| استخبارات التهديدات | 8 | ThreatIntelligenceIndicator, CybleVisionAlerts_CL |
| أمن SAP | 7 | ABAPAuditLog, SAPBTPAuditLog_CL, Onapsis_Defend_CL |
| أمن إنترنت الأشياء/التقنية التشغيلية | 4 | RadiflowEvent, DragosAlerts_CL, Phosphorus_CL |
| منصة البيانات | 13 | AzureDiagnostics, SnowflakeLogin_CL, MongoDBAudit_CL |
| الحاويات وK8s | 7 | ContainerLog, KubeEvents, GKEAudit, AWSEKSLogs_CL |
| صحة المنصة | 6 | SentinelHealth, Watchlist, SOCPrimeAuditLogs_CL |
| تشخيص البنية التحتية | 7 | AzureMetrics, GCPComputeEngine, GCPMonitoring |
| إدارة الوضع | 7 | DeviceTvmSecureConfigurationAssessment, CortexXpanseAlerts_CL |
| إدارة التكوين | 6 | ConfigurationData, ESIExchangeOnlineConfig_CL |
| الوصول إلى التخزين | 5 | StorageBlobLogs, StorageFileLogs, AWSS3ServerAccess |
| الإصدار | التاريخ | التغييرات |
|---|
| 0.8.0 | 2026-05-26 | تمت إضافة إدارة تفاعلية للاحتفاظ بالجداول مع سير عمل TUI شامل ونقطة دخول تحديث جدول واحد، بالإضافة إلى الأمر العام Set-LogHorizonTableRetention. تمت إضافة محرك تطبيق PATCH لواجهة برمجة تطبيقات الجداول مع التحقق من الصحة، واستقصاء عمليات Azure غير المتزامنة، وآلية احتياطية من خطوتين (PATCH مدمج، ثم خطط فقط واحتفاظ فقط) لتحديثات احتفاظ مرنة. تمت إضافة تغطية Pester مركزة للتحقق من الصحة، وشكل الحمولة، وآلية الاحتياطية، ورسم خرائط الأوامر العامة. كما تم إصلاح حالة حافة/خلل حيث كان المستخدمون يتلقون توصيات بتغيير جداول بحيرة البيانات إلى طبقة بحيرة البيانات إذا كانت لديهم بيانات تحليلات لا تزال في Sentinel |
| 0.7.1 | 2026-05-15 | تمت إضافة الوعي بالخطة من Usage.Plan دون استبدال خطة الجدول المكونة: يتتبع التحليل الآن تاريخ الخطة المرصودة، ويُعلم عن الاستخدام متعدد الخطط والتباينات بين المكونة والمرصودة، ويُظهر بيانات الخطة في لوحة المعلومات، وتفاصيل الجدول، وعرض جميع الجداول، وتقييم الاحتفاظ، والتصديرات. تم إصلاح إسناد الإغلاق التلقائي في Detection Analyzer بحيث تنطبق قاعدة التوقيت فقط عندما لا توجد قواعد أتمتة ممكنة. 203 اختبارات ناجحة |
| 0.7.0 | 2026-04-16 | تم تحديث تقييم الكشف بجدول ملخص مصفوفة القيمة-التكلفة (أساسي/ثانوي × 7 فئات تقييم مع ترميز بالألوان)، وقائمة فرعية للتنقل للجداول الأساسية/الثانوية مع أعمدة التكلفة/طبقة الكشف. تم تحديث Detection Analyzer بأشرطة تغطية الحجم المرجحة بـ غيغابايت (غيغابايت الكشف/الصيد/المشترك كنسبة مئوية من الإجمالي بالإضافة إلى أشرطة عدد الجداول الحالية). تحسينات العرض التكيفي لـ Detection Analyzer (عرض شريط ديناميكي، اقتطاع اسم القاعدة، إخفاء عمود شرطي بناءً على عرض وحدة التحكم). 193 اختبارًا ناجحًا |
| 0.6.3 | 2026-04-11 | تحديث بسيط لـ PSGallery |
| 0.6.2 | 2026-04-11 | قائمة ضبط السجلات / التحويلات: تحليل ضبط البيانات الحية (استخدام حقول كل جدول من القواعد المنشورة / استعلامات الصيد، توليد KQL مرشح/مشروع/مدمج، تقديرات التوفير)، استخراج أعمدة المخطط من واجهة برمجة تطبيقات الجداول، التسلسل الهرمي الاحتياطي لـ Get-SplitKql (إحصائيات المجتمع ← الإعدادات الافتراضية للفئة ← الحقول العالمية)، مقيم جدول شامل مع مصفوفة استخدام الحقول، أقسام تصدير موحدة للمعرفة + الضبط المباشر، نص استخراج Build-FieldKnowledgeBase.ps1 لمجموعة قواعد Azure-Sentinel GitHub. Detection Analyzer: إسناد الإغلاق التلقائي المستند إلى SentinelHealth (أساسي) مع آلية احتياطية لمطابقة القواعد المدركة للمشغل، تحليل غلاف الشرط البولياني، اكتشاف حالة Resolved، مطابقة ذيل GUID لمعرفات موارد ARM. التغطية الآن مبنية على عدد الجداول عبر جميع الجداول (بما في ذلك الطبقة المجانية). تمت إضافة إخلاء مسؤولية التقييم إلى TUI والتصديرات. 174 اختبارًا |
| 0.6.1 | 2026-04-10 | إصلاح الأخطاء: ترشيح $kqlKeywords أصبح الآن مشتركًا على مستوى الملف (كان غير معرّف في Get-TablesFromKql)، تمت إضافة [CmdletBinding()] إلى جميع الدوال المساعدة، تم تبسيط التحقق الموحد لـ Defender، تمت إزالة معلمة الاختبار الوهمية -RuleCount. المتانة: ترقيم صفحات Get-HuntingQueries، غلاف إعادة المحاولة Invoke-AzRestWithRetry مع تراجع أسي لـ 429/5xx، التحقق من صحة PricePerGB، إضافة Write-Verbose في الدوال الرئيسية. التوثيق: شارة الإصدار، عدد قواعد البيانات، المتطلبات الأساسية متوافقة مع البيان |
| 0.6.0 | 2026-04-10 | كشف ديناميكي لتدفق XDR مع 21 جدولاً معروفًا لـ XDR (كان مُقسى 18)، حالة XDR لكل جدول (NotStreaming/Analytics/Basic/Auxiliary)، التعرف على Auxiliary كطبقة بحيرة بيانات، جداول XDR غير المُدفقة تظهر كتوصيات معلوماتية/منخفضة مع NotStreamedCount، يعرض محلل الاحتفاظ جداول XDR غير المُدفقة كـ "XDR فقط (30 يومًا)"، توزيع الطبقة العامة (تحليلات/أساسية/بحيرة بيانات + غير مُدفقة)، تسميات Auxiliary → "بحيرة بيانات" في Export-Report، قاعدة بيانات التصنيف محدثة إلى 345 إدخالاً (+DeviceNetworkInfo, DeviceInfo→ثانوي/بحيرة بيانات، DeviceImageLoadEvents و IdentityQueryEvents←طبقة بحيرة بيانات)، 15 اختبارًا جديدًا لـ Pester (121 إجماليًا) |
| 0.5.0 | 2026-04-03 | تصدير HTML ثابت مع علامات تبويب CSS خالصة (بدون JavaScript، بدون CDN، مكتفٍ ذاتيًا بالكامل)، مُقدّم أقسام MD/HTML موحد، التقاط بيانات JSON كاملة (dataTransforms، correlationExcluded/Included، streamingTables)، مفتاح -NonInteractive لاستخدام CI/خط الأنابيب، اسم مستعار للتنسيق md، أسماء ملفات تلقائية بطابع زمني، عرض KQL كامل في تحويلات DCR (بدون اقتطاع)، معالجة KQL متعددة الأسطر في جداول markdown، إصلاح تلف المرجع الخلفي $-regex في استبدال رمز HTML، إعادة تسمية المساعدات الداخلية لتجنب تعارضات الأسماء المستعارة في PowerShell (h→hEnc, md→mdEsc)، 33 اختبارًا جديدًا لـ Pester (106 إجماليًا) |
| 0.4.1 | 2026-04-03 | إصلاحات الأمان والاستقرار - تمت إضافة تنظيف ذاكرة الرمز المميز، التحقق من صحة مسار الإخراج وحماية XSS، حدود ترقيم صفحات REST API، إصلاح إخفاء خطأ محمل الوحدة، وحل تحذيرات PSScriptAnalyzer |
| 0.4.0 | 2026-04-02 | اكتشاف التحويلات (قائمة DCR + تصنيف نوع التحويل)، كشف الجداول المنقسمة (_SPLT_CL)، مساعد KQL المقسم مع قاعدة معرفة مكونة من 15 جدولاً (high-value-fields.json) + آلية احتياطية لتحليل القواعد، إخراج KQL شرطي فقط جاهز للبوابة، قائمة توصيات قابلة للتوسيع، قائمة TUI لاقتراحات KQL المقسمة |
| 0.3.0 | 2026-04-02 | تحليل الامتثال للاحتفاظ بالسجلات (CISA M-21-31، NIST SP 800-92، NCSC-UK، ASD ACSC، NSA)، كشف علامات الارتباط (#DONT_CORR#/#INC_CORR#)، عرض تقييم الاحتفاظ في القائمة، عمود الاحتفاظ في جميع الجداول، recommendedRetentionDays في مخطط التصنيف |
| 0.2.2 | 2026-04-02 | جدول تحسين SOC يخفي عمود التفاصيل على وحدات التحكم الضيقة |
| 0.2.1 | 2026-04-02 | دعم التصنيف المخصص (-CustomClassificationPath)، توصيات تحسين SOC مُثراة مع اقتراحات API / تنقل تفصيلي، عرض افتراضي للنشطة فقط، قمع تحذير ترميز UTF-8 |
| 0.2.0 | - | الإصدار العام الأولي مع محرك تصنيف، تسجيل قيمة-تكلفة، TUI Spectre.Console، تصدير إلى JSON/Markdown |
| 0.1.0 | - | الإصدار الداخلي للتطوير |