مشاركة عبر


تسليم الأحداث إلى نقاط النهاية المحمية من Microsoft Entra

توضح هذه المقالة كيفية استخدام معرف Microsoft Entra لتأمين الاتصال بين اشتراك الحدث ونقطة نهاية الإخطار على الويب. يستخدم مدخل Azure للعرض التوضيحي. ومع ذلك يمكن أيضا تمكين الميزة باستخدام CLI أو PowerShell أو SDKs.

هام

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

السيناريوهات

توضح هذه المقالة كيفية تنفيذ السيناريوهين التاليين بالتفصيل:

تسليم الأحداث إلى Webhook في نفس مستأجر Microsoft Entra

يوضح الرسم التخطيطي التالي كيفية تسليم أحداث Event Grid إلى خطاف ويب في نفس المستأجر مثل اشتراك الحدث.

صورة تصور التسليم الآمن للأحداث إلى خطاف الويب الموجود في نفس المستأجر.

يوجد قسمان فرعيان في هذا القسم. اقرأ كل من السيناريوهين أو السيناريو الذي تهتم به.

تكوين اشتراك الحدث باستخدام مستخدم Microsoft Entra

يوضح هذا القسم كيفية تكوين اشتراك الحدث باستخدام مستخدم Microsoft Entra.

  1. إنشاء تطبيق Microsoft Entra لخطاف الويب الذي تم تكوينه للعمل مع Microsoft Entra (مستأجر واحد).

  2. افتح Azure Shell في المستأجر وحدد بيئة PowerShell.

  3. قم بتعديل قيمة $webhookAadTenantId للاتصال بالمستأجر.

    • المتغيرات:
      • $webhookAadTenantId: معرف مستأجر Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. افتح البرنامج النصي التالي ثم حدّث قيم كل من $webhookAppObjectId و$eventSubscriptionWriterUserPrincipalName مستخدماً معرفاتك، ثم تابع تشغيل البرنامج النصي.

    • المتغيرات:
      • $webhookAppObjectId: معرف تطبيق Microsoft Entra الذي تم إنشاؤه للإخطار على الويب
      • $eventSubscriptionWriterUserPrincipalName: الاسم الأساسي لمستخدم Azure للمستخدم الذي ينشئ اشتراك حدث

    إشعار

    لا تحتاج إلى تعديل قيمة $eventGridAppId. في هذا البرنامج النصي، يتم تعيين AzureEventGridSecureWebhookSubscriber $eventGridRoleName. تذكر أنه يجب أن تكون عضوا في دور مسؤول تطبيق Microsoft Entra أو أن تكون مالكا لمدير الخدمة لتطبيق webhook في معرف Microsoft Entra لتنفيذ هذا البرنامج النصي.

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

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. في المدخل، عند إنشاء اشتراك حدث، اتبع الخطوات التالية:

    1. حدد نوع نقطة النهاية باعتبارها إخطار على الويب Web Hook.

    2. وحدد URI لنقطة النهاية.

      اختر إخطار على الويب لنوع نقطة النهاية

    3. حدد تبويب Additional features في أعلى الصفحة Create Event Subscriptions.

    4. من التبويب Additional features نفّذ هذه الخطوات:

      1. حدد استخدام مصادقة Microsoft Entra، وقم بتكوين معرف المستأجر ومعرف التطبيق:

      2. انسخ معرف مستأجر Microsoft Entra من إخراج البرنامج النصي وأدخله في حقل معرف مستأجر Microsoft Entra.

      3. انسخ معرف تطبيق Microsoft Entra من إخراج البرنامج النصي وأدخله في حقل معرف تطبيق Microsoft Entra. يمكنك استخدام معرف تطبيق Microsoft Entra URI بدلا من استخدام معرف التطبيق. لمزيد من المعلومات حول URI معرف التطبيق، راجع هذه المقالة.

        إجراء تأمين الإخطار على الويب

تكوين اشتراك الحدث باستخدام تطبيق Microsoft Entra

