إدارة البيانات الشخصية في سجلات Azure Monitor وApplication Insights

تحليلات السجل هي مخزن بيانات؛ حيث من المحتمل العثور على البيانات الشخصية. يخزن تطبيق Insights بياناته في قسم Log Analytics. تبين هذه المقالة مكان تخزين Log Analytics وApplication Insights للبيانات الشخصية وكيفية إدارة هذه البيانات.

في هذه المقالة، تشير بيانات السجل إلى البيانات المرسلة إلى مساحة عمل Log Analytics، بينما تشير بيانات التطبيق إلى البيانات التي تم جمعها بواسطة Application Insights. إذا كنت تستخدم مورد Application Insights المستند إلى مساحة العمل، فسيتم تطبيق المعلومات الموجودة في بيانات السجل. إذا كنت تستخدم مورداً كلاسيكيّاً لـ Application Insights، فسيتم تطبيق بيانات التطبيق.

إشعار

للحصول على معلومات حول عرض البيانات الشخصية أو حذفها، راجع طلبات موضوع بيانات Azure للقانون العام لحماية البيانات (GDPR). لمزيد من المعلومات حول القانون العام لحماية البيانات (GDPR)، راجع قسم القانون العام لحماية البيانات (GDPR) في مركز توثيق Microsoft وقسم القانون العام لحماية البيانات (GDPR) لمدخل Service Trust.

إستراتيجية لمعالجة البيانات الشخصية

في حين أن الأمر متروك لك ولشركتك لتحديد إستراتيجية للتعامل مع البيانات الشخصية، فإليك بعض الأساليب المدرجة من الأكثر إلى الأقل تفضيلاً من وجهة نظر فنية:

  • توقف عن جمع البيانات الشخصية أو تعتيم البيانات المجمعة أو تحجبها أو تضبطها لاستبعادها من اعتبارها "شخصية". هذا هو الأسلوب المفضل إلى حد بعيد، والذي يوفر عليك الحاجة إلى إنشاء إستراتيجية مكلفة ومؤثرة لمعالجة البيانات.
  • تطبيع البيانات لتقليل التأثيرات السلبية على النظام الأساسي للبيانات والأداء. على سبيل المثال، بدلاً من تسجيل معرف مستخدم صريح، أنشئ بحثاً لربط اسم المستخدم وتفاصيله بمعرف داخلي يمكن تسجيله بعد ذلك في مكان آخر. بهذه الطريقة، إذا طلب منك أحد المستخدمين حذف معلوماته الشخصية، يمكنك فقط حذف الصف الموجود في جدول البحث الذي يتوافق مع المستخدم.
  • إذا كنت بحاجة إلى جمع بيانات شخصية، فقم بإنشاء عملية باستخدام مسار واجهة برمجة تطبيقات التطهير وواجهة برمجة تطبيقات الاستعلام الحالية للوفاء بأي التزامات بتصدير وحذف أي بيانات شخصية مرتبطة بمستخدم.

أين تبحث عن البيانات الشخصية في Log Analytics

يصف Log Analytics مخططاً لبياناتك، ولكنه يسمح لك بتجاوز كل حقل بقيم مخصصة. كما يمكنك استيعاب المخططات المخصصة. على هذا النحو، من المستحيل تحديد مكان العثور على البيانات الشخصية بالضبط في مساحة العمل الخاصة بك. ومع ذلك، تعد المواقع التالية نقاط انطلاق جيدة في مخزونك.

إشعار

تستخدم بعض الاستعلامات أدناه search * للاستعلام عن جميع الجداول في مساحة العمل. نوصي بشدة بتجنب استخدام search *، حيث يؤدي ذلك إلى إنشاء استعلام غير فعال للغاية، كلما أمكن ذلك. بدلاً من ذلك، قم بالاستعلام عن جدول معين.

