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

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

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

توفر مفاتيح الوصول الأساس لتفويض HTTP في الوظائف التي يتم تفعيلها بواسطة HTTP. لمزيد من المعلومات، راجع مستوى التفويض.

أنواع مفاتيح الوصول

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

نوع المفتاح اسم المفتاح مستوى مصادقة HTTP Description
Function default أو معرف من قبل المستخدم function يسمح بالوصول إلى نقطة نهاية دالة معينة فقط.
Host default أو معرف من قبل المستخدم function يسمح بالوصول إلى جميع نقاط نهاية الوظائف في تطبيق الوظائف.
Master _master admin مفتاح مضيف خاص يوفر أيضا الوصول الإداري إلى واجهات برمجة تطبيقات REST لوقت التشغيل في تطبيق الوظائف. لأن المفتاح الرئيسي يمنح صلاحيات مرتفعة في تطبيق الوظيفة الخاص بك، فلا تشارك هذا المفتاح مع أطراف ثالثة أو توزعه في تطبيقات العميل الأصلية.
System يعتمد على الملحق n/a قد تتطلب ملحقات معينة مفتاحا مدارا من قبل النظام للوصول إلى نقاط نهاية خطاف الويب. تم تصميم مفاتيح النظام لنقاط نهاية الوظائف الخاصة بالامتداد التي تستدعيها المكونات الداخلية. على سبيل المثال، يتطلب مشغل شبكة الحدث أن يستخدم الاشتراك مفتاح نظام عند استدعاء نقطة نهاية المشغل. وتستخدم الوظائف الدائمة أيضاً مفاتيح النظام لاستدعاء واجهات برمجة التطبيقات لملحقات المهام الدائمة.
يمكن فقط لملحقات معينة إنشاء مفاتيح النظام. لا يمكنك تعيين قيمها بشكل صريح. مثل المفاتيح الأخرى، يمكنك إنشاء قيمة جديدة للمفتاح من المدخل أو باستخدام واجهات برمجة تطبيقات المفاتيح.

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

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

Action Scope نوع المفتاح
تنفيذ وظيفة وظيفة محددة Function
تنفيذ وظيفة أي وظيفة وظيفة أو مضيف
admin استدعاء نقطة نهاية تطبيق الوظائف الرئيسية
استدعاء واجهات برمجة تطبيقات ملحقات المهام الدائمة تطبيق الوظائف* System
استدعاء webhook خاص بالامتداد (داخلي) تطبيق الوظائف* System

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

متطلبات مفتاح الوصول

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

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

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

تخزين مفاتيح الوصول

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

Important

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

Location Value Description
حساب تخزين ثان blob يخزن المفاتيح في تخزين Blob في حساب تخزين مختلف عن المستخدم في وقت تشغيل الوظائف. يتم تعريف الحساب المحدد والحاوية المستخدمة بواسطة عنوان URL لتوقيع الوصول المشترك (SAS) الذي تم تعيينه AzureWebJobsSecretStorageSas في الإعداد. يجب الاحتفاظ بالإعداد AzureWebJobsSecretStorageSas عند تغيير عنوان URL SAS.
Azure Key Vault keyvault يخزن المفاتيح في خزنة المفاتيح المثبتة في AzureWebJobsSecretStorageKeyVaultUri.
نظام الملفات files المفاتيح تبقى على نظام الملفات المحلي. لا ينصح بتخزين نظام الملفات.
أسرار Kubernetes kubernetes يخزن المفاتيح في مجموعة الموارد في AzureWebJobsKubernetesSecretName. يتم دعمه فقط عند نشر تطبيق الوظائف الخاص بك إلى Kubernetes. تنشئ دالات Azure Core Tools القيم تلقائيا عند استخدامها لنشر التطبيق الخاص بك إلى مجموعة Kubernetes. الأسرار غير القابلة للتغيير غير مدعومة.
أسرار تطبيقات حاوية Azure containerapps يتم تخزين المفاتيح في مخزن الأسرار Azure Container Apps، وهو نظام إدارة الأسرار الداخلية لتطبيقات الحاوية. مدعوم فقط عند نشر تطبيق الوظائف الخاص بك إلى Azure Container Apps. للمعلومات، راجع تكوين المخزن السري لتطبيقات الحاويات.

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

اسم الإعداد System-assigned User-assigned تسجيل التطبيق
AzureWebJobsSecretStorageKeyVaultUri نعم نعم نعم
AzureWebJobsSecretStorageKeyVaultClientId لا نعم نعم
AzureWebJobsSecretStorageKeyVaultClientSecret لا لا نعم
AzureWebJobsSecretStorageKeyVaultTenantId لا لا نعم

Important

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

نقاط نهاية الاتصال مع مفاتيح الوصول

يمكنك استدعاء الوظائف التي تعمل عبر HTTP باستخدام رابط يتضمن اسم الدالة. عندما تضبط مستوى تفويض دالة إلى أي قيمة غير anonymous، يجب عليك أيضا توفير مفتاح وصول في طلبك. يمكنك تضمين مفتاح الوصول في الرابط باستخدام ?code= سلسلة الاستعلام أو في رأس الطلب (x-functions-key). لمزيد من المعلومات، راجع تخويل مفتاح الوصول.

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

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

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

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

ملاحظة

عند نشر تطبيق الوظائف الخاص بك على Azure Container Apps واستخدام AzureWebJobsSecretStorageType=ContainerApps، يجب عليك استخدام طرق خاصة ب Container Apps لاسترجاع مفاتيح الوظائف. لمزيد من المعلومات، راجع إدارة مفاتيح الوصول في وثائق تطبيقات الحاويات.

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

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

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

  3. في القائمة اليمنى، قم بتوسيع الوظائف، ثم حدد مفاتيح التطبيق.

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

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

تلميح

يمكنك أيضا الحصول على مفاتيح الوصول لوظائفك باستخدام أمر func azure functionapp list-functions دالات Azure Core Tools مع --show-keys هذا الخيار. لمزيد من المعلومات، راجع مرجع أدوات دالات Azure الأساسية.

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

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

Important

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

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

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

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

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

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

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

  3. في القائمة اليمنى، قم بتوسيع الوظائف، ثم حدد مفاتيح التطبيق.

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

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

يمكنك أيضا تجديد مفتاح وظيفة في علامة التبويب مفاتيح الوظائف لوظيفة معينة يتم تشغيلها بواسطة HTTP.

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

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

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