معالجة الوصول للقراءة المجهولة إلى بيانات الكائن الثنائي كبير الحجم (عمليات نشر Azure Resource Manager)

يدعم Azure Blob Storage الوصول الاختياري للقراءة المجهولة إلى الحاويات والكائنات الثنائية كبيرة الحجم. ومع ذلك، قد يمثل الوصول المجهول خطرا أمنيا. نوصي بتعطيل الوصول المجهول للحصول على الأمان الأمثل. يساعد عدم السماح بالوصول المجهول على منع انتهاكات البيانات الناجمة عن الوصول المجهول غير المرغوب فيه.

بشكل افتراضي، يحظر دائما الوصول المجهول إلى بيانات الكائن الثنائي كبير الحجم. يمنع التكوين الافتراضي لحساب تخزين Azure Resource Manager المستخدمين من تكوين الوصول المجهول إلى الحاويات والكائنات الثنائية كبيرة الحجم في حساب تخزين. لا يتيح هذا التكوين الافتراضي جميع الوصول المجهول إلى حساب تخزين Azure Resource Manager، بغض النظر عن إعداد الوصول لحاوية فردية.

عند عدم السماح بالوصول المجهول لحساب التخزين، يرفض Azure Storage جميع طلبات القراءة المجهولة مقابل بيانات الكائن الثنائي كبير الحجم. لا يمكن للمستخدمين لاحقا تكوين الوصول المجهول للحاويات في هذا الحساب. لن تقبل أي حاويات تم تكوينها بالفعل للوصول المجهول الطلبات المجهولة.

تحذير

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

معالجة Azure Resource Manager مقابل حسابات التخزين الكلاسيكية

توضح هذه المقالة كيفية استخدام إطار عمل DRAG (Detection-Remediation-Audit-Governance) لإدارة الوصول المجهول باستمرار لحسابات التخزين التي تستخدم نموذج توزيع Azure Resource Manager. تستخدم جميع حسابات التخزين v2 للأغراض العامة، وحسابات تخزين كائن ثنائي كبير الحجم للكتلة المتميزة، وحسابات مشاركة الملفات المتميزة، وحسابات تخزين Blob نموذج توزيع Azure Resource Manager. قد تستخدم بعض حسابات v1 القديمة للأغراض العامة وحسابات كائن ثنائي كبير الحجم للصفحة المتميزة نموذج النشر الكلاسيكي.

إذا كان حساب التخزين الخاص بك يستخدم نموذج النشر الكلاسيكي، نوصي بالترحيل إلى نموذج توزيع Azure Resource Manager في أقرب وقت ممكن. سيتم إيقاف حسابات Azure Storage التي تستخدم نموذج النشر الكلاسيكي في 31 أغسطس 2024. لمزيد من المعلومات، راجع إيقاف حسابات تخزين Azure الكلاسيكية في 31 أغسطس 2024.

إذا لم تتمكن من ترحيل حسابات التخزين الكلاسيكية الخاصة بك في هذا الوقت، فيجب عليك معالجة الوصول المجهول إلى هذه الحسابات الآن. لمعرفة كيفية معالجة الوصول المجهول لحسابات التخزين الكلاسيكية، راجع معالجة الوصول للقراءة المجهولة إلى بيانات الكائن الثنائي كبير الحجم (عمليات النشر الكلاسيكية). لمزيد من المعلومات حول نماذج توزيع Azure، راجع إدارة الموارد والنشر الكلاسيكي.

حول الوصول للقراءة المجهول

يحظر دائما الوصول المجهول إلى بياناتك بشكل افتراضي. هناك إعدادان منفصلان يؤثران على الوصول المجهول:

  1. إعداد الوصول المجهول لحساب التخزين. يوفر حساب تخزين Azure Resource Manager إعدادا للسماح بالوصول المجهول للحساب أو عدم السماح به. توصي Microsoft بعدم السماح بالوصول المجهول لحسابات التخزين للحصول على الأمان الأمثل.

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

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

