منح وصول محدود إلى موارد Azure Storage باستخدام shared access signatures (SAS)

يوفر shared access signature (SAS) وصولاً آمناً مفوضاً إلى الموارد الموجودة في حساب التخزين الخاص بك. باستخدام shared access signature، تتمتع بالتحكم متعدد الاستخدامات على طريقة إمكانية وصول عميل إلى البيانات. على سبيل المثال:

  • ما هي الموارد التي قد يصل إليها العميل.

  • ما هي الأذونات التي يمتلكونها لتلك الموارد.

  • ما هي مدة صلاحية shared access signature.

أنواع توقيعات الوصول المشترك

يدعم Azure Storage ثلاثة أنواع من توقيعات الوصول المشتركة:

  • توقيعات الوصول المشترك لتفويض المستخدم

  • توقيعات الوصول المشترك للخدمات

  • توقيعات الوصول المشترك للحسابات

توقيعات الوصول المشترك لتفويض المستخدم

يُعد تفويض مستخدم توقيعات الوصول المشترك مؤمّنًا بواسطة بيانات اعتماد Azure Active Directory‏ (Azure AD) وأيضًا بواسطة الأذونات المحددة لتوقيعات الوصول المشترك. ينطبق تفويض مستخدم توقيعات الوصول المشترك على تخزين الكائنات الثنائية كبيرة الحجم فقط.

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

توقيعات الوصول المشترك للخدمات

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

لمزيد من المعلومات حول توقيعات الوصول المشترك للخدمات، راجع إنشاء توقيعات الوصول المشترك للخدمات (واجهة برمجة تطبيقات REST).

توقيعات الوصول المشترك للحسابات

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

يمكنك أيضًا تفويض الوصول إلى ما يلي:

  • العمليات على مستوى الخدمة (على سبيل المثال، عمليات الحصول على/تعيين خصائص الخدمة والحصول على إحصائيات الخدمة).

  • قراءة وكتابة وحذف العمليات غير المسموح بها من خلال توقيعات الوصول المشترك للخدمات.

لمزيد من المعلومات حول توقيعات الوصول المشترك للحسابات، راجع إنشاء توقيعات الوصول المشترك للحسابات (واجهة برمجة تطبيقات REST).

ملاحظة

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

يمكن أن يتخذ توقيع الوصول المشترك أحد النموذجين التاليين:

  • توقيع الوصول المشترك المخصص. عند إنشاء توقيع الوصول المشترك المخصص، يتم تحديد وقت البدء ووقت انتهاء الصلاحية والأذونات في SAS URI. يمكن أن يكون أي نوع من توقيع الوصول المشترك هو توقيع وصول مشترك مخصص.

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

ملاحظة

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

كيفية عمل توقيع وصول مشترك

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

ملاحظة

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

توقيع SAS والتخويل

يمكنك توقيع رمز SAS المميز باستخدام مفتاح تفويض المستخدم أو باستخدام مفتاح حساب التخزين (المفتاح المشترك).

توقيع رمز SAS المميز باستخدام مفتاح تفويض المستخدم

يمكنك توقيع رمز SAS المميز باستخدام مفتاح تفويض مستخدم تم إنشاؤه باستخدام بيانات اعتماد Azure Active Directory‏ (Azure AD). يتم توقيع SAS لتفويض المستخدم باستخدام مفتاح تفويض المستخدم.

للحصول على المفتاح، ثم إنشاء SAS، يلزم تعيين دور Azure إلى حساب الأمان الأساسي في Azure AD الذي يتضمن الإجراء Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. لمزيد من المعلومات، راجع إنشاء توقيع الوصول المشترك لتفويض مستخدم (واجهة برمجة تطبيقات REST).

توقيع رمز SAS المميز باستخدام مفتاح حساب

يتم توقيع كل من توقيع الوصول المشترك للخدمة و توقيع الوصول المشترك للحساب باستخدام مفتاح حساب التخزين. لإنشاء SAS موقّع باستخدام مفتاح الحساب، يتعين أن يكون لدى التطبيق إمكانية الوصول إلى مفتاح الحساب.

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

يلخص الجدول التالي كيفية تفويض كل نوع من أنواع رموز SAS المميزة.

نوع SAS نوع التفويض
SAS لتفويض المستخدم (تخزين كائن ثنائي كبير الحجم فقط) Azure AD
توقيعات الوصول المشترك للخدمات المفتاح المشترك
توقيعات الوصول المشترك للحسابات المفتاح المشترك

توصي Microsoft باستخدام SAS لتفويض المستخدم عند الإمكان للحصول على أمان فائق.

رمز SAS المميز

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

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

فيما يلي مثال لـ SAS URI للخدمة، يوضح URI للمورد ورمز SAS المميز. نظرًا لأن رمز SAS المميز يتكون من سلسلة استعلام URI، يتعين أن يتبع URI للمورد أولاً علامة استفهام، ثم رمز SAS المميز:

