كيفية استخدام الهويات المُدارة لـ App Service وAzure Functions
إشعار
بدءا من 1 يونيو 2024، يمكن لتطبيقات App Service التي تم إنشاؤها حديثا إنشاء اسم مضيف افتراضي فريد يستخدم اصطلاح <app-name>-<random-hash>.<region>.azurewebsites.net
التسمية . تظل أسماء التطبيقات الحالية دون تغيير. على سبيل المثال:
myapp-ds27dh7271aah175.westus-01.azurewebsites.net
لمزيد من المعلومات، راجع اسم المضيف الافتراضي الفريد لمورد App Service.
توضح لك هذه المقالة كيفية إنشاء هوية مُدارة لتطبيقات App Service وAzure Functions وكيفية استخدامها للوصول إلى الموارد الأخرى.
هام
نظرا لأن الهويات المدارة لا تدعم سيناريوهات الدلائل المشتركة، فلن تتصرف كما هو متوقع إذا تم ترحيل تطبيقك عبر الاشتراكات أو المستأجرين. لإعادة إنشاء الهويات المدارة بعد مثل هذه الخطوة، راجع هل ستتم إعادة إنشاء الهويات المدارة تلقائيا إذا قمت بنقل اشتراك إلى دليل آخر؟. تحتاج موارد انتقال البيانات من الخادم أيضًا إلى تحديث نهج الوصول لاستخدام الهوية الجديدة.
إشعار
الهويات المُدارة غير متاحة للتطبيقات التي تم توزيعها في Azure Arc.
تسمح الهوية المدارة من معرف Microsoft Entra لتطبيقك بالوصول بسهولة إلى موارد Microsoft Entra المحمية الأخرى مثل Azure Key Vault. تتم إدارة الهوية بواسطة النظام الأساسي Azure ولا يتطلب منك توفير أي أسرار أو تدويرها. لمزيد من الاطلاع على الهويات المدارة في معرف Microsoft Entra، راجع الهويات المدارة لموارد Azure.
يمكن منح طلبك نوعين من الهويات:
- ترتبط الهوية المعينة من قبل النظام للتطبيق ويتم حذفها إذا تم حذف التطبيق. يمكن أن يكون للتطبيق هوية واحدة معينة من قبل النظام.
- الهوية التي يعيّنها المستخدم هي مورد Azure مستقل يمكن تعيينه لتطبيقك. يمكن أن يكون للتطبيق هويات متعددة يعينها المستخدم، ويمكن تعيين هوية واحدة يعينها المستخدم لموارد Azure متعددة، مثل تطبيقي App Service.
تكوين الهوية المدارة خاص بالفتحة. لتكوين هوية مدارة لفتحة توزيع في المدخل، انتقل إلى الفتحة أولا. للعثور على الهوية المدارة لتطبيق الويب أو فتحة التوزيع في مستأجر Microsoft Entra من مدخل Microsoft Azure، ابحث عنها مباشرة من صفحة نظرة عامة للمستأجر الخاص بك. عادةً ما يكون اسم الفتحة مشابهًا لـ <app-name>/slots/<slot-name>
.
يوضح لك هذا الفيديو كيفية استخدام الهويات المدارة لخدمة التطبيقات.
يتم أيضا وصف الخطوات الواردة في الفيديو في الأقسام التالية.
المتطلبات الأساسية
لتنفيذ الخطوات المغطاة في هذا المستند، يجب أن يكون لديك الحد الأدنى من الأذونات عبر موارد 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 (عبر نطاق المورد الهدف) |
مسؤول التحكم في الوصول المستند إلى الدور أو مسؤول وصول المستخدم |
قد تكون هناك حاجة إلى مجموعة مختلفة من الأذونات للسيناريوهات الأخرى.
إضافة يعيِّنها النظام
لتمكين هوية مدارة معينة من قبل النظام على التطبيق أو الفتحة، تحتاج إلى أذونات الكتابة عبر هذا التطبيق أو الفتحة. يوفر دور مساهم موقع الويب هذه الأذونات.
يمكنك الوصول إلى إعدادات التطبيق في مدخل Microsoft Azure ضمن مجموعة الإعدادات في جزء التنقل الأيمن.
حدد "Identity".
في علامة التبويب النظام المعين، بدِّل الحالة إلى تشغيل. انقر فوق حفظ.
إضافة هوية يُعينها المستخدم
يتطلب إنشاء تطبيق بهوية معينة من قبل المستخدم أن تقوم بإنشاء الهوية ثم إضافة معرف المورد الخاص بها إلى تكوين التطبيق الخاص بك.
لتعيين هوية مدارة يعينها المستخدم لتطبيقك أو فتحتك، تحتاج إلى أذونات الكتابة عبر هذا التطبيق أو الفتحة. يوفر دور مساهم موقع الويب هذه الأذونات. يجب أن يكون لديك أيضا إذن لتعيين الهوية المدارة المعينة من قبل المستخدم التي ستستخدمها. يوفر دور مشغل الهوية المدارة هذه الأذونات.
ستحتاج أولاً إلى إنشاء مورد هوية يعيّنها المستخدم.
إنشاء مورد هوية مُدارة يعينها المستخدم وفقًا لهذه الإرشادات.
في جزء التنقل الأيسر من صفحة التطبيق، مرِّر لأسفل وصولاً إلى مجموعة الإعدادات.
حدد "Identity".
حدد إضافة معينة من قبل>المستخدم.
ابحث عن الهوية التي أنشأتها سابقا، وحددها، وحدد إضافة.
بمجرد تحديد إضافة، يتم إعادة تشغيل التطبيق.
تكوين المورد الهدف
تحتاج إلى تكوين المورد الهدف للسماح بالوصول من تطبيقك. بالنسبة لمعظم خدمات Azure، يمكنك القيام بذلك عن طريق إنشاء تعيين دور. تستخدم بعض الخدمات آليات أخرى غير Azure RBAC. راجع الوثائق الخاصة بكل مورد هدف لفهم كيفية تكوين الوصول باستخدام هوية. لمعرفة المزيد حول الموارد التي تدعم رموز Microsoft Entra المميزة، راجع خدمات Azure التي تدعم مصادقة Microsoft Entra.
على سبيل المثال، إذا طلبت رمزا مميزا للوصول إلى سر في Key Vault، يجب عليك أيضا إنشاء تعيين دور يسمح للهوية المدارة بالعمل مع الأسرار في المخزن الهدف. بخلاف ذلك، سيتم رفض مكالماتك المحولة إلى Key Vault، حتى إن استخدمت رمزًا مميزًا صالحًا. وينطبق الشيء نفسه على قاعدة بيانات Azure SQL والخدمات الأخرى.
هام
تحتفظ الخدمات الخلفية للهويات المُدارة بذاكرة تخزين مؤقت لكل URI للمورد لمدة 24 ساعة تقريباً. وهذا يعني أن الأمر قد يستغرق عدة ساعات حتى تدخل التغييرات على عضوية دور أو مجموعة الهوية المُدارة حيز التنفيذ. اليوم، لا يمكن فرض تحديث الرمز المميز لهوية مُدارة قبل انتهاء صلاحيته. إذا قمت بتغيير عضوية مجموعة أو دور لهوية مدارة لإضافة أذونات أو إزالتها، فقد تحتاج عندئذٍ إلى الانتظار عدة ساعات حتى يتمكن مورد Azure الذي يستخدم الهوية من امتلاك حق الوصول الصحيح. للحصول على بدائل للمجموعات أو عضويات الأدوار، راجع تقييد استخدام الهويات المدارة للتخويل.
الاتصال بخدمات Azure باستخدام التعليمات البرمجية للتطبيق
باستخدام هويته المدارة، يمكن للتطبيق الحصول على رموز مميزة لموارد Azure المحمية بواسطة معرف Microsoft Entra، مثل قاعدة بيانات 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: <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 عند حذف مورد التطبيق نفسه.
لإزالة هوية مدارة من التطبيق أو الفتحة، تحتاج إلى أذونات الكتابة عبر هذا التطبيق أو الفتحة. يوفر دور مساهم موقع الويب هذه الأذونات.
في جزء التنقل الأيمن من صفحة التطبيق، مرِّر لأسفل وصولاً إلى مجموعة الإعدادات.
حدد "Identity". ثم اتبع الخطوات بناءً على نوع الهوية:
- الهوية التي يعيّنها النظام: ضمن علامة التبويب "System assigned"، بدِّل الحالة إلى إيقاف التشغيل. انقر فوق حفظ.
- الهوية التي يعيّنها المستخدم: حدد علامة التبويب "User assigned"، وحدد خانة الاختيار للهوية، وحدد "Remove". حدد نعم للتأكيد.
إشعار
هناك أيضًا إعداد تطبيق يمكن تعيينه، WEBSITE_DISABLE_MSI، والذي يقوم فقط بتعطيل خدمة الرمز المميز المحلي. ومع ذلك، فإنه يترك الهوية في مكانها، وستظل الأدوات تعرض الهوية المدارة على أنها "تشغيل" أو "مُمكّنة". ونتيجة لذلك، لا ينصح باستخدام هذا الإعداد.
مرجع نقطة نهاية REST
يتيح التطبيق الذي يحتوي على هوية مُدارة نقطة النهاية هذه من خلال تحديد متغيرين للبيئة:
- IDENTITY_ENDPOINT - عنوان URL خدمة الرمز المميز المحلي.
- IDENTITY_HEADER - عنوان يستخدم للمساعدة في التخفيف من هجمات تزوير الطلب من جانب الخادم (SSRF). يدير النظام الأساسي القيمة.
IDENTITY_ENDPOINT - عنوان URL المحلي الذي يمكن لتطبيق الحاوية طلب الرموز المميزة منه. للحصول على رمز مميز لمورد، أجرِ طلب HTTP GET إلى نقطة النهاية هذه، بما في ذلك المعلمات التالية:
اسم المعلمة في الوصف resource الاستعلام URI لمورد Microsoft Entra للمورد الذي يجب الحصول على رمز مميز له. قد تكون هذه إحدى خدمات Azure التي تدعم مصادقة Microsoft Entra أو أي مورد URI آخر. نسخة واجهة برمجة التطبيقات الاستعلام إصدار واجهة برمجة تطبيقات الرمز المميز الذي يُستخدَم. استخدم 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
)، تُستخدَم الهوية التي يعيّنها النظام.
هام
في حال محاولة الحصول على رموز مميزة للهويات التي يعيّنها المستخدم، يجب تضمين إحدى الخصائص الاختيارية. وإلا فستحاول خدمة الرمز المميز الحصول على رمز مميز لهوية يعيّنها النظام، وقد يكون موجوداً أو غير موجود.