يلخص الجدول التالي كيفية تأثير الإعدادين معا على الوصول المجهول للحاوية.

يتم تعيين مستوى الوصول المجهول للحاوية إلى خاص (إعداد افتراضي) تم تعيين مستوى الوصول المجهول للحاوية إلى Container تم تعيين مستوى الوصول المجهول للحاوية إلى Blob
الوصول المجهول غير مسموح به لحساب التخزين لا يوجد وصول مجهول إلى أي حاوية في حساب التخزين. لا يوجد وصول مجهول إلى أي حاوية في حساب التخزين. يتخطى إعداد حساب التخزين إعداد الحاوية. لا يوجد وصول مجهول إلى أي حاوية في حساب التخزين. يتخطى إعداد حساب التخزين إعداد الحاوية.
يسمح بالوصول المجهول لحساب التخزين لا يوجد وصول مجهول إلى هذه الحاوية (التكوين الافتراضي). يسمح بالوصول المجهول إلى هذه الحاوية والكائنات الثنائية كبيرة الحجم الخاصة بها. يسمح بالوصول المجهول إلى الكائنات الثنائية كبيرة الحجم في هذه الحاوية، ولكن ليس إلى الحاوية نفسها.

عند السماح بالوصول المجهول لحساب تخزين وتكوينه لحاوية معينة، يتم قبول طلب قراءة كائن ثنائي كبير الحجم في تلك الحاوية التي يتم تمريرها دون عنوان تخويل من قبل الخدمة، ويتم إرجاع بيانات الكائن الثنائي كبير الحجم في الاستجابة.

الكشف عن الطلبات المجهولة من تطبيقات العملاء

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

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

مراقبة الطلبات المجهولة باستخدام مستكشف المقاييس

لتعقب الطلبات المجهولة إلى حساب تخزين، استخدم مستكشف مقاييس Azure في مدخل Microsoft Azure. لمزيد من المعلومات حول Metrics Explorer، راجع تحليل المقاييس باستخدام مستكشف مقاييس Azure Monitor.

اتبع الخطوات التالية لإنشاء مقياس يتتبع الطلبات المجهولة المصدر:

  1. انتقل إلى حساب التخزين خاصتك في مدخل Microsoft Azure. ضمن قسم Monitoring، حدد Metrics.

  2. حدد إضافة قياس. في مربع الحوار Metric، حدد القيم التالية:

    1. اترك الحقل Scope مضبوطًا على اسم حساب التخزين.
    2. اضبط مساحة الأسماء الهرمية للمقياس إلى كائن ثنائي كبير الحجم. يبلغ هذا المقياس عن الطلبات مقابل تخزين Blob فقط.
    3. عيِِن حقل Metric إلى Transactions.
    4. اضبط حقل التجميع إلى المجموع.

    يعرض المقياس الجديد مجموع عدد المعاملات مقابل تخزين Blob على مدى فترة زمنية معينة. يظهر المقياس الناتج كما هو موضح في الصورة التالية:

    لقطة شاشة توضح كيفية تكوين المقياس لجمع معاملات الكائن الثنائي كبير الحجم

  3. بعد ذلك، حدد زر إضافة عامل تصفية لإنشاء عامل تصفية على المقياس للطلبات المجهولة الهوية.

  4. في مربع الحوار Filter، حدد القيم التالية:

    1. عيِن قيمة Property إلى Authentication.
    2. اضبط حقل Operator على علامة التساوي (=).
    3. اضبط حقل القيم على مجهول عن طريق تحديده من القائمة المندرجة أو كتابته.
  5. في الزاوية العلوية اليمنى، حدد الفاصل الزمني الذي تريد عرض المقياس خلاله. يمكنك أيضًا الإشارة إلى مدى دقة تجميع الطلبات، من خلال تحديد الفترات الزمنية في أي مكان من دقيقة واحدة إلى شهر واحد.