بيانات السجل

  • عناوين IP: يقوم بجمع Log Analytics معلومات IP مختلفة في جداول متعددة. على سبيل المثال، يُظهر الاستعلام التالي جميع الجداول التي جمعت عناوين IPv4 في آخر 24 ساعة:

    search * 
    | where * matches regex @'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' //RegEx originally provided on https://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp
    | summarize count() by $table
    
  • معرفات المستخدم: ستجد أسماء المستخدمين ومعرفات المستخدمين في العديد من الحلول والجداول. يمكنك البحث عن اسم مستخدم أو معرف مستخدم معين عبر مجموعة البيانات بأكملها باستخدام أمر البحث:

    search "<username or user ID>"
    

    تذكر أن تبحث ليس فقط عن أسماء مستخدمين يمكن قراءتها من قبل الإنسان ولكن أيضاً عن GUIDs التي يمكن تتبعها إلى مستخدم معين.

  • معرفات الأجهزة: مثل معرفات المستخدم، تعتبر معرفات الأجهزة أحياناً بيانات شخصية. استخدم الطريقة المذكورة أعلاه لمعرفات المستخدم لتحديد الجداول التي تحتوي على بيانات شخصية.

  • البيانات المخصصة: تتيح لك Log Analytics جمع البيانات المخصصة من خلال السجلات والحقول المخصصة وواجهة برمجة تطبيقات جامع بيانات HTTP وكجزء من سجلات أحداث النظام. تحقق من جميع البيانات المخصصة للبيانات الشخصية.

  • البيانات الملتقطة بالحل: نظراً لأن آلية الحل مفتوحة، نوصي بمراجعة جميع الجداول التي تم إنشاؤها بواسطة الحلول لضمان الامتثال.

بيانات التطبيق

  • عناوين IP: بينما تخفي Application Insights جميع حقول عناوين IP إلى 0.0.0.0 افتراضياً، فمن الشائع إلى حد ما تجاوز هذه القيمة باستخدام عنوان IP الفعلي للمستخدم للحفاظ على معلومات الجلسة. استخدم الاستعلام أدناه للعثور على أي جدول يحتوي على قيم في العمود عنوان IP بخلاف 0.0.0.0 في آخر 24 ساعة:

    search client_IP != "0.0.0.0"
    | where timestamp > ago(1d)
    | summarize numNonObfuscatedIPs_24h = count() by $table
    
  • معرفات المستخدم: بشكل افتراضي، يستخدم Application Insights معرفات تم إنشاؤها عشوائياً لتعقب المستخدم وجلسة العمل في حقول مثل session_Id، وuser_Id، وuser_AuthenticatedId، وuser_AccountId، وcustomDimensions. ومع ذلك، من الشائع تجاوز هذه الحقول بمعرف أكثر صلة بالتطبيق، مثل أسماء المستخدمين أو Microsoft Entra GUIDs. غالباً ما يتم اعتبار هذه المعرفات بيانات شخصية. نوصي بتشويش أو إخفاء هوية هذه المعرفات.

  • البيانات المخصصة: يسمح لك Application Insights بإلحاق مجموعة من الأبعاد المخصصة بأي نوع بيانات. استخدم الاستعلام التالي لتحديد الأبعاد المخصصة التي تم جمعها في آخر 24 ساعة:

    search * 
    | where isnotempty(customDimensions)
    | where timestamp > ago(1d)
    | project $table, timestamp, name, customDimensions 
    
  • البيانات الموجودة في الذاكرة وخلال النقل: ستتتبع Application Insights الاستثناءات والطلبات واستدعاءات التبعية والتتبعات. غالباً ما تجد البيانات الشخصية على مستوى التعليمات البرمجية ومستوى اتصال HTTP. راجع الاستثناءات والطلبات والتبعيات، وجداول التتبع؛ لتحديد أي من هذه البيانات. استخدم مهيئات بيانات تتبع الاستخدام حيثما أمكن ذلك لتعتيم هذه البيانات.

  • يلتقط Snapshot Debugger: تسمح لك ميزة Snapshot Debugger في Application Insights بتجميع لقطات تصحيح الأخطاء عندما يكتشف استثناءً في مثيل الإنتاج لتطبيقك. تعرض اللقطات تتبع المكدس الكامل الذي يؤدي إلى الاستثناءات، بالإضافة إلى قيم المتغيرات المحلية في كل خطوة في المكدس. مع الأسف، لا تسمح هذه الميزة بالحذف الانتقائي لنقاط اللقطة، أو الوصول البرمجي إلى البيانات داخل اللقطة. لذلك، إذا كان المعدل الافتراضي للاحتفاظ باللقطات لا يفي بمتطلبات الامتثال الخاصة بك، نوصيك بإيقاف تشغيل الميزة.

تصدير وحذف البيانات الشخصية

