منع تفويض المفتاح المشترك لحساب تخزين Azure
يجب أن يكون كل طلب آمن لحساب Azure Storage معتمدًا. بشكل افتراضي، يمكن تخويل الطلبات باستخدام بيانات اعتماد Microsoft Azure Active Directory، أو باستخدام مفتاح الوصول إلى الحساب لمصادقة “Shared Key”. ومن بين نوعي التخويل هذين، يوفر Azure AD أمانًا فائقًا وسهولة أكثر في الاستخدام عبر المفتاح المشترك، وتوصي به Microsoft. لمطالبة العملاء باستخدام Microsoft Azure Active Directory لتخويل الطلبات، يمكنك عدم السماح بالطلبات إلى حساب التخزين المعتمد باستخدام "Shared Key".
عندما لا تسمح بتخويل “Shared Key” لحساب تخزين، يرفض Azure Storage جميع الطلبات اللاحقة لهذا الحساب المصرح بها باستخدام مفاتيح الوصول إلى الحساب. لن تنجح سوى الطلبات الآمنة المصرح بها باستخدام Microsoft Azure Active Directory. لمزيد من المعلومات حول استخدام Microsoft Azure Active Directory، راجع تخويل الوصول إلى البيانات في Azure Storage.
توضح هذه المقالة كيفية الكشف عن الطلبات المرسلة باستخدام تخويل "Shared Key" وكيفية إصلاح تخويل "Shared Key" لحساب التخزين الخاص بك.
الكشف عن نوع التفويض المستخدم من قبل تطبيقات العميل
عندما لا تسمح بتفويض “Shared Key” لحساب تخزين، ستفشل الطلبات الواردة من العملاء الذين يستخدمون مفاتيح الوصول إلى الحساب لترخيص “Shared Key”. لفهم كيفية تأثير عدم السماح بتخويل “Shared Key” على تطبيقات العميل قبل إجراء هذا التغيير، قم بتمكين التسجيل والمقاييس لحساب التخزين. يمكنك بعد ذلك تحليل أنماط الطلبات إلى حسابك على مدى فترة زمنية لتحديد كيفية تفويض الطلبات.
استخدم المقاييس لتحديد عدد الطلبات التي يتلقاها حساب التخزين والمصرح بها باستخدام “Shared Key” أو توقيع الوصول المشترك (SAS). استخدم السجلات لتحديد العملاء الذين يرسلون هذه الطلبات.
قد يتم تفويض SAS إما باستخدام “Shared Key” أو Microsoft Azure Active Directory. لمزيد من المعلومات حول تفسير الطلبات المقدمة باستخدام توقيع وصول مشترك، راجع فهم كيفية تأثير عدم السماح لـShared Key بالتأثير على رموز SAS.
مراقبة عدد الطلبات المصرح بها باستخدام Shared Key
لتعقب كيفية اعتماد الطلبات إلى حساب تخزين، استخدم Azure Metrics Explorer في مدخل Microsoft Azure. لمزيد من المعلومات حول Metrics Explorer، راجع البدء مع Azure Metrics Explorer.
اتبع الخطوات التالية لإنشاء مقياس يتتبع الطلبات المقدمة باستخدام Shared Key أو SAS:
انتقل إلى حساب التخزين الخاص بك في مدخل Azure. ضمن قسم Monitoring، حدد Metrics.
حدد إضافة قياس. في مربع الحوار Metric، حدد القيم التالية:
- اترك الحقل Scope مضبوطًا على اسم حساب التخزين.
- اضبط Metric Namespace إلى Account. سيقدم هذا المقياس تقريرًا عن جميع الطلبات مقابل حساب التخزين.
- عيِِن حقل Metric إلى Transactions.
- اضبط حقل Aggregation إلى Sum.
سيعرض المقياس الجديد مجموع عدد المعاملات مقابل حساب التخزين خلال فترة زمنية معينة. يظهر المقياس الناتج كما هو موضح في الصورة التالية:
بعد ذلك، حدد زر Add filter لإنشاء عامل تصفية على المقياس نوع التخويل.
في مربع الحوار Filter، حدد القيم التالية:
- عيِن قيمة Property إلى Authentication.
- اضبط حقل Operator على علامة التساوي (=).
- في الحقل Values، حدد Account Key و SAS.
في الزاوية العلوية اليمنى، حدد النطاق الزمني الذي تريد عرض المقياس الخاص به. يمكنك أيضًا الإشارة إلى مدى دقة تجميع الطلبات، من خلال تحديد الفترات الزمنية في أي مكان من دقيقة واحدة إلى شهر واحد. على سبيل المثال، قم بتعيين Time range إلى 30 يومًا وTime granularity إلى 1 يوم لرؤية الطلبات المجمعة حسب اليوم خلال ال 30 يومًا الماضية.
بعد تهيئة المقياس، ستبدأ الطلبات إلى حساب التخزين في الظهور على الرسم البياني. تعرض الصورة التالية الطلبات التي تمت الموافقة عليها باستخدام Shared Key أو التي تم إجراؤها باستخدام رمز SAS. يتم تجميع الطلبات يوميًا على مدار الثلاثين يومًا الماضية.
يمكنك أيضا تكوين قاعدة تنبيه لإعلامك عند إجراء عدد معين من الطلبات التي تم تفويضها باستخدام "Shared Key" مقابل حساب التخزين الخاص بك. لمزيدٍ من المعلومات، راجع إنشاء وعرض وإدارة تنبيهات القياسات باستخدام Azure Monitor.
تحليل السجلات لتحديد العملاء الذين يأذنون بالطلبات باستخدام Shared Key أو SAS
تلتقط سجلات Azure Storage تفاصيل حول الطلبات المقدمة مقابل حساب التخزين، بما في ذلك كيفية اعتماد الطلب. يمكنك تحليل السجلات لتحديد العملاء الذين يأذنون بالطلبات باستخدام Shared Key أو رمز SAS.
لتسجيل الطلبات في حساب Azure Storage خاصتك من أجل تقييم الطلبات المجهولة، يمكنك استخدام تسجيل Azure Storage في Azure Monitor (معاينة). لمزيد من المعلومات، راجع Monitor Azure Storage.
يدعم تسجيل Azure Storage في Azure Monitor استخدام استعلامات السجل لتحليل بيانات السجل. للاستعلام عن السجلات، يمكنك استخدام مساحة عمل Azure Log Analytics. لمعرفة المزيد عن استعلامات السجل، راجع البرنامج التعليمي: ابدأ مع استعلامات Log Analytics .
إنشاء إعداد تشخيصي في مدخل Microsoft Azure
لتسجيل بيانات Azure Storage باستخدام Azure Monitor وتحليلها باستخدام Azure Log Analytics، يجب عليك أولاً إنشاء إعداد تشخيص يشير إلى أنواع الطلبات وخدمات التخزين التي تريد تسجيل البيانات لها. لإنشاء إعداد تشخيصي في مدخل Microsoft Azure، اتبع الخطوات التالية:
قم بإنشاء مساحة عمل Log Analytics جديدة في الاشتراك الذي يحتوي على حساب Azure Storage الخاص بك، أو استخدم مساحة عمل Log Analytics موجودة. بعد تكوين تسجيل الدخول لحساب التخزين خاصتك، ستكون السجلات متاحة في مساحة عمل Log Analytics. لمزيد من المعلومات، راجع إنشاء مساحة عمل "Log Analytics" في مدخل ةMicrosoft Azure.
انتقل إلى حساب التخزين الخاص بك في مدخل Azure.
في قسم المراقبة، حدد Diagnostic settings (preview).
حدد خدمة Azure Storage التي تريد تسجيل الطلبات الخاصة بها. على سبيل المثال، اختر Blob لتسجيل الطلبات إلى تخزين Blob.
حدد Add diagnostic setting.
توفير اسم لإعداد التشخيص.
ضمن Category details، في قسم log، اختر StorageRead و StorageWrite و StorageDelete لتسجيل كافة طلبات البيانات إلى الخدمة المحددة.
ضمن Destination details، حدد Send to Log Analytics. حدد اشتراكك ومساحة عمل Log Analytics التي أنشأتها مسبقًا، كما هو موضح في الصورة التالية.
يمكنك إنشاء إعداد تشخيص لكل نوع من موارد Azure Storage في حساب التخزين الخاص بك.
بعد إنشاء إعداد التشخيص، تُسَجل الطلبات إلى حساب التخزين لاحقًا وفقًا لذلك الإعداد. لمزيد من المعلومات، راجع إنشاء إعداد تشخيصي لجمع سجلات الموارد والمقاييس في Azure.
للحصول على مرجع للحقول المتاحة في سجلات تخزين Azure في Azure Monitor، انظر سجلات الموارد (معاينة).
سجلات الاستعلام عن الطلبات المقدمة باستخدام Shared Key أو SAS
تتضمن سجلات Azure Storage في Azure Monitor نوع التصريح الذي اُستخدم لتقديم طلب إلى حساب تخزين. لاسترداد سجلات الطلبات المقدمة في الأيام السبعة الأخيرة والتي تمت الموافقة عليها باستخدام Shared Key أو SAS، افتح مساحة عمل Log Analytics. بعد ذلك، الصق الاستعلام التالي في استعلام سجل جديد وقم بتشغيله. يعرض هذا الاستعلام عناوين IP العشرة التي أرسلت الطلبات الأكثر تكرارًا والتي تم تفويضها باستخدام Shared Key أو SAS:
StorageBlobLogs
| where AuthenticationType in ("AccountKey", "SAS") and TimeGenerated > ago(7d)
| summarize count() by CallerIpAddress, UserAgentHeader, AccountName
| top 10 by count_ desc
يمكنك أيضًا تكوين قاعدة تنبيه استنادًا إلى هذا الاستعلام لإعلامك بالطلبات المصرح بها باستخدام Shared Key أو SAS. لمزيد من المعلومات، راجع إنشاء وعرض وإدارة تنبيهات السجل باستخدام Azure Monitor.
معالجة التفويض عبر Shared Key
بعد تحليل كيفية تفويض الطلبات إلى حساب التخزين الخاص بك، يمكنك اتخاذ إجراء لمنع الوصول عبر Shared Key. ولكن أولًا، تحتاج إلى تحديث أي تطبيقات تستخدم تفويض Shared Key لاستخدام Microsoft Azure Active Directory بدلاً من ذلك. يمكنك مراقبة السجلات والمقاييس كما هو موضح في اكتشاف نوع التخويل الذي تستخدمه تطبيقات العميل لتتبع الانتقال. لمزيد من المعلومات حول استخدام Microsoft Azure Active Directory للوصول إلى البيانات في حساب تخزين، راجع تفويض الوصول إلى البيانات في Azure Storage.
عندما تكون واثقا من أنه يمكنك رفض الطلبات المصرح بها باستخدام Shared Key بأمان، يمكنك تعيين الخاصية AllowSharedKeyAccess لحساب التخزين إلى false.
لم يتم تعيين الخاصيةAllowSharedKeyAccess بشكل افتراضي ولا ترجع قيمة حتى تقوم بتعيينها بشكل صريح. يسمح حساب التخزين بالطلبات المصرح بها باستخدام Shared Key عندما تكون قيمة الخاصية null أو عندما تكون true.
تحذير
إذا كان أي عميل يقوم حاليا بالوصول إلى البيانات الموجودة في حساب التخزين الخاص بك باستخدام Shared Key، فتوصي Microsoft بترحيل هؤلاء العملاء إلى Microsoft Azure Active Directory قبل عدم السماح بالوصول إلى Shared Key إلى حساب التخزين.
لعدم السماح بتخويل Shared Key لحساب تخزين في مدخل Microsoft Azure، اتبع الخطوات التالية:
انتقل إلى حساب التخزين الخاص بك في مدخل Azure.
حدد موقع إعداد Configuration ضمن Settings.
قم بتعيين Allow storage account key access إلى Disabled.
بعد عدم السماح بتخويل Shared Key، سيفشل تقديم طلب إلى حساب التخزين باستخدام تفويض Shared Key باستخدام رمز الخطأ 403 (محظور). يقوم Azure Storage بإرجاع خطأ يشير إلى أن التخويل المستند إلى المفتاح غير مسموح به على حساب التخزين.
إن خاصية AllowSharedKeyAccess معتمدة بالنسبة إلى حسابات التخزين التي تستخدم نموذج توزيع Azure Resource Manager فقط. لمزيد من المعلومات حول حسابات التخزين التي تستخدم نموذج توزيع Azure Resource Manager، راجع أنواع حسابات التخزين.
تحقق من عدم السماح بالوصول إلى Shared Key
للتحقق من أن تخويل Shared Key لم يعد مسموحًا به، يمكنك محاولة استدعاء عملية بيانات باستخدام مفتاح الوصول إلى الحساب. يحاول المثال التالي إنشاء حاوية باستخدام مفتاح الوصول. ستفشل هذه المكالمة عند عدم السماح بتخويل Shared Key لحساب التخزين. تذكَّر استبدال قيم العناصر النائبة في الأقواس بقيمك:
az storage container create \
--account-name <storage-account> \
--name sample-container \
--account-key <key> \
--auth-mode key
ملاحظة
الطلبات المجهولة غير مصرح بها وستتم متابعتها إذا قمت بتكوين حساب التخزين والحاوية للوصول العام المجهول للقراءة. لمزيد من المعلومات، راجع تكوين الوصول العام المجهول للقراءة للحاويات والكائنات الثنائية كبيرة الحجم.
التحقق من إعداد الوصول إلى Shared Key لحسابات متعددة
للتحقق من إعداد الوصول إلى Shared Key عبر مجموعة من حسابات التخزين ذات الأداء الأمثل، يمكنك استخدام مستكشف Graph Azure Resource في مدخل Microsoft Azure. لمعرفة المزيد حول استخدام Resource Graph Explorer، راجع البداية السريعة: شغِل أول استعلام عن Resource Graph باستخدام Azure Resource Graph Explorer.
يؤدي تشغيل الاستعلام التالي في Resource Graph Explorer إلى إرجاع قائمة بحسابات التخزين وعرض إعداد وصول Shared Key لكل حساب:
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowSharedKeyAccess = parse_json(properties).allowSharedKeyAccess
| project subscriptionId, resourceGroup, name, allowSharedKeyAccess
أذونات للسماح أو عدم السماح بالوصول إلى Shared Key
لتعيين خاصية AllowBlobPublicAccess لحساب التخزين، يجب أن يكون لدى المستخدم أذونات لإنشاء حسابات التخزين وإدارتها. تتضمن أدوار Azure للتحكم في الوصول القائم على الأدوار (Azure RBAC) التي توفر هذه الأذونات إجراء Microsoft.Storage/storageAccounts/write أو Microsoft.Storage/storageAccounts/*. تشمل الأدوار المدمجة مع هذا الإجراء ما يلي:
- دور Azure Resource ManagerOwner
- دور Azure Resource Manager Contributor
- دور Storage Account Contributor
لا توفر هذه الأدوار الوصول إلى البيانات في حساب التخزين عبر Microsoft Azure Active Directory (Azure AD). ومع ذلك، فهي تشمل Microsoft.Storage/storageAccounts/listkeys/action، الذي يتيح الوصول إلى مفاتيح الوصول إلى الحساب. وبهذا الإذن، يمكن للمستخدم استخدام مفاتيح الوصول إلى الحساب للوصول إلى جميع البيانات في حساب التخزين.
يجب تحديد نطاق مهام الدور إلى مستوى حساب التخزين أو أعلى للسماح للمستخدم بالسماح أو عدم السماح بالوصول العام لحساب التخزين. لمزيد من المعلومات حول نطاق الدور، راجع فهم نطاق Azure RBAC.
احرص على تقييد تعيين هذه الأدوار فقط لأولئك الذين يحتاجون إلى القدرة على إنشاء حساب تخزين أو تحديث خصائصه. استخدم مبدأ أقل الامتيازات لضمان حصول المستخدمين على أقل عدد من الأذونات التي يحتاجون إليها لإنجاز مهامهم. لمزيد من المعلومات حول إدارة الوصول مع Azure RBAC، راجع أفضل الممارسات لـ Azure RBAC.
ملاحظة
تشمل أدوار مسؤول الاشتراك الكلاسيكي مسؤول الخدمة والمسؤول المشارك ما يعادل دور Azure Resource ManagerOwner. يتضمن دور Owner جميع الإجراءات، لذلك يمكن للمستخدم الذي لديه أحد هذه الأدوار الإدارية أيضًا إنشاء حسابات التخزين وإدارتها. لمزيد من المعلومات، راجع أدوار مسؤول الاشتراك الكلاسيكي وأدوار Azure وأدوار مسؤول Azure AD.
فهم كيفية تأثير عدم السماح بـShared Key على رموز SAS المميزة
عندما يكون الوصول إلى Shared Key غير مسموح به لحساب التخزين، يعالج Azure Storage الرموز المميزة لـ SAS استنادًا إلى نوع SAS والخدمة التي يستهدفها الطلب. يوضح الجدول التالي كيفية اعتماد كل نوع من أنواع SAS وكيفية تعامل Azure Storage مع SAS عندما تكون الخاصية AllowSharedKeyAccess لحساب التخزين خاطئة.
| نوع SAS | نوع التفويض | السلوك عندما يكون AllowSharedKeyAccess خاطئًا |
|---|---|---|
| تفويض المستخدم SAS (تخزين Blob فقط) | Azure AD | يسمح بالطلب. توصي Microsoft باستخدام تفويض مستخدم SAS عند الإمكان للحصول على أمان فائق. |
| توقيعات الوصول المشترك للخدمات | المفتاح المشترك | تم رفض الطلب لكافة خدمات تخزين Azure. |
| توقيعات الوصول المشترك للحسابات | المفتاح المشترك | تم رفض الطلب لكافة خدمات تخزين Azure. |
لا تميز مقاييس Azure وتسجيل الدخول إلى Azure Monitor بين الأنواع المختلفة من توقيعات الوصول المشترك. عامل تصفية SAS في مستكشف مقاييس Azure وحقل SAS في تسجيل تخزين Azure في Azure Monitor كلاهما تقارير عن الطلبات المصرح بها مع أي نوع من SAS. ومع ذلك، يتم تفويض أنواع مختلفة من توقيعات الوصول المشترك بشكل مختلف، وتتصرف بشكل مختلف عند عدم السماح بالوصول إلى "Shared Key":
- يتم تفويض رمز SAS المميز للخدمة أو رمز SAS المميز للحساب باستخدام المفتاح المشترك ولن يسمح به عند طلب تخزين Blob عند تعيين الخاصية AllowSharedKeyAccess إلى false.
- تفويض المستخدم SAS مخول باستخدام Microsoft Azure Active Directory وسيتم السماح به بناء على طلب لتخزين Blob عند تعيين الخاصية AllowSharedKeyAccess إلى false.
عندما تقوم بتقييم حركة المرور إلى حساب التخزين الخاص بك، ضع في اعتبارك أن المقاييس والسجلات كما هو موضح في الكشف عن نوع التفويض الذي تستخدمه تطبيقات العميل قد تتضمن الطلبات المقدمة باستخدام SAS تفويض المستخدم.
للحصول على مزيد من المعلومات عن توقيعات الوصول المشارك، راجع منح الوصول المحدود إلى موارد Azure Storage باستخدام توقيعات الوصول المشاركة (SAS).
ضع في اعتبارك التوافق مع أدوات وخدمات Azure الأخرى
يستخدم عدد من خدمات Azure تخويل المفتاح المشترك للاتصال ب Azure Storage. إذا لم تسمح بتخويل المفتاح المشترك لحساب تخزين، فلن تتمكن هذه الخدمات من الوصول إلى البيانات الموجودة في هذا الحساب، وقد تتأثر تطبيقاتك سلبًا.
توفر بعض أدوات Azure خيار استخدام تفويض Microsoft Azure Active Directory للوصول إلى Azure Storage. يسرد الجدول التالي بعض أدوات Azure الشائعة وملاحظات حول ما إذا كان بإمكانهم استخدام Microsoft Azure Active Directory لتخويل الطلبات إلى Azure Storage.
| أداة Azure | تصريح Microsoft Azure Active Directory إلى Azure Storage |
|---|---|
| مدخل Azure | مدعومة. للحصول على معلومات حول التفويض باستخدام حساب Microsoft Azure Active Directory الخاص بك من مدخل Microsoft Azure، راجع اختيار كيفية تخويل الوصول إلى بيانات blob في مدخل Azure. |
| AzCopy | مدعم لمساحة تخزين Blob. للحصول على معلومات حول تخويل عمليات AzCopy، راجع اختيار كيفية توفير بيانات اعتماد التخويل في وثائق AzCopy. |
| Azure Storage Explorer | مدعوم لتخزين Blob و Azure Data Lake Storage Gen2 فقط. وصول Microsoft Azure Active Directory إلى وحدة تخزين Queue غير مدعوم. تأكد من تحديد مستأجر Microsoft Azure Active Directory الصحيح. ولمزيد من المعلومات، اطلع على البدء في استخدام Storage Explorer |
| Azure PowerShell | مدعومة. للحصول على معلومات حول كيفية تخويل أوامر PowerShell لعمليات blob أو قائمة الانتظار باستخدام Microsoft Azure Active Directory، راجع تشغيل أوامر PowerShell باستخدام بيانات اعتماد Microsoft Azure Active Directory للوصول إلى بيانات blob أو تشغيل أوامر PowerShell باستخدام بيانات اعتماد Microsoft Azure Active Directory للوصول إلى بيانات قائمة الانتظار. |
| Azure CLI | مدعومة. للحصول على معلومات حول كيفية تخويل أوامر Azure CLI باستخدام Microsoft Azure Active Directory للوصول إلى بيانات blob وقائمة الانتظار، راجع تشغيل أوامر Azure CLI باستخدام بيانات اعتماد Microsoft Azure Active Directory للوصول إلى بيانات blob أو قائمة الانتظار. |
| Azure IoT Hub | مدعومة. لمزيد من المعلومات، راجع دعم IoT Hub للشبكات الظاهرية. |
| Azure Cloud Shell | Azure Cloud Shell عبارة عن غلاف متكامل في مدخل Microsoft Azure. يستضيف Azure Cloud Shell ملفات للاستمرار في مشاركة ملف Azure في حساب تخزين. سيتعذر الوصول إلى هذه الملفات إذا تم عدم السماح بتخويل Shared Key لحساب التخزين هذا. لمزيد من المعلومات، راجع توصيل تخزين ملفات Microsoft Azure. لتشغيل الأوامر في Azure Cloud Shell لإدارة حسابات التخزين التي لا يسمح بالوصول إلى "Shared Key" لها، تأكد أولاً من أنك قد حصلت على الأذونات اللازمة لهذه الحسابات عبر Azure RBAC. لمزيد من المعلومات، راجع ما هو عنصر التحكم في الوصول المستند إلى الدور في Azure (Azure RBAC)?. |
عدم السماح بتخويل Shared Key لاستخدام الوصول المشروط إلى Microsoft Azure Active Directory
لحماية حساب Azure Storage باستخدام نهج الوصول المشروط إلى Microsoft Azure Active Directory، يجب عدم السماح بتخويل المفتاح المشترك لحساب التخزين. اتبع الخطوات الموضحة في الكشف عن نوع التفويض المستخدم من قبل تطبيقات العميل لتحليل التأثير المحتمل لهذا التغيير على حسابات التخزين الحالية قبل عدم السماح بتخويل Shared Key.
نقل ملفات Azure وأحمال عمل تخزين الجداول
يدعم Azure Storage تخويل Microsoft Azure Active Directory لطلبات التخزين Blob وQueue فقط. إذا كنت لا تسمح بالتخويل باستخدام Shared Key لحساب تخزين، فستفشل الطلبات المقدمة إلى ملفات Azure أو تخزين الجداول التي تستخدم تخويل Shared Key. نظرًا لأن مدخل Microsoft Azure يستخدم دائمًا تخويل Shared Key للوصول إلى بيانات الملفات والجداول، إذا لم تسمح بالتخويل باستخدام Shared Key لحساب التخزين، فلن تتمكن من الوصول إلى بيانات الملف أو الجدول في مدخل Microsoft Azure.
توصي Microsoft إما بترحيل أي ملفات Azure أو بيانات تخزين جدول إلى حساب تخزين منفصل قبل عدم السماح بالوصول إلى الحساب عبر Shared Key، أو عدم تطبيق هذا الإعداد على حسابات التخزين التي تدعم Azure Files أو أحمال عمل تخزين الجدول.
لا يؤثر عدم السماح بالوصول إلى Shared Key لحساب تخزين على اتصالات SMB بملفات Azure.