بعد تكوين المقياس، ستبدأ الطلبات المجهولة في الظهور على الرسم البياني. تظهر الصورة التالية طلبات مجهولة تم تجميعها خلال الدقائق الثلاثين الماضية.

لقطة شاشة تعرض الطلبات المجهولة المجمعة مقابل تخزين Blob

يمكنك أيضًا تكوين قاعدة تنبيه لتنبيهك عند تقديم عدد معين من الطلبات المجهولة الهوية مقابل حساب التخزين خاصتك. لمزيدٍ من المعلومات، راجع إنشاء وعرض وإدارة تنبيهات القياسات باستخدام Azure Monitor.

تحليل السجلات لتحديد الحاويات التي تتلقى طلبات مجهولة الهوية

تلتقط سجلات Azure Storage تفاصيل حول الطلبات المقدمة مقابل حساب التخزين، بما في ذلك كيفية اعتماد الطلب. يمكنك تحليل السجلات لتحديد الحاويات التي تتلقى طلبات مجهولة المصدر.

لتسجيل الطلبات إلى حساب Azure Storage الخاص بك لتقييم الطلبات المجهولة، يمكنك استخدام تسجيل Azure Storage في Azure Monitor. للحصول على مزيدٍ من المعلومات، راجع مراقبة تخزين Azure.

يدعم تسجيل Azure Storage في Azure Monitor استخدام استعلامات السجل لتحليل بيانات السجل. للاستعلام عن السجلات، يمكنك استخدام مساحة عمل Azure Log Analytics. لمعرفة المزيد عن استعلامات السجل، راجع البرنامج التعليمي: بدء استخدام استعلامات Log Analytics.

إنشاء إعداد تشخيصي في مدخل Microsoft Azure

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

  1. أنشئ مساحة عمل Log Analytics جديدة في الاشتراك الذي يحتوي على حساب Azure Storage الخاص بك. بعد تكوين تسجيل الدخول لحساب التخزين خاصتك، ستكون السجلات متاحة في مساحة عمل Log Analytics. لمزيد من المعلومات، راجع إنشاء مساحة عمل "Log Analytics" في مدخل ةMicrosoft Azure.

  2. انتقل إلى حساب التخزين خاصتك في مدخل Microsoft Azure.

  3. في قسم Monitoring، حدد Diagnostic settings.

  4. حدد كائن ثنائي كبير الحجم لتسجيل الطلبات المقدمة ضد تخزين كائن ثنائي كبير الحجم.

  5. حدد Add diagnostic setting.

  6. أدخل اسمًا لإعداد التشخيص.

  7. ضمن تفاصيل الفئة، في قسم السجل، اختر أنواع الطلبات المراد تسجيلها. جميع الطلبات المجهولة هي طلبات قراءة، لذا حدد StorageRead لالتقاط الطلبات المجهولة.

  8. ضمن تفاصيل الوجهة، حدد إرسال إلى Log Analytics. حدد اشتراكك ومساحة عمل Log Analytics التي أنشأتها مسبقًا، كما هو موضح في الصورة التالية.

    لقطة شاشة توضح كيفية إنشاء إعداد تشخيص لطلبات التسجيل

بعد إنشاء إعداد التشخيص، تُسَجل الطلبات إلى حساب التخزين لاحقًا وفقًا لذلك الإعداد. لمزيد من المعلومات، راجع إنشاء إعداد تشخيصي لجمع سجلات الموارد والمقاييس في Azure.

للحصول على مرجع للحاويات المتوفرة في سجلات تخزين Azure في Azure Monitor، راجع سجلات الموارد.

سجلات الاستعلام للطلبات المجهولة

تتضمن سجلات تخزين Azure في Azure Monitor نوع التصريح الذي اُستخدم لتقديم طلب إلى حساب تخزين. في استعلام السجل الخاص بك، قم بالتصفية على خاصية AuthenticationType لعرض طلبات مجهولة الهوية.

