استخدام الهويات المدارة ل App Service ودالات Azure

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

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

يمكنك منح نوعين من الهويات لتطبيقك:

  • ترتبط الهوية المعينة من قبل النظام للتطبيق ويتم حذفها إذا تم حذف التطبيق. يمكن أن يكون للتطبيق هوية واحدة فقط يعينها النظام.
  • الهوية التي يعيّنها المستخدم هي مورد Azure مستقل يمكن تعيينه لتطبيقك. يمكن أن يكون للتطبيق هويات متعددة يعينها المستخدم. يمكن تعيين هوية واحدة يعينها المستخدم لموارد Azure متعددة، مثل تطبيقي App Service.

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

ملاحظة

لا تتوفر الهويات المدارة للتطبيقات المنشورة في Azure Arc.

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

المتطلبات الأساسية

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

السيناريو الإذن المطلوب مثال على الأدوار المضمنة
إنشاء هوية معينة من قبل النظام Microsoft.Web/sites/write عبر التطبيق، أو Microsoft.Web/sites/slots/write فوق الفتحة مساهم في موقع الويب
إنشاء هوية معينة من قبل المستخدم Microsoft.ManagedIdentity/userAssignedIdentities/write عبر مجموعة الموارد التي يتم فيها إنشاء الهوية مساهم الهوية المدارة
تعيين هوية معينة من قبل المستخدم لتطبيقك Microsoft.Web/sites/write عبر التطبيق، Microsoft.Web/sites/slots/write أو فوق الفتحة، أو
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action عبر الهوية
المساهم في موقع الويبوعامل تشغيل الهوية المدارة
إنشاء تعيينات دور Azure Microsoft.Authorization/roleAssignments/write عبر نطاق المورد الهدف مسؤول التحكم في الوصول المستند إلى الدور أو مسؤول وصول المستخدم

إضافة يعيِّنها النظام

لتمكين هوية مدارة معينة من قبل النظام، استخدم الإرشادات التالية.

  1. في مدخل Microsoft Azure، انتقل إلى صفحة التطبيق.

  2. في القائمة اليسرى، حدد Settings>Identity.

  3. في علامة التبويب تعيين النظام ، قم بتبديل الحالة إلى تشغيل. ثم حدد حفظ.

إضافة هوية يُعينها المستخدم

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

  1. إنشاء مورد هوية مُدارة يعينها المستخدم وفقًا لهذه الإرشادات.

  2. في القائمة اليسرى لصفحة التطبيق، حدد الإعدادات>الهوية.

  3. حدد المستخدم المعين، ثم حدد إضافة.

  4. ابحث عن الهوية التي قمت بإنشائها سابقا، وحددها، ثم حدد إضافة.

بعد الانتهاء من هذه الخطوات، يتم إعادة تشغيل التطبيق.

تكوين المورد الهدف

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

تستخدم بعض الخدمات آليات أخرى غير التحكم في الوصول المستند إلى الدور في Azure. لفهم كيفية تكوين الوصول باستخدام هوية، راجع الوثائق لكل مورد هدف. لمعرفة المزيد حول الموارد التي تدعم رموز Microsoft Entra المميزة، راجع خدمات Azure التي تدعم مصادقة Microsoft Entra.

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

هام

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

للحصول على بدائل للمجموعات أو عضويات الأدوار، راجع تقييد استخدام الهويات المدارة للتخويل.

الاتصال بخدمات Azure باستخدام التعليمات البرمجية للتطبيق

باستخدام هويته المدارة، يمكن للتطبيق الحصول على رموز مميزة لموارد Azure التي يساعد معرف Microsoft Entra في حمايتها، مثل قاعدة بيانات Azure SQL وAzure Key Vault وتخزين Azure. تمثل هذه الرموز المميزة التطبيق الذي يصل إلى المورد، وليس أي مستخدم محدد للتطبيق.

توفر App Service ودالات 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: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>

قد تبدو عينة الاستجابة مثل المثال التالي:

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": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