Components of a service SAS URI

متى تستخدم توقيع وصول مشترك

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

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

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

    Scenario diagram: Front-end proxy service

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

    Scenario diagram: SAS provider service

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

إضافة إلى ذلك، تُطلب توقيعات الوصول المشترك لتخويل الوصول إلى الكائن المصدر في لأحد عمليات النسخ في بعض السيناريو المحددة:

  • عند نسخ كائن ثنائي كبير الحجم إلى كائن آخر موجود في حساب تخزين مختلف.

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

  • عند نسخ ملف إلى ملف آخر موجود في حساب تخزين مختلف.

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

  • عند نسخ كائن ثنائي كبير الحجم إلى ملف، أو ملف إلى كائن ثنائي كبير الحجم.

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

أفضل الممارسات عند استخدام SAS

عند استخدام توقيعات الوصول المشتركة في تطبيقاتك، يجب أن تكون على دراية بمخاطرين محتملتين:

  • إذا تم تسريب SAS، يمكن استخدامه من قبل أي شخص يحصل عليه، ما قد يعرّض حساب التخزين الخاص بك للخطر.

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

يمكن أن تساعد التوصيات التالية لاستخدام توقيعات الوصول المشتركة في التخفيف من هذه المخاطر:

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

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

  • ضع خطة إبطال لـ SAS. تأكد من أنك مستعد للرد إذا تم اختراق SAS.

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

  • حدد نهج الوصول المخزن لتوقيع الوصول المشترك للخدمة. تمنحك نُهُج الوصول المخزنة خيار إبطال الأذونات لتوقيع الوصول المشترك للخدمة دون الحاجة إلى إعادة إنشاء مفاتيح حساب التخزين. عيّن انتهاء الصلاحية على هذه الأشياء بعيدًا جدًا في المستقبل (أو لامتناهٍ) وتأكد من تحديثها بانتظام لنقلها بعيدًا في المستقبل.

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

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

  • توخي الحيطة والحذر مع وقت بدء SAS. إذا قمت بتعيين وقت البدء لـ SAS إلى الوقت الحالي، فقد تحدث حالات الفشل بشكل متقطع للدقائق القليلة الأولى. ويرجع ذلك إلى وجود آلات مختلفة لها أوقات حالية مختلفة قليلاً (تُعرف باسم انحراف الساعة). بشكل عام، عيِّن وقت البدء ليكون 15 دقيقة على الأقل في الماضي. أو، لا تعيِّنه على الإطلاق، مما يجعله صالحاً على الفور في جميع الحالات. وينطبق الأمر نفسه بشكل عام على وقت انتهاء الصلاحية أيضًا - تذكر أنه يمكنك ملاحظة ما يصل إلى 15 دقيقة من انحراف الساعة في أي اتجاه بأي طلب. بالنسبة للعملاء الذين يستخدمون إصدار REST قبل 2012-02-12، فإن الحد الأقصى لمدة SAS التي لا تشير إلى نهج وصول مخزّن هو ساعة واحدة. ستفشل أي نُهج تحدد مدة أطول من ساعة واحدة.

  • كن حذرًا مع تنسيق التاريخ والوقت لـ SAS. بالنسبة لبعض الأدوات المساعدة (مثل AzCopy)، يتعين تنسيق قيم التاريخ/الوقت على النحو التالي '+%Y-%m-%dT%H:%M:%SZ'. يتضمن هذا التنسيق على وجه التحديد الثواني.

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

  • معرفة أنه ستتم إصدار فاتورة لحسابك نظير أي استخدام، بما في ذلك الاستخدام من خلال SAS. إذا قدمت حق الوصول للكتابة إلى كائن ثنائي كبير الحجم، فقد يختار المستخدم تحميل كائن ثنائي كبير الحجم حجمه 200 غيغابايت. وإذا كنت قد منحته حق الوصول للقراءة فقط أيضاً، فقد يختار تنزيله 10 مرات، مما يؤدي إلى تكبدك 2 تيرابايت كتكاليف خروج. مرة أخرى، احرص على تقديم أذونات محدودة للمساعدة في الحد من الأعمال المحتملة التي يمكن أن يقدم عليها المستخدمون الضارون. استخدم SAS قصيرة الأمد للحد من هذا التهديد (لكن ضع في اعتبارها الانحراف الزمني في وقت الانتهاء).

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

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

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

ملاحظة

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

البدء باستخدام SAS

لبدء استخدام توقيعات الوصول المشترك، راجع المقالات التالية لكل نوع من أنواع SAS.

توقيعات الوصول المشترك لتفويض المستخدم

توقيعات الوصول المشترك للخدمات

توقيعات الوصول المشترك للحسابات

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