مصادقة هوية مدارة باستخدام معرف Microsoft Entra للوصول إلى موارد Azure Relay

الهويات المُدارة لموارد Azure هي ميزة عبر Azure تمكنك من إنشاء هوية آمنة مقترنة بالنشر الذي يتم تشغيل التعليمات البرمجية للتطبيق ضمنه. يمكنك بعد ذلك إقران هذه الهوية بأدوار التحكم في الوصول الذي يمنح أذونات مخصصة للوصول إلى موارد Azure المُحددة التي يحتاجها التطبيق الخاص بك.

باستخدام الهويات المُدارة، يقوم النظام الأساسي Azure بإدارة هذه الهوية وقت التشغيل. لا تحتاج إلى تخزين مفاتيح الوصول وحمايتها في التعليمات البرمجية للتطبيق أو التكوين، إما للهوية نفسها، أو للموارد التي تحتاج إلى الوصول إليها. لا يحتاج تطبيق عميل Relay الذي يعمل داخل تطبيق Azure App Service أو في جهاز ظاهري مع كيانات مدارة ممكنة لدعم موارد Azure إلى معالجة قواعد ومفاتيح SAS، أو أي رموز وصول مميزة أخرى. يحتاج تطبيق العميل فقط إلى عنوان نقطة النهاية لمساحة اسم الترحيل. عند اتصال التطبيق، يربط Relay سياق الكيان المدار بالعميل في عملية تظهر في مثال لاحقا في هذه المقالة. بمجرد إقرانه بهوية مدارة، يمكن لعميل Relay الخاص بك القيام بجميع العمليات المصرح بها. يتم منح التخويل عن طريق ربط كيان مدار بأدوار Relay.

إشعار

تتوفر هذه الميزة بشكل عام في جميع المناطق بما في ذلك Microsoft Azure المشغل بواسطة 21Vianet.

نظرة عامة

عندما يحاول كيان أمان (مستخدم أو مجموعة أو تطبيق) الوصول إلى كيان Relay، يجب أن يكون الطلب مصرحا به. باستخدام معرف Microsoft Entra، يعد الوصول إلى مورد عملية من خطوتين.

  1. أولا، تتم مصادقة هوية أساس الأمان، ويتم إرجاع رمز OAuth 2.0 المميز. اسم المورد لطلب رمز مميز هو https://relay.azure.net. إذا كان أحد التطبيقات قيد التشغيل داخل كيان Azure مثل Azure VM أو مجموعة مقياس الجهاز الظاهري أو تطبيق Azure Function، فيمكنه استخدام هوية مدارة للوصول إلى الموارد.
  2. بعد ذلك، يتم تمرير الرمز المميز كجزء من طلب إلى خدمة Relay لتخويل الوصول إلى المورد المحدد (الاتصالات المختلطة، ترحيلات WCF). تخول Microsoft Entra حقوق الوصول إلى الموارد الآمنة من خلال التحكم في الوصول المستند إلى الدور Azure (Azure RBAC). يحدد Azure Relay مجموعة من الأدوار المضمنة في Azure التي تشمل مجموعات شائعة من الأذونات المستخدمة للوصول إلى كيانات الترحيل. يمكنك أيضا تحديد أدوار مخصصة للوصول إلى البيانات. للحصول على قائمة بالأدوار المضمنة التي يدعمها Azure Relay، راجع أدوار Azure المضمنة ل Azure Relay. يمكن أيضا للتطبيقات الأصلية وتطبيقات الويب التي تقدم طلبات إلى Relay التخويل باستخدام معرف Microsoft Entra.

أدوار Azure المضمنة ل Azure Relay

بالنسبة إلى Azure Relay، فإن إدارة مساحات الأسماء وجميع الموارد ذات الصلة من خلال مدخل Microsoft Azure وواجهة برمجة تطبيقات إدارة موارد Azure محمية بالفعل باستخدام نموذج Azure RBAC. يوفر Azure الأدوار المضمنة أدناه ل Azure لتخويل الوصول إلى مساحة اسم Relay:

الدور ‏‏الوصف
مالك Azure Relay استخدم هذا الدور لمنح حق الوصول الكامل إلى موارد Azure Relay.
مستمع Azure Relay استخدم هذا الدور لمنح حق الوصول إلى قراءة الكيان والاستماع إلى موارد Azure Relay.
مرسل ترحيل Azure استخدم هذا الدور لمنح وصول الإرسال وقراءة الكيان إلى موارد Azure Relay.

