العمل باستخدام مفاتيح الوصول في Azure Functions

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

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

توفر مفاتيح الوصول الأساس لتخويل HTTP في الوظائف المشغلة من HTTP. لمزيد من المعلومات، راجع مستوى التخويل.

فهم المفاتيح

يعتمد نطاق مفتاح الوصول والإجراءات التي يدعمها على نوع مفتاح الوصول.

نَوع المفتاح اسم المفتاح مستوى مصادقة HTTP ‏‏الوصف
دالة default أو معرف من قبل المستخدم function يسمح بالوصول إلى نقطة نهاية دالة معينة فقط.
مضيف default أو معرف من قبل المستخدم function يسمح بالوصول إلى جميع نقاط نهاية الوظائف في تطبيق الوظائف.
الرئيسية _master admin مفتاح مضيف خاص يوفر أيضا الوصول الإداري إلى واجهات برمجة تطبيقات REST لوقت التشغيل في تطبيق الوظائف. لا يمكن إبطال هذا المفتاح. نظرا لأن المفتاح الرئيسي يمنح أذونات مرتفعة في تطبيق الوظائف، فلا يجب مشاركة هذا المفتاح مع جهات خارجية أو توزيعه في تطبيقات العميل الأصلية.
النظام يعتمد على الملحق غير متوفر قد تتطلب ملحقات معينة مفتاحا مدارا من قبل النظام للوصول إلى نقاط نهاية خطاف الويب. تم تصميم مفاتيح النظام لنقاط نهاية الوظائف الخاصة بالامتداد التي يتم استدعاؤها بواسطة المكونات الداخلية. على سبيل المثال، يتطلب مشغل شبكة الحدث أن يستخدم الاشتراك مفتاح نظام عند استدعاء نقطة نهاية المشغل. وتستخدم الوظائف الدائمة أيضاً مفاتيح النظام لاستدعاء واجهات برمجة التطبيقات لملحقات المهام الدائمة.
لا يمكن إنشاء مفاتيح النظام إلا من خلال ملحقات محددة، ولا يمكنك تعيين قيمها بشكل صريح. مثل المفاتيح الأخرى، يمكنك إنشاء قيمة جديدة للمفتاح من المدخل أو باستخدام واجهات برمجة تطبيقات المفاتيح.

تتم تسمية كل مفتاح كمرجع، وهناك مفتاح افتراضي (يسمى default) على مستوى الدالة والمضيف. مفاتيح الوظائف لها الأسبقية على مفاتيح المضيف. عندما يتم تعريف مفتاحين بنفس الاسم، يتم استخدام مفتاح الوظيفة دائماً.

يعرض الجدول التالي مقارنة لاستخدامات أنواع مختلفة من مفاتيح الوصول:

الإجراء النطاق نَوع المفتاح
تنفيذ وظيفة وظيفة محددة الدالة
تنفيذ وظيفة أي دالة وظيفة أو مضيف
admin استدعاء نقطة نهاية تطبيق الوظيفة الشكل الرئيسي فقط
استدعاء واجهات برمجة تطبيقات ملحقات المهام الدائمة تطبيق الوظائف* النظام
استدعاء خطاف الويب الخاص بالملحق (داخلي) تطبيق الوظائف* نظام

*النطاق الذي يحدده الملحق.

المتطلبات الرئيسية

في Functions، يتم إنشاء مفاتيح الوصول عشوائيا صفائف 32 بايت يتم ترميزها كسلاسل base-64 آمنة لعنون URL. بينما يمكنك إنشاء مفاتيح الوصول الخاصة بك واستخدامها مع Functions، نوصي بشدة بالسماح للدالات بدلا من ذلك بإنشاء جميع مفاتيح الوصول الخاصة بك نيابة عنك.

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

للسماح للوظائف بإنشاء مفاتيحك نيابة عنك، لا تقم بتوفير المفتاح value لأي من واجهات برمجة التطبيقات التي يمكنك استخدامها لإنشاء المفاتيح.

إدارة تخزين المفاتيح

يتم تخزين المفاتيح كجزء من تطبيق الدالة في Azure ويتم تشفيرها في حالة الراحة. بشكل افتراضي، يتم تخزين المفاتيح في حاوية تخزين Blob بالحساب الذي يوفره الإعداد AzureWebJobsStorage. يمكنك استخدام AzureWebJobsSecretStorageType الإعداد لتجاوز هذا السلوك الافتراضي وتخزين المفاتيح بدلا من ذلك في أحد هذه المواقع البديلة:

