إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية إنشاء هوية مدارة لتطبيقات "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 عبر نطاق المورد الهدف |
مسؤول التحكم في الوصول المستند إلى الدور أو مسؤول وصول المستخدم |
إضافة يعيِّنها النظام
لتمكين هوية مدارة معينة من قبل النظام، استخدم الإرشادات التالية.
- مدخل Microsoft Azure
- Azure CLI
- Azure PowerShell
- قالب ARM
في مدخل Microsoft Azure، انتقل إلى صفحة التطبيق.
في القائمة اليسرى، حدد Settings>Identity.
في علامة التبويب تعيين النظام ، قم بتبديل الحالة إلى تشغيل. ثم حدد حفظ.
إضافة هوية يُعينها المستخدم
لإنشاء تطبيق بهوية معينة من قبل المستخدم، قم بإنشاء الهوية ثم أضف معرف المورد الخاص به إلى تكوين التطبيق الخاص بك.
- مدخل Microsoft Azure
- Azure CLI
- Azure PowerShell
- قالب ARM
إنشاء مورد هوية مُدارة يعينها المستخدم وفقًا لهذه الإرشادات.
في القائمة اليسرى لصفحة التطبيق، حدد الإعدادات>الهوية.
حدد المستخدم المعين، ثم حدد إضافة.
ابحث عن الهوية التي قمت بإنشائها سابقا، وحددها، ثم حدد إضافة.
بعد الانتهاء من هذه الخطوات، يتم إعادة تشغيل التطبيق.
تكوين المورد الهدف
تحتاج إلى تكوين المورد الهدف للسماح بالوصول من تطبيقك. بالنسبة لمعظم خدمات 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 عند حذف مورد التطبيق نفسه.
- مدخل Microsoft Azure
- Azure CLI
- Azure PowerShell
- قالب ARM
في القائمة اليسرى لصفحة التطبيق، حدد الإعدادات>الهوية.
اتبع الخطوات استنادا إلى نوع الهوية:
- بالنسبة للهوية المعينة من قبل النظام: في علامة التبويب تعيين النظام ، قم بتبديل الحالة إلى إيقاف التشغيل. ثم حدد حفظ.
- بالنسبة للهوية المعينة من قبل المستخدم: حدد علامة التبويب تعيين المستخدم ، وحدد خانة الاختيار للهوية، ثم حدد إزالة. حدد نعم للتأكيد.
ملاحظة
يمكنك أيضا تعيين إعداد تطبيق يعطل خدمة الرمز المميز المحلي فقط: 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)، تُستخدَم الهوية التي يعيّنها النظام.
هام
إذا كنت تحاول الحصول على رموز مميزة للهويات المعينة من قبل المستخدم، فقم بتضمين إحدى الخصائص الاختيارية. وإلا، تحاول خدمة الرمز المميز الحصول على رمز مميز لهوية معينة من قبل النظام، والتي قد تكون موجودة أو غير موجودة.
المحتويات ذات الصلة
ضع في اعتبارك البرامج التعليمية التالية: