الكشف عن الثغرات العمياء في الامتثال لـ M365 باستخدام Microsoft Graph
By Mirko Peters ·
مرحبًا بعودتكم إلى البودكاست والمدونة التقنية المرافقة له! إذا كنت قد وثقت يومًا بلوحة معلومات الامتثال الجاهزة في Microsoft 365 وافترضت أن كل شيء مشمول بها، فقد تكون واقعًا في وهم من الأمان…
Automatically translated with AI from the original post. Read the English original
مرحبًا بعودتكم إلى البودكاست والمدونة التقنية المرافقة له! إذا كنت قد وثقت يومًا بلوحة معلومات الامتثال الجاهزة في Microsoft 365 وافترضت أن كل شيء مشمول بها، فقد تكون واقعًا في وهم من الأمان. فلوحات معلومات الامتثال الافتراضية مصممة لتكون ملخصات، لا الحقيقة المطلقة. وغالبًا ما تقع الإشارات الحرجة، مثل حالات منع فقدان البيانات (Data Loss Prevention (DLP))، وإجراءات eDiscovery، والتنبيهات الأمنية الكامنة، خلف نقاط نهاية Microsoft Graph التي تتطلب أذونات منفصلة، ومعاملات استعلام متقدمة، وربطًا صحيحًا للبيانات. في هذا التعمق، سنستكشف سبب نقص المعلومات الحرجة في تقاريرك الأصلية، ونرسم خريطة نقاط نهاية Graph الدقيقة التي تحتاج إلى الاستعلام عنها، ونوضح كيفية توجيه هذه الأدلة الخام مباشرةً إلى Microsoft Purview للحصول على تقارير واضحة وقابلة للدفاع عنها. للاستماع إلى نقاشنا الكامل حول هذا الموضوع، لا تفوّت حلقة البودكاست ذات الصلة: Find Missing Microsoft 365 Compliance Data with Graph.
نظرة عامة
لوحات الامتثال الافتراضية ملخصات، لا حقيقة مطلقة. الإشارات الحرجة (حالات DLP، وإجراءات eDiscovery، وتنبيهات الأمان) غالبًا ما تقع خلف نقاط نهاية Graph ولها أذونات منفصلة. نحدد واجهات برمجة التطبيقات الدقيقة، والنطاقات، وأنماط البرمجة النصية لاستخراج أدلة كاملة الدقة ومركزتها في Purview لإعداد تقارير واضحة وقابلة للدفاع عنها.
لمن تفيد هذه المقالة
مالكو الامتثال والشؤون القانونية والمخاطر الذين يحتاجون إلى أدلة جاهزة للتدقيق
مسؤولو M365 وEntra الذين يبنون التقارير والأتمتة
فرق الأمان التي تربط بيانات DLP وeDiscovery والتنبيهات
الثغرات العمياء (لماذا تفوتها اللوحات الجاهزة)
التجميع والتأخر: الملخصات في الواجهة تحذف تفاصيل الحوادث المتداخلة والنشاط الأخير
فجوات النطاق: قد تقع تطابقات eDiscovery وDLP خارج عمليات التصدير القياسية
تقسيم الأذونات: نقاط النهاية /security و/compliance تتطلب نطاقات مختلفة
غياب الربط: نادرًا ما تربط اللوحات الحوادث بالمستخدمين أو أصحاب الحجز أو خطوات القضايا
نقاط نهاية Graph عالية القيمة (قائمة جاهزة للنسخ)
تنبيهات الأمان (الشمول)
نقطة النهاية:
/security/alertsأو/security/alerts_v2أذونات التطبيق (أمثلة):
SecurityEvents.Read.All(أو Alerts.Read.All في النماذج الأحدث)الاستخدام: الجداول الزمنية للتنبيهات، والشدة، والحالة، والتعيينات
سياسات DLP ونشاطها (فقدان البيانات)
نقاط النهاية (تختلف حسب توفرها في المستأجر):
/security/dataLossPreventionPolicies(جرد السياسات)/security/dlpIncidentsأو نقاط نهاية حوادث DLP المتقدمة في مساحة الاسم security (تعتمد على المستأجر)
أذونات التطبيق:
SecurityEvents.Read.All(و/أو نطاقات قراءة DLP المحددة حسب توفرها)الاستخدام: التطابقات، والمواقع (Exchange وSharePoint وTeams)، والتصرف فيها
eDiscovery (القضايا والإجراءات)
/compliance/ediscovery/casesالمسارات الفرعية:
/custodiansو/searchesو/reviewSetsو/noncustodialDataSourcesو/operationsأذونات التطبيق:
eDiscovery.Read.All(والكتابة إذا كنت تدير القضايا)الاستخدام: حالة القضية، والحجوزات، وأصحاب الحجز، والتصديرات، وإجراءات المراجعين
سجلات التدقيق وسياق تسجيل الدخول (أدلة داعمة)
/auditLogs/directoryAuditsو/auditLogs/signInsأذونات التطبيق:
AuditLog.Read.AllوDirectory.Read.Allالاستخدام: من غيّر ماذا ومتى، وسياق الجلسة
نصيحة: كثير من حمولات الامتثال متداخلة بعمق، لذا خطط لاستخدام
$expand، والتنقل بين الصفحات عبر@odata.nextLink، والربط مع/users/{id}للحصول على أسماء العرض والأقسام.
المصادقة والأذونات (المسار الخالي من المتاعب)
استخدم أذونات التطبيق (مبدأ الخدمة) للمهام غير المراقبة
سجّل تطبيقات منفصلة للأمان مقابل Graph الأساسي إذا كانت مؤسستك تتطلب فصل الامتيازات
امنح الموافقة على أقل النطاقات امتيازًا فقط، واحفظ الأسرار والشهادات في Key Vault
طبّق التراجع الأسي (exponential backoff) عند الاستجابة 429/503، وسجّل
x-ms-request-idفي السجلات
أنماط البرمجة النصية (PowerShell أو Python)
الانتقاء والتوسيع: اطلب الحقول المطلوبة فقط، باستخدام
$select=…، و$expand=…للكيانات المتداخلةالتصفية وتحديد الإطار الزمني:
$filter=createdDateTime ge {ISO8601}للتغييرات التدريجية (delta)الترقيم بالصفحات: كرّر الاستدعاء عبر
@odata.nextLink، ولا تفترض أبدًا أن النتائج موجودة في صفحة واحدةالتوحيد: حوّل معرّفات المستخدمين والكائنات إلى أسماء وأقسام منذ البداية لتكون المخرجات سهلة القراءة
الربط لإضافة السياق: أثرِ الحوادث ببيانات وصفية عن المستخدم أو الموقع أو الفريق أو القضية قبل التصدير
ربط البيانات بـ Purview (تحويل البيانات إلى قرارات)
توحيد المخرجات: ملفات CSV/JSON بأسماء حقول متسقة (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)
الاستيعاب: احفظ الملفات في موقع تخزين آمن يستطيع Purview قراءته (مثل ADLS Gen2)
الوسم والتصنيف: طبّق تسميات الحساسية أو وسومًا مخصصة (مثل “DLP-PII-High”) لتوجيه البيانات
لوحات المعلومات: Purview (أو Power BI فوق بيانات Purview) لمتابعة الاتجاهات والمالكين وتقادم اتفاقيات مستوى الخدمة (SLA)
الأتمتة: قواعد لإشعار مالكي القضايا عند تكرار الحوادث أو تصعيدها، وملخصات PDF أسبوعية
جلسة تجريبية مدتها 30 دقيقة (خطوة بخطوة)
0–10 دقائق: تسجيل التطبيق مع
SecurityEvents.Read.All/eDiscovery.Read.All، وإنشاء سر أو شهادة10–20 دقيقة: كتابة سكربت لنقطة نهاية واحدة (التنبيهات أو القضايا) مع الترقيم بالصفحات و
$filterلآخر 7 أيام20–30 دقيقة: إثراء البيانات بـ
/users، وتصديرها إلى CSV، ونقلها إلى مسار ADLS، وإنشاء مخطط بياني أساسي
مؤشرات الأداء التي تثبت القيمة
نسبة الحوادث التي يكون فيها المالك والتصرف النهائي مُعبّأين
متوسط الوقت من الحادثة إلى القضية (أو المراجع)
عدد الحسابات والمواقع المتكررة للمخالفات خلال 30 يومًا
الفرق مقارنةً بأعداد لوحة المعلومات الافتراضية (OOTB) (إغلاق الفجوات)
زمن دورة التدقيق (ساعات إعداد الأدلة الموفَّرة)
الأخطاء الشائعة (وطرق معالجتها)
نتائج فارغة ← نطاقات خاطئة، أو استخدام الأذونات المفوّضة (Delegated) في حين أن Application هو المطلوب
تفاصيل ناقصة ← نسيان
$expand، أو عدم تحليل المجموعات المتداخلةبيانات جزئية ← عدم الترقيم بالصفحات، والاكتفاء بالصفحة الأولى
عدم تطابق الأسماء ← عدم إثراء البيانات بربط مع
/usersأو ببيانات الموارد البشريةلوحات معلومات قديمة ← عدم جدولة عمليات التشغيل؛ أضف مهمة وتنبيهًا عند الفشل
مكاسب سريعة هذا الأسبوع
اسحب بيانات آخر 7 أيام من
/security/alertsوقارن الأعداد بما يظهر في البوابةصدّر قضايا eDiscovery المفتوحة مع القائمين على الحفظ (Custodians)، وشاركها مع الفريق القانوني للتحقق
نفّذ مسحًا لحوادث DLP، وضع وسمًا على الحوادث المتكررة، وافتح متابعات في Purview
جدوِل حزمة أدلة أسبوعية (CSV وPDF) ترسلها إلى صندوق بريد الامتثال
الأسئلة المتداولة
هل أحتاج إلى أن أكون مطورًا؟ لا، يكفي PowerShell أو سكربتات Python قصيرة.
لماذا أذونات التطبيقات؟ معظم نقاط نهاية /security و/compliance تتطلب وصولًا بلا واجهة مستخدم وبمستوى ثقة عالٍ.
هل يمكنني البقاء في PowerShell؟ نعم، استخدم Microsoft Graph PowerShell SDK وتعامل مع
$topو$filterو$expandوالترقيم بالصفحات.هل Purview مطلوب؟ ليس بالضرورة، لكنه يحوّل بيانات JSON الخام إلى سير عمل قابل للتدقيق ولوحات معلومات.
الخاتمة
لوحات المعلومات تلخّص، أما Graph فيروي القصة كاملة. اختر نقاط النهاية الصحيحة، وأصلح المصادقة، وتعامل مع الترقيم بالصفحات والتوسيع، ثم اجمع البيانات في Purview. ستنتقل من الامتثال القائم على إكمال المربعات إلى رؤية مثبتة وفورية، دون الغرق في عمليات التصدير اليدوية. للحوار المعمّق ونصائح الخبراء حول معالجة هذه النقاط العمياء، استمع إلى حلقتنا البودكاست المخصصة Find Missing Microsoft 365 Compliance Data with Graph. واصل تحسين سكربتاتك، وأمّن أذونات تطبيقاتك، وابدأ في إظهار البيانات التي كانت لوحاتك تخفيها!