إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تتيح لك Azure Functions استخدام المفاتيح السرية لجعل الوصول إلى نقاط نهاية الدالة أكثر صعوبة. توضح هذه المقالة أنواع مفاتيح الوصول التي تدعمها Functions، وكيفية العمل مع مفاتيح الاخت الوصول.
بينما توفر مفاتيح الوصول بعض التخفيف من حدة الوصول غير المرغوب فيه، يجب أن تفكر في خيارات أخرى لتأمين نقاط نهاية HTTP في الإنتاج. على سبيل المثال، ليس من الممارسات الجيدة توزيع الأسرار المشتركة في تطبيق عام. إذا تم استدعاء وظيفتك من عميل عام، يجب أن تفكر في تنفيذ آليات الأمان هذه أو آليات الأمان الأخرى:
- تمكين مصادقة/تخويل خدمة التطبيقات
- استخدام إدارة واجهة برمجة تطبيقات Azure (APIM) لمصادقة الطلبات
- نشر تطبيق الوظائف الخاص بك إلى شبكة ظاهرية
- نشر تطبيق الوظائف الخاص بك في عزلة
توفر مفاتيح الوصول الأساس لتخويل HTTP في الوظائف المشغلة من HTTP. لمزيد من المعلومات، راجع مستوى التفويض.
فهم المفاتيح
يعتمد نطاق مفتاح الوصول والإجراءات التي يدعمها على نوع مفتاح الوصول.
| نوع المفتاح | اسم المفتاح | مستوى مصادقة HTTP | Description |
|---|---|---|---|
| Function |
default أو معرف من قبل المستخدم |
function |
يسمح بالوصول إلى نقطة نهاية دالة معينة فقط. |
| Host |
default أو معرف من قبل المستخدم |
function |
يسمح بالوصول إلى جميع نقاط نهاية الوظائف في تطبيق الوظائف. |
| Master | _master |
admin |
مفتاح مضيف خاص يوفر أيضا الوصول الإداري إلى واجهات برمجة تطبيقات REST لوقت التشغيل في تطبيق الوظائف. نظرا لأن المفتاح الرئيسي يمنح أذونات مرتفعة في تطبيق الوظائف، فلا يجب مشاركة هذا المفتاح مع جهات خارجية أو توزيعه في تطبيقات العميل الأصلية. |
| System | يعتمد على الملحق | n/a | قد تتطلب ملحقات معينة مفتاحا مدارا من قبل النظام للوصول إلى نقاط نهاية خطاف الويب. تم تصميم مفاتيح النظام لنقاط نهاية الوظائف الخاصة بالامتداد التي يتم استدعاؤها بواسطة المكونات الداخلية. على سبيل المثال، يتطلب مشغل شبكة الحدث أن يستخدم الاشتراك مفتاح نظام عند استدعاء نقطة نهاية المشغل. وتستخدم الوظائف الدائمة أيضاً مفاتيح النظام لاستدعاء واجهات برمجة التطبيقات لملحقات المهام الدائمة. يمكن فقط لملحقات معينة إنشاء مفاتيح النظام. لا يمكنك تعيين قيمها بشكل صريح. مثل المفاتيح الأخرى، يمكنك إنشاء قيمة جديدة للمفتاح من المدخل أو باستخدام واجهات برمجة تطبيقات المفاتيح. |
يتم تسمية كل مفتاح كمرجع. هناك مفتاح افتراضي (يسمى default) على مستوى الدالة والمضيف. مفاتيح الوظائف لها الأسبقية على مفاتيح المضيف. عندما يتم تعريف مفتاحين بنفس الاسم، يتم استخدام مفتاح الوظيفة دائماً.
يعرض الجدول التالي مقارنة لاستخدامات أنواع مختلفة من مفاتيح الوصول:
| Action | Scope | نوع المفتاح |
|---|---|---|
| تنفيذ وظيفة | وظيفة محددة | Function |
| تنفيذ وظيفة | أي وظيفة | وظيفة أو مضيف |
admin استدعاء نقطة نهاية |
تطبيق الوظائف | Master-only |
| استدعاء واجهات برمجة تطبيقات ملحقات المهام الدائمة | تطبيق الوظائف* | System |
| استدعاء خطاف الويب الخاص بالملحق (داخلي) | تطبيق الوظائف* | system |
*النطاق الذي يحدده الملحق.
المتطلبات الرئيسية
في Functions، يتم إنشاء مفاتيح الوصول عشوائيا صفائف 32 بايت يتم ترميزها كسلاسل base-64 آمنة لعنون URL. بينما يمكنك إنشاء مفاتيح الوصول الخاصة بك واستخدامها مع Functions، نوصي بشدة بالسماح للدالات بدلا من ذلك بإنشاء جميع مفاتيح الوصول الخاصة بك نيابة عنك.
تتضمن مفاتيح الوصول التي تم إنشاؤها بواسطة الوظائف توقيعا خاصا وقيم المجموع الاختباري التي تشير إلى نوع مفتاح الوصول وأن Azure Functions أنشأته. وجود هذه المكونات الإضافية في المفتاح نفسه يجعل من الأسهل بكثير تحديد مصدر هذه الأنواع من الأسرار الموجودة أثناء فحص الأمان والعمليات الآلية الأخرى.
للسماح للوظائف بإنشاء مفاتيحك نيابة عنك، لا تقم بتوفير المفتاح value لأي من واجهات برمجة التطبيقات التي يمكنك استخدامها لإنشاء المفاتيح.
إدارة تخزين المفاتيح
يتم تخزين المفاتيح كجزء من تطبيق الدالة في Azure ويتم تشفيرها في حالة الراحة. بشكل افتراضي، يتم تخزين المفاتيح في حاوية تخزين Blob بالحساب الذي يوفره الإعداد AzureWebJobsStorage. يمكنك استخدام AzureWebJobsSecretStorageType الإعداد لتجاوز هذا السلوك الافتراضي وتخزين المفاتيح بدلا من ذلك في أحد هذه المواقع البديلة:
| Location | Value | Description |
|---|---|---|
| حساب تخزين ثان | blob |
يخزن المفاتيح في تخزين Blob في حساب تخزين مختلف عن الحساب الذي يستخدمه وقت تشغيل الوظائف. يتم تعريف الحساب المحدد والحاوية المستخدمة بواسطة عنوان URL لتوقيع الوصول المشترك (SAS) الذي تم تعيينه AzureWebJobsSecretStorageSas في الإعداد. يجب الاحتفاظ بالإعداد AzureWebJobsSecretStorageSas عند تغيير عنوان URL SAS. |
| Azure Key Vault | keyvault |
يتم استخدام مخزن المفاتيح الذي تم تعيينه في AzureWebJobsSecretStorageKeyVaultUri لتخزين المفاتيح. |
| نظام الملفات | files |
يتم الاحتفاظ بالمفاتيح على نظام الملفات المحلي، وهو الافتراضي في Functions v1.x. لا ينصح بتخزين نظام الملفات. |
| أسرار Kubernetes | kubernetes |
يتم استخدام الموارد المحددة في AzureWebJobsKubernetesSecretName لتخزين المفاتيح. يتم دعمه فقط عند نشر تطبيق الوظائف الخاص بك إلى Kubernetes. تنشئ Azure Functions Core Tools القيم تلقائيا عند استخدامها لنشر التطبيق الخاص بك إلى مجموعة Kubernetes. الأسرار غير القابلة للتغيير غير مدعومة. |
| أسرار تطبيقات حاوية Azure | ContainerApps |
يتم تخزين المفاتيح في متجر أسرار Azure Container Apps. مدعوم فقط عند نشر تطبيق الوظائف الخاص بك إلى Azure Container Apps. |
عند استخدام Key Vault لتخزين المفاتيح، تعتمد إعدادات التطبيق التي تحتاجها على نوع الهوية المدارة، إما المعينة من قبل النظام أو المعينة من قبل المستخدم.
| اسم الإعداد | System-assigned | User-assigned | تسجيل التطبيق |
|---|---|---|---|
| AzureWebJobsSecretStorageKeyVaultUri | ✓ | ✓ | ✓ |
| AzureWebJobsSecretStorageKeyVaultClientId | X | ✓ | ✓ |
| AzureWebJobsSecretStorageKeyVaultClientSecret | X | X | ✓ |
| AzureWebJobsSecretStorageKeyVaultTenantId | X | X | ✓ |
Important
لا يتم تحديد نطاق الأسرار لتطبيقات الوظائف الفردية من خلال AzureWebJobsSecretStorageKeyVaultUri الإعداد. إذا تم تكوين تطبيقات وظائف متعددة لاستخدام نفس Key Vault، فإنها تشترك في نفس الأسرار، مما قد يؤدي إلى تضارب المفاتيح أو الكتابة فوقها. لتجنب السلوك غير المقصود، نوصي باستخدام مثيل Key Vault منفصل لكل تطبيق وظائف.
استخدام مفاتيح الوصول
يمكن استدعاء الدالات التي تم تشغيلها بواسطة HTTP بشكل عام باستخدام عنوان URL يتضمن اسم الدالة. عند تعيين مستوى التخويل لدالة معينة كقيمة أخرى غير anonymous، يجب عليك أيضا توفير مفتاح وصول في طلبك. يمكن توفير مفتاح الوصول إما في عنوان URL باستخدام ?code= سلسلة الاستعلام أو في عنوان الطلب (x-functions-key). لمزيد من المعلومات، راجع تخويل مفتاح الوصول.
للوصول إلى واجهات برمجة تطبيقات REST لوقت التشغيل (ضمن /admin/)، يجب توفير المفتاح الرئيسي (_master) في x-functions-key عنوان الطلب. يمكنك إزالة نقاط نهاية المسؤول باستخدام functionsRuntimeAdminIsolationEnabled خاصية الموقع.
الحصول على مفاتيح الوصول إلى الوظائف
يمكنك الحصول على المفاتيح الوظيفية والمضيفة برمجيا باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:
لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.
يمكنك استخدام هذه الطرق للحصول على مفاتيح الوصول دون الحاجة إلى استخدام واجهات برمجة تطبيقات REST.
- مدخل Microsoft Azure
- Azure CLI
- Azure PowerShell
سجل الدخول إلى مدخل Microsoft Azure، ثم ابحث عن تطبيق الوظائف وحدده.
حدد تطبيق الوظائف الذي تريد العمل معه.
في القائمة اليمنى، قم بتوسيع الوظائف، ثم حدد مفاتيح التطبيق.
تظهر صفحة مفاتيح التطبيق . في هذه الصفحة، يتم عرض مفاتيح المضيف، والتي يمكن استخدامها للوصول إلى أي وظيفة في التطبيق. يتم عرض مفتاح النظام أيضا، والذي يمنح أي شخص حق الوصول على مستوى المسؤول إلى جميع واجهات برمجة التطبيقات لتطبيق الوظائف.
يمكنك أيضا ممارسة الامتياز الأقل باستخدام المفتاح لدالة معينة. يمكنك الحصول على مفاتيح خاصة بالوظيفة من علامة التبويب مفاتيح الوظائف لوظيفة معينة يتم تشغيلها بواسطة HTTP.
تلميح
يمكنك أيضا الحصول على مفاتيح الوصول لوظائفك باستخدام الأمر func azure functionapp list-functions Azure Functions Core Tools مع الخيار --show-keys . لمزيد من المعلومات، راجع مرجع أدوات Azure Functions الأساسية.
تجديد مفاتيح الوصول أو إنشائها
عند تجديد قيم مفتاح الوصول أو إنشائها، يجب إعادة توزيع قيم المفاتيح المحدثة يدويا لجميع العملاء الذين يستدعيون دالتك.
يمكنك تجديد المفاتيح الوظيفية والمضيفة برمجيا أو إنشاء مفاتيح جديدة باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:
- إنشاء بيانات سرية للدالة أو تحديثها
- إنشاء فتحة البيانات السرية للوظيفة أو تحديثها
- إنشاء سر المضيف أو تحديثه
- إنشاء فتحة سرية للمضيف أو تحديثها
لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.
يمكنك استخدام هذه الطرق للحصول على مفاتيح الوصول دون الحاجة إلى إنشاء استدعاءات إلى واجهات برمجة تطبيقات REST يدويا.
- مدخل Microsoft Azure
- Azure CLI
- Azure PowerShell
سجل الدخول إلى مدخل Microsoft Azure، ثم ابحث عن تطبيق الوظائف وحدده.
حدد تطبيق الوظائف الذي تريد العمل معه.
في القائمة اليمنى، قم بتوسيع الوظائف، ثم حدد مفاتيح التطبيق.
تظهر صفحة مفاتيح التطبيق . في هذه الصفحة، يتم عرض مفاتيح المضيف، والتي يمكن استخدامها للوصول إلى أي وظيفة في التطبيق. يتم عرض مفتاح النظام أيضا، والذي يمنح أي شخص حق الوصول على مستوى المسؤول إلى جميع واجهات برمجة التطبيقات لتطبيق الوظائف.
حدد تجديد قيمة المفتاح بجوار المفتاح الذي تريد تجديده، ثم حدد تجديد وحفظ.
يمكنك أيضا تجديد مفتاح وظيفة في علامة التبويب مفاتيح الوظائف لوظيفة معينة يتم تشغيلها بواسطة HTTP.
حذف مفاتيح الوصول
يمكنك حذف المفاتيح الوظيفية والمضيفة برمجيا باستخدام واجهات برمجة تطبيقات Azure Resource Manager هذه:
- حذف البيانات السرية للدالة
- حذف فتحة البيانات السرية للوظيفة
- حذف سر المضيف
- حذف فتحة بيانات المضيف السرية
لمعرفة كيفية استدعاء واجهات برمجة تطبيقات Azure Resource Manager، راجع مرجع Azure REST API.