نوصيك بشدة بإعادة هيكلة سياسة جمع البيانات الخاصة بك لإيقاف جمع البيانات الشخصية، أو إخفاء البيانات الشخصية أو إخفاء مصدرها، أو تعديل هذه البيانات بأي طريقة أخرى حتى يتم اعتبارها غير شخصية. عند التعامل مع البيانات الشخصية، ستتحمل تكاليف تحديد الإستراتيجية وأتمتتها، وبناء واجهة يتفاعل من خلالها عملاؤك مع بياناتهم، والصيانة المستمرة. كما إنه مكلف من الناحية الحسابية بالنسبة إلى Log Analytics وApplication Insights، ويمكن أن يؤثر عدد كبير من طلبات الاستعلام المتزامنة أو مكالمات Purge API سلباً على جميع التفاعلات الأخرى مع وظائف Log Analytics. وعلى الرغم من ذلك، إذا كان عليك جمع البيانات الشخصية، فاتبع الإرشادات الواردة في هذا القسم.

هام

بينما تتم معظم عمليات الإزالة بشكل أسرع، تم تعيين اتفاقية مستوى الخدمة الرسمية لإكمال عمليات الإزالة على 30 يوماً نظراً لتأثيرها الشديد على النظام الأساسي للبيانات. تفي اتفاقية مستوى الخدمة هذه بمتطلبات القانون العام لحماية البيانات (GDPR). وهي عملية تلقائية، لذلك لا توجد طريقة لتسريع العملية.

عرض وتصدير

استخدم استعلام واجهة برمجة تطبيقات Log Analytics أو استعلام واجهة برمجة تطبيقات Application Insights لعرض طلبات البيانات وتصديرها.

تحتاج إلى تنفيذ منطق تحويل البيانات إلى تنسيق مناسب لتسليمها إلى المستخدمين. تعد وظائف Azure مكاناً رائعاً لاستضافة مثل هذا المنطق.

حذف

تحذير

عمليات الحذف في تحليلات السجل مدمرة، وغير قابلة للعكس! يُرجى توخي أقصى درجات الحذر في تنفيذها.

تتيح لك واجهة برمجة تطبيقات إزالة Azure Monitor حذف البيانات الشخصية. استخدم عملية الإزالة باعتدال لتجنب المخاطر المحتملة وتأثير الأداء وإمكانية انحراف التجميعات والقياسات والجوانب الأخرى لبيانات Log Analytics الخاصة بك. راجع قسم إستراتيجية معالجة البيانات الشخصية للتعرف على الأساليب البديلة للتعامل مع البيانات الشخصية.

تتمتع عملية الإزالة بامتيازات عالية. امنح دور "Data Purger" في Azure Resource Manager بحذر بسبب احتمال فقدان البيانات.

لإدارة موارد النظام، نقوم بتقييد طلبات المسح إلى 50 طلباً في الساعة. قم بتنفيذ طلبات الإزالة دفعة واحدة عن طريق إرسال أمر واحد يتضمن مسنده جميع هويات المستخدمين التي تتطلب الإزالة. استخدم عامل التشغيل in لتحديد هويات متعددة. قم بتشغيل الاستعلام قبل تنفيذ طلب الإزالة للتحقق من النتائج المتوقعة.

هام

لا يؤثر استخدام Log Analytics أو Application Insights Purge API على تكاليف الاستبقاء. لخفض تكاليف الاستبقاء، يجب تقليل فترة استبقاء البيانات.

بيانات السجل

  • تأخذ Workspace Purge POST API عنصراً يحدد معلمات البيانات لحذفها وإرجاع مرجع GUID.

  • تعيد Get Purge Status POST API عنوان "x-ms-status-location" الذي يتضمن عنوان URL الذي يمكنك الاتصال به لتحديد حالة عملية الإزالة. على سبيل المثال:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/Microsoft.OperationalInsights/workspaces/[WorkspaceName]/operations/purge-[PurgeOperationId]?api-version=2015-03-20
    

بيانات التطبيق

  • تأخذ المكونات - Purge POST API عنصراً يحدد معلمات البيانات لحذفها وإرجاع مرجع GUID.

  • تعيد المكونات - Get Purge Status GET API عنوان "x-ms-status-location" الذي يتضمن عنوان URL الذي يمكنك الاتصال به لتحديد حالة عملية الإزالة. على سبيل المثال:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/microsoft.insights/components/[ComponentName]/operations/purge-[PurgeOperationId]?api-version=2015-05-01
    

الخطوات التالية