الموقع قيمة ‏‏الوصف
حساب تخزين ثان blob يخزن المفاتيح في تخزين Blob في حساب تخزين مختلف عن الحساب الذي يستخدمه وقت تشغيل الوظائف. يتم تعريف الحساب المحدد والحاوية المستخدمة بواسطة عنوان URL لتوقيع الوصول المشترك (SAS) الذي تم تعيينه AzureWebJobsSecretStorageSas في الإعداد. يجب الاحتفاظ بالإعداد AzureWebJobsSecretStorageSas عند تغيير عنوان URL SAS.
Azure Key Vault keyvault يتم استخدام مخزن المفاتيح الذي تم تعيينه في AzureWebJobsSecretStorageKeyVaultUri لتخزين المفاتيح.
نظام الملفات files يتم الاحتفاظ بالمفاتيح على نظام الملفات المحلي، وهو الافتراضي في Functions v1.x. لا ينصح بتخزين نظام الملفات.
Kubernetes Secrets kubernetes يتم استخدام مجموعة الموارد في AzureWebJobsKubernetesSecretName لتخزين المفاتيح. يتم دعمه فقط عند نشر تطبيق الوظائف الخاص بك إلى Kubernetes. تنشئ Azure Functions Core Tools القيم تلقائيا عند استخدامها لنشر التطبيق الخاص بك إلى مجموعة Kubernetes.

عند استخدام Key Vault لتخزين المفاتيح، تعتمد إعدادات التطبيق التي تحتاجها على نوع الهوية المدارة، إما المعينة من قبل النظام أو المعينة من قبل المستخدم.

اسم الإعداد المعين من نظام المستخدم المعين تسجيل التطبيق
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId س
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

استخدام مفاتيح الوصول

يمكن استدعاء الوظائف التي يتم تشغيلها بواسطة HTTP بشكل عام باستخدام عنوان URL بالتنسيق: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. عند تعيين مستوى التخويل لدالة معينة على قيمة أخرى غير anonymous، يجب عليك أيضا توفير مفتاح وصول في طلبك. يمكن توفير مفتاح الوصول إما في عنوان URL باستخدام ?code= سلسلة الاستعلام أو في عنوان الطلب (x-functions-key). لمزيد من المعلومات، راجع تخويل مفتاح الوصول.

للوصول إلى واجهات برمجة تطبيقات REST لوقت التشغيل (ضمن /admin/)، يجب توفير المفتاح الرئيسي (_master) في x-functions-key عنوان الطلب. يمكنك إزالة نقاط نهاية المسؤول باستخدام functionsRuntimeAdminIsolationEnabled خاصية الموقع.

الحصول على مفاتيح الوصول إلى الوظائف

يمكنك الحصول على المفاتيح الوظيفية والمضيفة برمجيا باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:

لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.

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

  1. قم بتسجيل الدخول إلى مدخل Microsoft Azure، ثم ابحث عن تطبيق الوظائف وحدده.

  2. حدد تطبيق الوظائف الذي تريد العمل معه.

  3. في الجزء الأيمن، قم بتوسيع Functions، ثم حدد App keys.

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

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

تجديد مفاتيح الوصول أو إنشائها

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

يمكنك تجديد المفاتيح الوظيفية والمضيفة برمجيا أو إنشاء مفاتيح جديدة باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:

لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.

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

  1. قم بتسجيل الدخول إلى مدخل Microsoft Azure، ثم ابحث عن تطبيق الوظائف وحدده.

  2. حدد تطبيق الوظائف الذي تريد العمل معه.

  3. في الجزء الأيمن، قم بتوسيع Functions، ثم حدد App keys.

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

  4. حدد تجديد قيمة المفتاح بجوار المفتاح الذي تريد تجديده، ثم حدد تجديد وحفظ.

يمكنك أيضا تجديد مفتاح دالة في علامة تبويب Function keys لدالة معينة يتم تشغيلها من قبل HTTP.

حذف مفاتيح الوصول

يمكنك حذف المفاتيح الوظيفية والمضيفة برمجيا باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:

لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.