مشاركة عبر


مصادقة هوية مدارة باستخدام معرف Microsoft Entra للوصول إلى موارد مراكز الأحداث

تدعم Azure Event Hubs مصادقة Microsoft Entra مع الهويات المدارة لموارد Azure. يمكن للهويات المدارة لموارد Azure تخويل الوصول إلى موارد مراكز الأحداث باستخدام بيانات اعتماد Microsoft Entra من التطبيقات التي تعمل في أجهزة Azure الظاهرية (VMs) وتطبيقات الوظائف ومجموعات مقياس الجهاز الظاهري والخدمات الأخرى. باستخدام الهويات المدارة لموارد Azure مع مصادقة Microsoft Entra، يمكنك تجنب تخزين بيانات الاعتماد مع التطبيقات التي تعمل في السحابة. توضح هذه المقالة كيفية السماح بالوصول إلى مركز الأحداث باستخدام هوية مدارة من VM في Azure.

تمكين الهويات المُدارة على جهاز ظاهري

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

منح أذونات لهوية مدارة في معرف Microsoft Entra

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

عينات التطبيقات

يستخدم الإجراء الموجود في هذا القسم تطبيقا بسيطا يتم تشغيله تحت هوية مدارة ويؤمن الوصول إلى موارد Event Hubs.

هنا نحن نستخدم نموذج تطبيق ويب مستضاف في خدمة تطبيقات Azure. للحصول على إرشادات خطوة بخطوة لإنشاء تطبيق ويب، راجع إنشاء تطبيق ويب ASP.NET Core في Azure

بمجرد إنشاء التطبيق، اتبع الخطوات التالية:

  1. انتقل إلى الإعدادات وحدد الهوية.

  2. حدد الحالة التي سيتم تشغيلها.

  3. حدد حفظ لحفظ الإعدادات.

    لقطة شاشة لصفحة الهوية تعرض حالة الهوية المعينة من قبل النظام المعينة إلى ON.

  4. حدد نعم في رسالة المعلومات.

    بمجرد تمكين هذا الإعداد، يتم إنشاء هوية خدمة جديدة في معرف Microsoft Entra وتكوينها في مضيف App Service.

    الآن، قم بتعيين هوية الخدمة هذه لدور في النطاق المطلوب في موارد Event Hubs الخاصة بك.

لتعيين أدوار Azure باستخدام مدخل Azure

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

إشعار

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

اختبر تطبيق الويب

  1. قم بإنشاء مساحة اسم Event Hubs ومركز أحداث.
  2. نشر تطبيق الويب لـAzure. راجع القسم المبوب التالي للحصول على ارتباطات إلى نموذج تطبيق الويب على GitHub.
  3. تأكد من تعيين .aspx SendReceive كمستند افتراضي لتطبيق الويب.
  4. تمكين الهوية لتطبيق الويب.
  5. تعيين هذه الهوية إلى دور مالك بيانات Event Hubs على مستوى مساحة الاسم أو مستوى لوحة الوصل الحدث.
  6. قم بتشغيل تطبيق ويب، وادخل اسم مساحة الاسم واسم لوحة مركز الحدث، ورسالة، وحدد إرسال. لتلقي الحدث، حدد تلقي.

يمكنك العثور على نموذج تطبيق ويب الذي يرسل البيانات ويتلقاها من موارد Event Hubs في repo GitHub.

قم بتثبيت أحدث حزمة من NuGet، وبدء إرسال الأحداث إلى مراكز الأحداث باستخدام EventHubProducerClient وتلقي الأحداث باستخدام EventHubConsumerClient.

إشعار

للحصول على نموذج Java يستخدم هوية مدارة لنشر الأحداث إلى مركز أحداث، راجع نشر الأحداث باستخدام نموذج هوية Azure على GitHub.

protected async void btnSend_Click(object sender, EventArgs e)
{
    await using (EventHubProducerClient producerClient = new EventHubProducerClient(txtNamespace.Text, txtEventHub.Text, new DefaultAzureCredential()))
    {
        // create a batch
        using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
        {

            // add events to the batch. only one in this case. 
            eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(txtData.Text)));

            // send the batch to the event hub
            await producerClient.SendAsync(eventBatch);
        }

        txtOutput.Text = $"{DateTime.Now} - SENT{Environment.NewLine}{txtOutput.Text}";
    }
}
protected async void btnReceive_Click(object sender, EventArgs e)
{
    await using (var consumerClient = new EventHubConsumerClient(EventHubConsumerClient.DefaultConsumerGroupName, $"{txtNamespace.Text}.servicebus.windows.net", txtEventHub.Text, new DefaultAzureCredential()))
    {
        int eventsRead = 0;
        try
        {
            using CancellationTokenSource cancellationSource = new CancellationTokenSource();
            cancellationSource.CancelAfter(TimeSpan.FromSeconds(5));

            await foreach (PartitionEvent partitionEvent in consumerClient.ReadEventsAsync(cancellationSource.Token))
            {
                txtOutput.Text = $"Event Read: { Encoding.UTF8.GetString(partitionEvent.Data.Body.ToArray()) }{ Environment.NewLine}" + txtOutput.Text;
                eventsRead++;
            }
        }
        catch (TaskCanceledException ex)
        {
            txtOutput.Text = $"Number of events read: {eventsRead}{ Environment.NewLine}" + txtOutput.Text;
        }
    }
}

إشعار

إذا لم تتم إعادة تشغيل الخدمة أو التطبيق المصدر بعد تعطيل الوصول إلى مركز الأحداث عن طريق إزالة الهوية المدارة للمصدر من دور Event Hubs RBAC، فقد يستمر التطبيق المصدر في نشر الأحداث إلى أو receiev من مركز الأحداث حتى تنتهي صلاحية الرمز المميز (صلاحية الرمز المميز الافتراضي هي 24 ساعة). فهذا السلوك حسب التصميم.

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

مراكز الأحداث Kafka

يمكنك استخدام تطبيقات Apache Kafka لإرسال رسائل إلى مراكز أحداث Azure وتلقيها باستخدام OAuth للهوية المدارة. انظر العينة التالية على GitHub: Event Hubs لـKafka - إرسال واستقبال الرسائل باستخدام OAuth الهوية المدارة.

العينات