لاسترداد سجلات الأيام السبعة الأخيرة للطلبات المجهولة مقابل تخزين Blob، افتح مساحة عمل Log Analytics. بعد ذلك، الصق الاستعلام التالي في استعلام سجل جديد و شَغِله:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous"
| project TimeGenerated, AccountName, AuthenticationType, Uri

يمكنك أيضًا تكوين قاعدة تنبيه بناءً على هذا الاستعلام لإعلامك بالطلبات المجهولة. لمزيد من المعلومات، راجع إنشاء وعرض وإدارة تنبيهات السجل باستخدام شاشة Azure .

الاستجابات للطلبات المجهولة

عندما يتلقى Blob Storage طلبا مجهولا، سينجح هذا الطلب إذا كانت جميع الشروط التالية صحيحة:

  • يسمح بالوصول المجهول لحساب التخزين.
  • تم تكوين الحاوية المستهدفة للسماح بالوصول المجهول.
  • الطلب هو للوصول للقراءة.

إذا لم يكن أي من هذه الشروط صحيحا، فسيفشل الطلب. تعتمد التعليمات البرمجية للاستجابة على الفشل على ما إذا كان الطلب المجهول قد تم إجراؤه مع إصدار من الخدمة التي تدعم تحدي الحامل. يتم دعم تحدي الحامل مع إصدارات الخدمة 2019-12-12 وأحدث:

  • إذا تم إجراء الطلب المجهول باستخدام إصدار خدمة يدعم تحدي الحامل، فترجع الخدمة رمز الخطأ 401 (غير مصرح به).
  • إذا تم إجراء الطلب المجهول باستخدام إصدار خدمة لا يدعم تحدي الحامل وكان الوصول المجهول غير مسموح به لحساب التخزين، فترجع الخدمة رمز الخطأ 409 (تعارض).
  • إذا تم إجراء الطلب المجهول باستخدام إصدار خدمة لا يدعم تحدي الحامل ويسمح بالوصول المجهول لحساب التخزين، فترجع الخدمة رمز الخطأ 404 (غير موجود).

لمزيد من المعلومات حول تحدي الحامل، راجع تحدي Bearer.

معالجة الوصول المجهول لحساب التخزين

بعد تقييم الطلبات المجهولة للحاويات والكائنات الثنائية كبيرة الحجم في حساب التخزين الخاص بك، يمكنك اتخاذ إجراء لمعالجة الوصول المجهول للحساب بأكمله عن طريق تعيين الخاصية AllowBlobPublicAccess للحساب إلى False.

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

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

تتطلب معالجة الوصول المجهول الإصدار 2019-04-01 أو أحدث من موفر موارد Azure Storage. للحصول على مزيدٍ من المعلومات، راجع Azure Storage Resource Provider REST API.

أذونات عدم السماح بالوصول المجهول

لتعيين خاصية AllowBlobPublicAccess لحساب التخزين، يجب أن يكون لدى المستخدم أذونات لإنشاء حسابات التخزين وإدارتها. تتضمن أدوار التحكم في الوصول المستندة إلى الدور في Azure (Azure RBAC) التي توفر هذه الأذونات إجراء Microsoft.Storage/storageAccounts/write . وتشمل الأدوار المدمجة مع هذا الإجراء ما يلي:

يجب تحديد نطاق تعيينات الدور إلى مستوى حساب التخزين أو أعلى للسماح للمستخدم عدم السماح بالوصول المجهول لحساب التخزين. لمزيد من المعلومات حول نطاق الدور، راجع فهم نطاق التحكم في الوصول استنادًا إلى الدور من Azure.

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

لا توفر هذه الأدوار الوصول إلى البيانات في حساب تخزين عبر معرف Microsoft Entra. ومع ذلك، فهي تشمل Microsoft.Storage/storageAccounts/listkeys/action، الذي يتيح الوصول إلى مفاتيح الوصول إلى الحساب. وبهذا الإذن، يمكن للمستخدم استخدام مفاتيح الوصول إلى الحساب للوصول إلى جميع البيانات في حساب التخزين.