يوضح هذا القسم كيفية تكوين اشتراك الحدث باستخدام تطبيق Microsoft Entra.

  1. إنشاء تطبيق Microsoft Entra للكاتب اشتراك شبكة الأحداث الذي تم تكوينه للعمل مع Microsoft Entra (مستأجر واحد).

  2. إنشاء سر لتطبيق Microsoft Entra وحفظ القيمة (تحتاج إلى هذه القيمة لاحقا).

  3. انتقل إلى صفحة Access control (IAM) لموضوع Event Grid وقم بتعيين دور Event Grid Contributor إلى تطبيق كاتب اشتراك Event Grid. تسمح لك هذه الخطوة بالوصول إلى مورد Event Grid عند تسجيل الدخول إلى Azure باستخدام تطبيق Microsoft Entra باستخدام Azure CLI.

  4. إنشاء تطبيق Microsoft Entra لخطاف الويب الذي تم تكوينه للعمل مع Microsoft Entra (مستأجر واحد).

  5. افتح Azure Shell في المستأجر وحدد بيئة PowerShell.

  6. قم بتعديل قيمة $webhookAadTenantId للاتصال بالمستأجر.

    • المتغيرات:
      • $webhookAadTenantId: معرف مستأجر Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. افتح البرنامج النصي التالي ثم حدّث قيم كل من $webhookAppObjectId و$eventSubscriptionWriterAppId مستخدماً معرفاتك، ثم تابع تشغيل البرنامج النصي.

    • المتغيرات:
      • $webhookAppObjectId: معرف تطبيق Microsoft Entra الذي تم إنشاؤه للإخطار على الويب
      • $eventSubscriptionWriterAppId: معرف تطبيق Microsoft Entra لتطبيق كاتب اشتراك Event Grid.

    إشعار

    لا تحتاج إلى تعديل قيمة $eventGridAppId. في هذا البرنامج النصي، AzureEventGridSecureWebhookSubscriber كما هو محدد ل $eventGridRoleName. تذكر أنه يجب أن تكون عضوا في دور مسؤول تطبيق Microsoft Entra أو أن تكون مالكا لمدير الخدمة لتطبيق webhook في معرف Microsoft Entra لتنفيذ هذا البرنامج النصي.

  8. تسجيل الدخول ك كاتب اشتراك Event Grid تطبيق Microsoft Entra عن طريق تشغيل الأمر .

    az login --service-principal -u [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_ID] -p [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  9. إنشاء الاشتراك الخاص بك عن طريق تشغيل الأمر.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    إشعار

    يستخدم هذا السيناريو موضوع نظام. إذا كنت ترغب في إنشاء اشتراك للمواضيع أو المجالات المخصصة باستخدام Azure CLI، فراجع مرجع CLI.

  10. إذا تم تكوين كل شيء بشكل صحيح، يمكنك إنشاء اشتراك webhook بنجاح في موضوع Event Grid.

    إشعار

    في هذه المرحلة، تقوم Event Grid الآن بتمرير الرمز المميز لحامل Microsoft Entra إلى عميل webhook في كل رسالة. تحتاج إلى التحقق من صحة رمز التخويل المميز في خطاف الويب الخاص بك.

تسليم الأحداث إلى Webhook في مستأجر Microsoft Entra مختلف

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

أحداث متعددة المستأجرين مع معرف Microsoft Entra والإخطارات على الويب

استنادا إلى الرسم التخطيطي، اتبع الخطوات التالية لتكوين كلا المستأجرين.

المستأجر أ

نفّذ الخطوات التالية على المستأجر أ:

  1. إنشاء تطبيق Microsoft Entra للكاتب اشتراك شبكة الأحداث الذي تم تكوينه للعمل مع أي Microsoft Entra (متعدد المستأجرين).

  2. قم بإنشاء سر لتطبيق Microsoft Entra، واحفظ القيمة (تحتاج إلى هذه القيمة لاحقا).

  3. انتقل إلى صفحة Access control (IAM) لموضوع Event Grid. قم بتعيين دور Event Grid Contributor لتطبيق Microsoft Entra من كاتب اشتراك Event Grid. تسمح هذه الخطوة للتطبيق بالوصول إلى مورد Event Grid عند تسجيل الدخول إلى Azure باستخدام تطبيق Microsoft Entra باستخدام Azure CLI.

المستأجر ب

نفّذ الخطوات التالية على المستأجر ب:

  1. إنشاء تطبيق Microsoft Entra لخطاف الويب المكون للعمل مع Microsoft Entra (مستأجر واحد).

  2. افتح Azure Shell، وحدد بيئة PowerShell.

  3. عدّل قيمة $webhookAadTenantId للاتصال بالمستأجر ب.

    • المتغيرات:

      • $webhookAadTenantId: مُعرّف مستأجر Azure الخاص بـ المستأجر ب
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. افتح البرنامج النصي التالي ثم حدّث قيم كل من $webhookAppObjectId و$eventSubscriptionWriterAppId مستخدماً معرفاتك، ثم تابع تشغيل البرنامج النصي.

    • المتغيرات:
      • $webhookAppObjectId: معرف تطبيق Microsoft Entra الذي تم إنشاؤه للإخطار على الويب

      • $eventSubscriptionWriterAppId: معرف تطبيق Microsoft Entra لكتاب اشتراك Event Grid

        إشعار

        لا تحتاج إلى تعديل قيمة $eventGridAppId. في هذا البرنامج النصي، يتم تعيين AzureEventGridSecureWebhookSubscriber ل $eventGridRoleName. تذكر أنه يجب أن تكون عضوا في دور مسؤول تطبيق Microsoft Entra أو أن تكون مالكا لمدير الخدمة لتطبيق webhook في معرف Microsoft Entra لتنفيذ هذا البرنامج النصي.

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

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    

المستأجر أ

الآن، في المستأجر أ، قم بالخطوات التالية:

  1. افتح Azure Shell، وسجل الدخول ك كاتب اشتراك Event Grid Microsoft Entra Application عن طريق تشغيل الأمر .

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. إنشاء الاشتراك الخاص بك عن طريق تشغيل الأمر.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_B_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    إشعار

    في هذا السيناريو، نستخدم موضوع نظام شبكة الأحداث. انظر هنا، إذا كنت ترغب في إنشاء اشتراك لصالح Custom Topics أو مجالات Event Grid Domains باستخدام Azure CLI.

  3. إذا تم تكوين كل شيء بشكل صحيح، يمكنك إنشاء اشتراك webhook بنجاح في موضوع Event Grid.

    إشعار

    في هذه المرحلة، تقوم Event Grid الآن بتمرير الرمز المميز لحامل Microsoft Entra إلى عميل webhook في كل رسالة. تحتاج إلى التحقق من صحة رمز التخويل المميز في خطاف الويب الخاص بك.