كيفية استخدام الهويات المُدارة لـ App Service وAzure Functions
توضح لك هذه المقالة كيفية إنشاء هوية مدارة لتطبيقات App Service وAzure Functions وكيفية استخدامها للوصول إلى موارد أخرى.
هام
لن تتصرف الهويات المدارة لخدمة التطبيقات ووظائف Azure كما هو متوقع إذا تم ترحيل تطبيقك عبر الاشتراكات/المستأجرين. يحتاج التطبيق إلى الحصول على هوية جديدة ، والتي تتم عن طريق تعطيل الميزة وإعادة تمكينها. تحتاج موارد المصب أيضا إلى تحديث سياسات الوصول لاستخدام الهوية الجديدة.
ملاحظة
لا تتوفر الهويات المدارة للتطبيقات التي تم نشرها في Azure Arc.
تسمح الهوية المدارة من Azure Active Directory (Azure AD) لتطبيقك بالوصول بسهولة إلى الموارد الأخرى المحمية Azure AD مثل Azure Key Vault. تتم إدارة الهوية بواسطة النظام الأساسي Azure ولا يتطلب منك توفير أي أسرار أو تدويرها. لمزيد من المعلومات حول الهويات المُدارة في Microsoft Azure AD، راجع Managed identities for Azure resources.
يمكن منح تطبيقك نوعين من الهويات:
- ترتبط الهوية التي يعيّنها النظام بالتطبيق الخاص بك ويتم حذفها إذا تم حذف التطبيق الخاص بك. يمكن أن يكون للتطبيق هوية واحدة مخصصة من قبل النظام.
- الهوية التي يعيّنها المستخدم هي مورد Azure مستقل يمكن تعيينه لتطبيقك. يمكن أن يحتوي التطبيق على هويات متعددة مخصصة للمستخدم.
إضافة يعيِّنها النظام
في شريط التنقل الأيمن من صفحة تطبيقك، مرر لأسفل وصولا إلى المجموعة الإعدادات.
حدد الهوية.
ضمن علامة التبويب "النظام المعين "، قم بتبديل الحالة إلى تشغيل. انقر فوق Save.

ملاحظة
للعثور على الهوية المدارة لتطبيق الويب أو تطبيق الفتحة في مدخل Azure، ضمن تطبيقات المؤسسة، ابحث في قسم إعدادات المستخدم . عادة ما يكون اسم الفتحة مشابها ل <app name>/slots/<slot name>.
إضافة هوية يُعينها المستخدم
يتطلب إنشاء تطبيق بهوية معينة من قبل المستخدم إنشاء الهوية ثم إضافة معرف المورد الخاص به إلى تكوين التطبيق.
أولا، ستحتاج إلى إنشاء مورد هوية معين من قبل المستخدم.
أنشئ مورد هوية مدارا معينا من قبل المستخدم وفقا لهذه الإرشادات.
في شريط التنقل الأيمن لصفحة تطبيقك، مرر لأسفل وصولا إلى مجموعة الإعدادات.
حدد الهوية.
ضمن علامة التبويب المستخدم المعين ، انقر فوق إضافة.
ابحث عن الهوية التي أنشأتها سابقا وحددها. انقر فوق Add.