نطاق المورد

قبل تعيين دور Azure إلى أساس أمان، حدد نطاق الوصول الذي يجب أن يكون لأساس الأمان. تملي أفضل الممارسات أنه من الأفضل دائما منح أضيق نطاق ممكن فقط.

تصف القائمة التالية المستويات التي يمكنك من خلالها تحديد نطاق الوصول إلى موارد Azure Relay، بدءا من النطاق الأضيق:

  • كيانات الترحيل: ينطبق تعيين الدور على كيان ترحيل معين مثل اتصال مختلط أو ترحيل WCF.
  • مساحة اسم الترحيل: ينطبق تعيين الدور على كافة كيانات الترحيل ضمن مساحة الاسم.
  • مجموعة الموارد: ينطبق تعيين الدور على جميع موارد الترحيل ضمن مجموعة الموارد.
  • الاشتراك: ينطبق تعيين الدور على جميع موارد الترحيل في جميع مجموعات الموارد في الاشتراك.

إشعار

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

تمكين الهوية المُدارة

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

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

تعيين دور Azure Relay إلى الهوية المدارة

بعد تمكين الهوية المدارة، قم بتعيين أحد أدوار Azure Relay (مالك Azure Relay أو Azure Relay Listener أو Azure Relay Sender) إلى الهوية في النطاق المناسب. عند تعيين دور Azure إلى هوية مدارة، يتم منح الهوية المدارة حق الوصول إلى كيانات الترحيل في النطاق المناسب.

يستخدم القسم التالي تطبيقا بسيطا يعمل ضمن هوية مدارة على مثيل Azure VM ويوصول إلى موارد Relay.

نموذج التطبيق على الجهاز الظاهري الذي يصل إلى كيانات الترحيل

  1. قم بتنزيل نموذج تطبيق وحدة تحكم الاتصالات المختلطة إلى الكمبيوتر الخاص بك من GitHub.

  2. إنشاء جهاز Azure ظاهري. بالنسبة لهذا النموذج، استخدم صورة Windows 10.

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

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

  5. أنشئ تطبيق وحدة التحكم محليا على الكمبيوتر المحلي وفقا للإرشادات الواردة من مستند README.

  6. انسخ الملف القابل للتنفيذ ضمن <المجلد local path>\RoleBasedAccessControl\bin\Debug إلى الجهاز الظاهري. يمكنك استخدام RDP للاتصال بجهاز Azure الظاهري. للمزيد من المعلومات، اطلع على كيفية الاتصال بجهاز Azure الظاهري الذي يعمل بنظام التشغيل Windows وتسجيل الدخول إليه.

  7. قم بتشغيل RoleBasedAccessControl.exe على Azure VM وفقا للإرشادات الواردة من مستند README.

    إشعار

    اتبع نفس الخطوات لتشغيل تطبيق وحدة التحكم ل WCF Relays.

التعليمات البرمجية المميزة من النموذج

إليك التعليمات البرمجية من العينة التي توضح كيفية استخدام مصادقة Microsoft Entra للاتصال بخدمة Azure Relay.

  1. إنشاء كائن TokenProvider باستخدام TokenProvider.CreateManagedIdentityTokenProvider الأسلوب .

    • إذا كنت تستخدم هوية مدارة معينة من قبل النظام:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • إذا كنت تستخدم هوية مدارة معينة من قبل المستخدم، فاحصل على معرف العميل للهوية المعينة من قبل المستخدم من صفحة الهوية المدارة في مدخل Microsoft Azure. للحصول على الإرشادات، راجع سرد الهويات المدارة المعينة من قبل المستخدم.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. إنشاء كائن HybridConnectionListener أو HybridConnectionClient عن طريق تمرير URI الاتصال المختلط وموفر الرمز المميز الذي قمت بإنشائه في الخطوة السابقة.

    المستمع:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    المرسل:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

العينات

  • الاتصالات المختلطة: .NET وJava وJavaScript
  • WCF Relay: .NET

الخطوات التالية

لمعرفة المزيد حول Azure Relay، راجع المقالات التالية.