يمنح Microsoft.Storage/storageAccounts/listkeys/action نفسه الوصول إلى البيانات عبر مفاتيح الحساب، ولكنه لا يمنح المستخدم القدرة على تغيير الخاصية AllowBlobPublicAccess لحساب تخزين. بالنسبة للمستخدمين الذين يحتاجون إلى الوصول إلى البيانات في حساب التخزين الخاص بك ولكن لا ينبغي أن تكون لديهم القدرة على تغيير تكوين حساب التخزين، فكر في تعيين أدوار مثل Storage Blob Data Contributor أو Storage Blob Data Reader أو Reader وData Access.

إشعار

تشمل أدوار مسؤول الاشتراك الكلاسيكي مسؤول الخدمة والمسؤول المشارك ما يعادل دور Azure Resource Managerالمالك. يتضمن دور المالك جميع الإجراءات، لذلك يمكن للمستخدم الذي لديه أحد هذه الأدوار الإدارية أيضا إنشاء حسابات تخزين وإدارة تكوين الحساب. لمزيد من المعلومات، راجع أدوار Azure وأدوار Microsoft Entra وأدوار مسؤول الاشتراك الكلاسيكي.

تعيين الخاصية AllowBlobPublicAccess لحساب التخزين إلى False

لمنع الوصول المجهول لحساب تخزين، قم بتعيين الخاصية AllowBlobPublicAccess للحساب إلى False.

هام

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

لمنع الوصول المجهول لحساب تخزين في مدخل Microsoft Azure، اتبع الخطوات التالية:

  1. انتقل إلى حساب التخزين خاصتك في مدخل Microsoft Azure.

  2. حدد موقع إعداد Configuration ضمن Settings.

  3. تعيين Allow Blob anonymous access إلى Disabled.

    لقطة شاشة توضح كيفية عدم السماح بالوصول المجهول للحساب

إشعار

عدم السماح بالوصول المجهول لحساب تخزين لا يؤثر على أي مواقع ويب ثابتة مستضافة في حساب التخزين هذا. الحاوية $ web متاحة للجمهور دائمًا.

بعد تحديث إعداد الوصول المجهول لحساب التخزين، قد يستغرق الأمر ما يصل إلى 30 ثانية قبل نشر التغيير بالكامل.

نموذج البرنامج النصي للمعالجة المجمعة

يتم تشغيل نموذج البرنامج النصي PowerShell التالي مقابل جميع حسابات تخزين Azure Resource Manager في اشتراك وتعيين إعداد AllowBlobPublicAccess لتلك الحسابات إلى False.

<#
.SYNOPSIS
Finds storage accounts in a subscription where AllowBlobPublicAccess is True or null.

.DESCRIPTION
This script runs against all Azure Resource Manager storage accounts in a subscription
and sets the "AllowBlobPublicAccess" property to False.

Standard operation will enumerate all accounts where the setting is enabled and allow the 
user to decide whether or not to disable the setting.  

Classic storage accounts will require individual adjustment of containers to remove public
access, and will not be affected by this script.

Run with BypassConfirmation=$true if you wish to disallow public access on all Azure Resource Manager 
storage accounts without individual confirmation.

You will need access to the subscription to run the script.

.PARAMETER BypassConformation
Set this to $true to skip confirmation of changes. Not recommended.

.PARAMETER SubscriptionId
The subscription ID of the subscription to check.

.PARAMETER ReadOnly
Set this parameter so that the script makes no changes to any subscriptions and only reports affect accounts.

.PARAMETER NoSignin
Set this parameter so that no sign-in occurs -- you must sign in first. Use this if you're invoking this script repeatedly for multiple subscriptions and want to avoid being prompted to sign-in for each subscription.

.OUTPUTS
This command produces only STDOUT output (not standard PowerShell) with information about affect accounts.
#>
param(
    [boolean]$BypassConfirmation=$false,
    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName='SubscriptionId')]
    [String] $SubscriptionId,
    [switch] $ReadOnly, # Use this if you don't want to make changes, but want to get information about affected accounts
    [switch] $NoSignin # Use this if you are already signed in and don't want to be prompted again
)

begin {
    if ( ! $NoSignin.IsPresent ) {
        login-azaccount | out-null
    }
}

process {
    try {
        select-azsubscription -subscriptionid $SubscriptionId -erroraction stop | out-null
    } catch {
        write-error "Unable to access select subscription '$SubscriptionId' as the signed in user -- ensure that you have access to this subscription." -erroraction stop
    }

    foreach ($account in Get-AzStorageAccount) 
    {
        if($account.AllowBlobPublicAccess -eq $null -or $account.AllowBlobPublicAccess -eq $true)
        {
            Write-host "Account:" $account.StorageAccountName " isn't disallowing public access."

            if ( ! $ReadOnly.IsPresent ) {
                if(!$BypassConfirmation)
                {
                    $confirmation = Read-Host "Do you wish to disallow public access? [y/n]"
                }
                if($BypassConfirmation -or $confirmation -eq 'y')
                {
                    try
                    {
                        set-AzStorageAccount -Name $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -AllowBlobPublicAccess $false
                        Write-Host "Success!"
                    }
                    catch
                    {
                        Write-output $_
                    }
                }
            }
        }
        elseif($account.AllowBlobPublicAccess -eq $false)
        {
            Write-Host "Account:" $account.StorageAccountName " has public access disabled, no action required."
        }
        else
        {
            Write-Host "Account:" $account.StorageAccountName ". Error, please manually investigate."
        }
    }
}

end {
    Write-Host "Script complete"
}

تحقق من إعداد الوصول المجهول لحسابات متعددة

للتحقق من إعداد الوصول المجهول عبر مجموعة من حسابات التخزين ذات الأداء الأمثل، يمكنك استخدام Azure Resource Graph Explorer في مدخل Microsoft Azure. لمعرفة المزيد حول استخدام Resource Graph Explorer، راجع التشغيل السريع: تشغيل أول استعلام Resource Graph باستخدام Azure Resource Graph Explorer.

يؤدي تشغيل الاستعلام التالي في Resource Graph Explorer إلى إرجاع قائمة بحسابات التخزين ويعرض إعداد الوصول المجهول لكل حساب:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowBlobPublicAccess = parse_json(properties).allowBlobPublicAccess
| project subscriptionId, resourceGroup, name, allowBlobPublicAccess

تَعرض الصورة التالية نتائج استعلام عبر اشتراك. بالنسبة لحسابات التخزين حيث تم تعيين الخاصية AllowBlobPublicAccess بشكل صريح، تظهر في النتائج على أنها صحيحة أو خاطئة. إذا لم يتم تعيين الخاصية AllowBlobPublicAccess لحساب تخزين، فستظهر فارغة (أو خالية) في نتائج الاستعلام.

لقطة شاشة تعرض نتائج الاستعلام لإعداد الوصول المجهول عبر حسابات التخزين

استخدم سياسة Azure للمراجعة من أجل الامتثال

إذا كان لديك عدد كبير من حسابات التخزين، فقد تحتاج إلى إجراء تدقيق للتأكد من تكوين هذه الحسابات لمنع الوصول المجهول. لمراجعة مجموعة من حسابات التخزين للتأكد من توافقها، استخدم سياسة Azure. نهج Azure هي خدمة يمكنك استخدامها لإنشاء وتعيين وإدارة السياسات التي تطبق القواعد على موارد Azure. يساعدك نهج Azure على الحفاظ على توافق تلك الموارد مع معايير الشركة واتفاقيات مستوى الخدمة لديك. لمزيد من المعلومات، يُرجى الرجوع إلى نظرة عامة على Azure Policy.

قم بإنشاء نهج ذي تأثير تدقيق

يدعم نهج Azure التأثيرات التي تحدد ما يحدث عند تقييم قاعدة النهج مقابل المورد. ينشئ تأثير التدقيق تحذيرا عندما لا يكون المورد متوافقا، ولكنه لا يوقف الطلب. للحصول على مزيدٍ من المعلومات عن التأثيرات، راجع فهم تأثيرات نهج Azure.