هام
إذا قمت بتحديد إضافة بعد تحديد هوية معينة من قبل المستخدم لإضافتها، إعادة تشغيل التطبيق الخاص بك.
تكوين المورد الهدف
قد تحتاج إلى تكوين المورد المستهدف للسماح بالوصول من تطبيقك أو دالتك. على سبيل المثال، إذا طلبت رمزا مميزا للوصول إلى Key Vault، فيجب عليك أيضا إضافة سياسة وصول تتضمن الهوية المدارة لتطبيقك أو وظيفتك. خلاف ذلك ، سيتم رفض مكالماتك إلى Key Vault ، حتى إذا كنت تستخدم رمزا مميزا صالحا. وينطبق الشيء نفسه على قاعدة بيانات Azure SQL. لمعرفة المزيد حول الموارد التي تدعم الرموز المميزة ل Azure Active Directory، راجع خدمات Azure التي تدعم مصادقة Azure AD.
هام
تحتفظ الخدمات الخلفية للهويات المدارة بذاكرة تخزين مؤقت لكل مورد URI لمدة 24 ساعة تقريبا. إذا قمت بتحديث سياسة الوصول لمورد مستهدف معين واسترداد رمز مميز لهذا المورد على الفور، فيمكنك الاستمرار في الحصول على رمز مميز مخزن مؤقتا بأذونات قديمة حتى تنتهي صلاحية هذا الرمز المميز. لا توجد حاليا طريقة لفرض تحديث رمزي.
الاتصال إلى خدمات Azure في التعليمات البرمجية للتطبيق
باستخدام هويته المدارة، يمكن للتطبيق الحصول على رموز مميزة لموارد Azure المحمية بواسطة Azure Active Directory، مثل قاعدة بيانات Azure SQL وAzure Key Vault وAzure Storage. تمثل هذه الرموز المميزة التطبيق الذي يصل إلى المورد، وليس أي مستخدم محدد للتطبيق.
توفر خدمة التطبيق ووظائف Azure نقطة نهاية REST يمكن الوصول إليها داخليا لاسترداد الرمز المميز. يمكن الوصول إلى نقطة نهاية REST من داخل التطبيق باستخدام HTTP GET قياسي ، والذي يمكن تنفيذه باستخدام عميل HTTP عام بكل لغة. بالنسبة إلى .NET وJavaScript وJava وPython، توفر مكتبة عميل Azure Identity تجريدا عبر نقطة نهاية REST هذه وتبسط تجربة التطوير. يعد الاتصال بخدمات Azure الأخرى أمرا بسيطا مثل إضافة كائن بيانات اعتماد إلى العميل الخاص بالخدمة.
يبدو طلب HTTP GET الخام مثل المثال التالي:
GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
وقد تبدو استجابة العينة كما يلي:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJ0eXAi…",
"expires_on": "1586984735",
"resource": "https://vault.azure.net",
"token_type": "Bearer",
"client_id": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}
هذه الاستجابة هي نفسها الاستجابة لطلب الرمز المميز للوصول إلى خدمة إلى خدمة Azure AD. للوصول إلى Key Vault ، ستضيف بعد ذلك قيمة access_token إلى اتصال عميل بالخزانة.
لمزيد من المعلومات حول نقطة نهاية REST، راجع مرجع نقطة نهاية REST.
إزالة الهوية
عند إزالة هوية معينة من قبل النظام، يتم حذفها من Azure Active Directory. تتم أيضا إزالة الهويات المعينة من قبل النظام تلقائيا من Azure Active Directory عند حذف مورد التطبيق نفسه.
في شريط التنقل الأيمن من صفحة تطبيقك، مرر لأسفل وصولا إلى المجموعة الإعدادات.
حدد الهوية. ثم اتبع الخطوات استنادا إلى نوع الهوية:
- الهوية المعينة للنظام: ضمن علامة التبويب " النظام المعين" ، قم بتبديل الحالة إلى إيقاف التشغيل. انقر فوق Save.
- الهوية المعينة من قبل المستخدم: انقر فوق علامة التبويب المعينة من قبل المستخدم، وحدد خانة الاختيار الخاصة بالهوية، ثم انقر على إزالة. حدد «نعم» للتأكيد.
ملاحظة
هناك أيضا إعداد تطبيق يمكن تعيينه ، WEBSITE_DISABLE_MSI ، والذي يقوم فقط بتعطيل خدمة الرمز المميز المحلي. ومع ذلك ، فإنه يترك الهوية في مكانها ، وستظل الأدوات تظهر الهوية المدارة على أنها "قيد التشغيل" أو "ممكنة". ونتيجة لذلك، لا ينصح باستخدام هذا الإعداد.
مرجع نقطة نهاية REST
يتيح التطبيق ذو الهوية المدارة نقطة النهاية هذه من خلال تحديد متغيرين للبيئة:
- IDENTITY_ENDPOINT - عنوان URL لخدمة الرمز المميز المحلي.
- IDENTITY_HEADER - رأس يستخدم للمساعدة في تخفيف هجمات تزوير الطلبات من جانب الخادم (SSRF). يتم تدوير القيمة بواسطة النظام الأساسي.
IDENTITY_ENDPOINT هو عنوان URL محلي يمكن لتطبيقك من خلاله طلب الرموز المميزة. للحصول على رمز مميز لأحد الموردين، قم بإجراء طلب HTTP GET إلى نقطة النهاية هذه، بما في ذلك المعلمات التالية:
اسم المعلمة في الوصف المورد الاستعلام Azure AD مورد URI للمورد الذي يجب الحصول على رمز مميز له. قد تكون هذه إحدى خدمات Azure التي تدعم مصادقة Azure AD أو أي مورد URI آخر. api-version الاستعلام إصدار واجهة برمجة تطبيقات الرمز المميز المراد استخدامه. استخدم "2019-08-01" أو إصدار أحدث. رأس الهوية X الرأس قيمة متغير البيئة IDENTITY_HEADER. يستخدم هذا الرأس للمساعدة في تخفيف هجمات تزوير الطلبات (SSRF) من جانب الخادم. client_id الاستعلام (اختياري) معرف العميل للهوية المعينة من قبل المستخدم لاستخدامها. لا يمكن استخدامها بناء على طلب يتضمن principal_id،mi_res_idأوobject_id. إذا تم حذف كافة معلمات المعرف (client_id، ،principal_idobject_id، و) ،mi_res_idفسيتم استخدام الهوية المعينة من قبل النظام.principal_id الاستعلام (اختياري) المعرف الرئيسي للهوية المعينة من قبل المستخدم لاستخدامها. object_idهو اسم مستعار يمكن استخدامه بدلا من ذلك. لا يمكن استخدامها بناء على طلب يتضمن client_id أو mi_res_id أو object_id. إذا تم حذف كافة معلمات المعرف (client_id، ،principal_idobject_id، و) ،mi_res_idفسيتم استخدام الهوية المعينة من قبل النظام.mi_res_id الاستعلام (اختياري) معرف مورد Azure للهوية المعينة من قبل المستخدم لاستخدامها. لا يمكن استخدامها بناء على طلب يتضمن principal_id،client_idأوobject_id. إذا تم حذف كافة معلمات المعرف (client_id، ،principal_idobject_id، و) ،mi_res_idفسيتم استخدام الهوية المعينة من قبل النظام.
هام
إذا كنت تحاول الحصول على رموز مميزة للهويات المعينة من قبل المستخدم، فيجب عليك تضمين إحدى الخصائص الاختيارية. وإلا ستحاول خدمة الرمز المميز الحصول على رمز مميز لهوية معينة من قبل النظام، والتي قد تكون موجودة أو غير موجودة.