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

توفر الهويات المدارة لموارد Azure خدمات Azure بهوية مدارة تلقائيا في Microsoft Entra ID. يمكنك استخدام هذه الهوية للمصادقة على أي خدمة مثل ناقل خدمة Azure التي تدعم مصادقة Microsoft Entra، دون وجود بيانات اعتماد في التعليمات البرمجية الخاصة بك. إذا لم تكن على دراية بالهويات المدارة، فشاهد الهويات المدارة لموارد Azure قبل المتابعة لقراءة هذه المقالة.

فيما يلي الخطوات عالية المستوى لاستخدام هوية مدارة للوصول إلى كيان ناقل خدمة Microsoft Azure:

  1. تمكين الهوية المدارة لتطبيق العميل أو البيئة الخاصة بك. على سبيل المثال، قم بتمكين الهوية المدارة لتطبيق Azure App Service أو تطبيق Azure Functions أو جهاز ظاهري يتم تشغيل تطبيقك فيه. فيما يلي المقالات التي تساعدك في هذه الخطوة:

  2. قم بتعيين ناقل خدمة Azure Data Owner أو ناقل خدمة Azure Data Sender أو ناقل خدمة Azure Data Receiver إلى الهوية المدارة في النطاق المناسب (اشتراك Azure أو مجموعة الموارد أو مساحة اسم ناقل الخدمة أو قائمة انتظار أو موضوع ناقل الخدمة). للحصول على إرشادات لتعيين دور لهوية مدارة، راجع تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

  3. في التطبيق الخاص بك، استخدم الهوية المدارة ونقطة النهاية إلى مساحة اسم ناقل خدمة Microsoft Azure للاتصال بمساحة الاسم.

    على سبيل المثال، في .NET، يمكنك استخدام الدالة الإنشائية ServiceBusClient التي تأخذ TokenCredential و fullyQualifiedNamespace (سلسلة، على سبيل المثال: cotosons.servicebus.windows.net) المعلمات للاتصال بناقل الخدمة باستخدام الهوية المدارة. يمكنك تمرير DefaultAzureCredential، الذي يستمد من TokenCredential الهوية المدارة ويستخدمها. في DefaultAzureCredentialOptions، قم بتعيين ManagedIdentityClientId إلى معرف الهوية المدارة للعميل.

    string fullyQualifiedNamespace = "<your namespace>.servicebus.windows.net>";
    string userAssignedClientId = "<your managed identity client ID>";
    
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = userAssignedClientId
        });
    
    var sbusClient = new ServiceBusClient(fullyQualifiedNamespace, credential);
    

    هام

    يمكنك تعطيل مصادقة المفتاح المحلي أو SAS لمساحة اسم ناقل خدمة Microsoft Azure والسماح بمصادقة Microsoft Entra فقط. للحصول على إرشادات خطوة بخطوة، راجع "Disable local authentication".

أدوار Azure المضمنة لناقل خدمة Azure

يخول Microsoft Entra الوصول إلى الموارد الآمنة من خلال التحكم في الوصول استنادا إلى الدور (RBAC) في Azure. يحدد ناقل خدمة Azure مجموعة من الأدوار المضمنة في Azure التي تشمل مجموعات شائعة من الأذونات المستخدمة للوصول إلى كيانات ناقل خدمة Microsoft Azure. يمكنك أيضا تحديد أدوار مخصصة للوصول إلى البيانات.

يوفر Azure الأدوار المضمنة التالية في Azure لتخويل الوصول إلى مساحة اسم ناقل خدمة Microsoft Azure:

  • Azure Service Bus Data Owner: استخدم هذا الدور للسماح بالوصول الكامل إلى مساحة اسم ناقل الخدمة وكياناتها (قوائم الانتظار والمواضيع والاشتراكات وعوامل التصفية)
  • Azure Service Bus Data Sender: استخدم هذا الدور للسماح بإرسال الرسائل إلى قوائم انتظار وموضوعات ناقل خدمة Microsoft Azure.
  • Azure Service Bus Data Receiver: استخدم هذا الدور للسماح بتلقي الرسائل من قوائم انتظار واشتراكات ناقل خدمة Microsoft Azure.

لتعيين دور لهوية مدارة في مدخل Microsoft Azure، استخدم صفحة التحكم في الوصول (IAM). انتقل إلى هذه الصفحة عن طريق تحديد Access control (IAM) في صفحة Namespace ناقل خدمة Microsoft Azure أو صفحة قائمة انتظار ناقل خدمة Microsoft Azure أو صفحة موضوع ناقل الخدمة. للحصول على إرشادات خطوة بخطوة لتعيين دور، راجع تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

نطاق المورد

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

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

  • قائمة انتظار أو موضوع أو اشتراك: ينطبق تعيين الدور على كيان ناقل خدمة المُحدد.

  • مساحة اسم ناقل الخدمة: يمتد تعيين الدور على المخطط بأكمله لناقل خدمة Microsoft Azure ضمن مساحة الاسم.

  • مجموعة الموارد: ينطبق تعيين الدور على جميع موارد "ناقل الخدمة" ضمن مجموعة الموارد.

  • الاشتراك: ينطبق تعيين الدور على جميع موارد "ناقل الخدمة" في جميع مجموعات الموارد في الاشتراك.

    إشعار

    ضع في عين الاعتبار أن تعيينات دور Azure قد تستغرق ما يصل إلى خمس دقائق للنشر.

حاليا، لا يدعم مدخل Microsoft Azure تعيين المستخدمين أو المجموعات أو الهويات المدارة لأدوار Azure لناقل خدمة Microsoft Azure على مستوى اشتراك الموضوع. إليك مثال على استخدام الأمر Azure CLI: az-role-assignment-create لتعيين هوية لدور ناقل خدمة Azure:

az role assignment create \
    --role $service_bus_role \
    --assignee $assignee_id \
    --scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription

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

استخدام SDKs

في .NET، تتم تهيئة الكائن ServiceBusClient باستخدام منشئ يأخذ مساحة اسم مؤهلة TokenCredentialبالكامل و. مشتق DefaultAzureCredential من TokenCredential، والذي يستخدم تلقائيا الهوية المدارة المكونة للتطبيق. يتم معالجة تدفق سياق الهوية المُدارة إلى "ناقل الخدمة" و"تأكيد اتصال التخويل" تلقائياً بواسطة بيانات اعتماد الرمز المميز. إنه نموذج أبسط من استخدام SAS.

var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());

يمكنك إرسال واستقبال الرسائل كالمعتاد باستخدام ServiceBusSender وServiceBusReceiver أو ServiceBusProcessor.

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

إشعار

تعمل الهوية المُدارة فقط داخل بيئة Azure، وعلى خدمات التطبيقات، وأجهزة Azure الظاهرية، ومجموعات القياس. بالنسبة لتطبيقات .NET، توفر مكتبة Microsoft.Azure.Services.AppAuthentication، التي تستخدمها حزمة NuGet لناقل الخدمة، تجريداً عبر هذا البروتوكول وتدعم تجربة تطوير محلية. تسمح لك هذه المكتبة أيضاً باختبار التعليمات البرمجية محلياً على جهاز التطوير الخاص بك، باستخدام حساب المستخدم الخاص بك من Visual Studio أو Azure CLI 2.0 أو مصادقة Active Directory المتكاملة. لمزيد من الاطلاع على خيارات التطوير المحلية مع هذه المكتبة، راجع مصادقة الخدمة إلى خدمة Azure Key Vault باستخدام .NET.

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

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