لإنشاء نهج مع تأثير تدقيق لإعداد الوصول المجهول لحساب تخزين باستخدام مدخل Microsoft Azure، اتبع الخطوات التالية:

  1. في مدخل Microsoft Azure، انتقل إلى خدمة نهج Azure.

  2. ضمن القسم التأليف، حدد التعريفات.

  3. حدد إضافة تعريف النهج لإنشاء تعريف نهج جديد.

  4. بالنسبة للحقل موقع التعريف، حدد الزر المزيد لتحديد مكان مورد نهج التدقيق.

  5. حدد اسمًا للنهج. يمكنك اختياريًّا تحديد الوصف والفئة.

  6. ضمن قاعدة السياسة ، أضف تعريف السياسة التالي إلى قسم قاعدة السياسة .

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. احفظ النهج.

تعيين النهج

بعد ذلك، عيِن النهج إلى مورد. ويتوافق نطاق النهج مع ذلك المورد وأي موارد تحته. لمزيد من المعلومات حول تعيين النهج، راجع هيكل تعيين نهج Azure.

لتعيين النهج مع مدخل Microsoft Azure، اتبع الخطوات التالية:

  1. في مدخل Microsoft Azure، انتقل إلى خدمة نهج Azure.
  2. ضمن القسم التأليف، حدد المهام.
  3. حدد تعيين النهج لإنشاء مهمة نهج جديدة.
  4. بالنسبة للحقل النطاق، حدد نطاق تعيين النهج.
  5. بالنسبة للحقل تعريف النهج، حدد الزر المزيد، ثم حدد النهج الذي حددته في القسم السابق من القائمة.
  6. وفِر اسماً لتعيين النهج. يكون الوصف اختياريًّا.
  7. اترك تطبيق النهج معينًا إلى تمكين. ليس لهذا الإعداد تأثير على نهج التدقيق.
  8. حدد مراجعة + إنشاء لإنشاء المهمة.

عرض تقرير التوافق

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

قد يستغرق الأمر عدة دقائق حتى يصبح تقرير التوافق متاحًا بعد إنشاء مهمة النهج.

لعرض تقرير التوافق في مدخل Microsoft Azure، اتبع هذه الخطوات:

  1. في مدخل Microsoft Azure، انتقل إلى خدمة نهج Azure.

  2. حدد الامتثال .

  3. قم بتصفية النتائج للحصول على اسم مهمة النهج التي أنشأتها في الخطوة السابقة. يوضح التقرير عدد الموارد غير المتوافقة مع النهج.

  4. يمكنك التنقل لأسفل في التقرير للحصول على تفاصيل إضافية، بما في ذلك قائمة بحسابات التخزين غير المتوافقة.

    لقطة شاشة تعرض تقرير التوافق لنهج التدقيق للوصول المجهول

استخدام سياسة Azure لفرض الوصول المصرح به

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

يستخدم نهج الإنفاذ تأثير الرفض لمنع طلب من شأنه إنشاء حساب تخزين أو تعديله للسماح بالوصول المجهول. للحصول على مزيدٍ من المعلومات عن التأثيرات، راجع فهم تأثيرات نهج Azure.

لإنشاء نهج مع تأثير رفض لإعداد وصول مجهول يسمح بالطلبات المجهولة، اتبع نفس الخطوات الموضحة في استخدام نهج Azure للتدقيق للتوافق، ولكن قم بتوفير JSON التالي في قسم policyRule من تعريف النهج:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

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

تظهر الصورة التالية الخطأ الذي يحدث إذا حاولت إنشاء حساب تخزين يسمح بالوصول المجهول عندما يتطلب نهج له تأثير رفض عدم السماح بالوصول المجهول.

لقطة شاشة توضح الخطأ الذي يحدث عند إنشاء حساب تخزين بانتهاك النهج

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