هذه الاستجابة هي نفس الاستجابة لطلب الرمز المميز للوصول من خدمة إلى خدمة Microsoft Entra. للوصول إلى Key Vault، أضف قيمة access_token إلى اتصال عميل بالمخزن.

لمزيد من المعلومات حول نقطة نهاية REST، راجع مرجع نقطة نهاية REST لاحقا في هذه المقالة.

إزالة هوية

عند إزالة هوية معينة من قبل النظام، يتم حذفها من معرف Microsoft Entra. تتم أيضا إزالة الهويات المعينة من قبل النظام تلقائيا من معرف Microsoft Entra عند حذف مورد التطبيق نفسه.

  1. في القائمة اليسرى لصفحة التطبيق، حدد الإعدادات>الهوية.

  2. اتبع الخطوات استنادا إلى نوع الهوية:

    • بالنسبة للهوية المعينة من قبل النظام: في علامة التبويب تعيين النظام ، قم بتبديل الحالة إلى إيقاف التشغيل. ثم حدد حفظ.
    • بالنسبة للهوية المعينة من قبل المستخدم: حدد علامة التبويب تعيين المستخدم ، وحدد خانة الاختيار للهوية، ثم حدد إزالة. حدد نعم للتأكيد.

ملاحظة

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

مرجع نقطة نهاية REST

التطبيق الذي له هوية مدارة يجعل نقطة النهاية هذه متاحة عن طريق تحديد متغيرين للبيئة:

  • IDENTITY_ENDPOINT: عنوان URL لخدمة الرمز المميز المحلي.
  • IDENTITY_HEADER: عنوان يمكن أن يساعد في التخفيف من هجمات تزييف الطلبات من جانب الخادم (SSRF). يقوم النظام الأساسي بتدوير القيمة.

IDENTITY_ENDPOINT المتغير هو عنوان URL محلي يمكن لتطبيقك طلب الرموز المميزة منه. للحصول على رمز مميز لمورد، قم بإجراء طلب HTTP GET إلى نقطة النهاية هذه. قم بتضمين المعلمات التالية:

اسم المعلمة في الوصف
resource الاستعلام URI لمورد Microsoft Entra للمورد الذي يجب الحصول على رمز مميز له. قد يكون هذا المورد إحدى خدمات Azure التي تدعم مصادقة Microsoft Entra أو أي مورد URI آخر.
api-version الاستعلام إصدار واجهة برمجة تطبيقات الرمز المميز الذي يُستخدَم. استخدم 2019-08-01.
X-IDENTITY-HEADER راس قيمة متغير بيئة IDENTITY_HEADER. يتم استخدام هذا العنوان للمساعدة في التخفيف من هجمات SSRF.
client_id الاستعلام (اختياري) مُعرِّف العميل للهوية التي يعيّنها المستخدم المطلوب استخدامه. لا يمكن استخدامه على طلب يتضمن principal_idأو mi_res_idأو object_id. في حال حذف جميع معلمات المُعرِّف (client_id وprincipal_id وobject_id وmi_res_id)، تُستخدَم الهوية التي يعيّنها النظام.
principal_id الاستعلام (اختياري) المُعرِّف الأساسي للهوية التي يعيّنها المستخدم المطلوب استخدامه. object_id المعلمة هي اسم مستعار يمكن استخدامه بدلا من ذلك. لا يمكن استخدامه على طلب يتضمن client_idأو mi_res_idأو object_id. في حال حذف جميع معلمات المُعرِّف (client_id وprincipal_id وobject_id وmi_res_id)، تُستخدَم الهوية التي يعيّنها النظام.
mi_res_id الاستعلام (اختياري) مُعرِّف مورد Azure للهوية التي يعيّنها المستخدم المطلوب استخدامه. لا يمكن استخدامه على طلب يتضمن principal_idأو client_idأو object_id. في حال حذف جميع معلمات المُعرِّف (client_id وprincipal_id وobject_id وmi_res_id)، تُستخدَم الهوية التي يعيّنها النظام.

هام

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

ضع في اعتبارك البرامج التعليمية التالية: