مصادقة هوية مدارة باستخدام معرف 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
بمجرد إنشاء التطبيق، اتبع الخطوات التالية:
انتقل إلى الإعدادات وحدد الهوية.
حدد الحالة التي سيتم تشغيلها.
حدد حفظ لحفظ الإعدادات.
حدد نعم في رسالة المعلومات.
بمجرد تمكين هذا الإعداد، يتم إنشاء هوية خدمة جديدة في معرف Microsoft Entra وتكوينها في مضيف App Service.
الآن، قم بتعيين هوية الخدمة هذه لدور في النطاق المطلوب في موارد Event Hubs الخاصة بك.
لتعيين أدوار Azure باستخدام مدخل Azure
تعيين أحد أدوار Event Hubs إلى الهوية المدارة في النطاق المطلوب (مساحة اسم Event Hubs، مجموعة الموارد، الاشتراك). للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.
إشعار
للحصول على قائمة بالخدمات التي تدعم الهويات المُدارة، راجع الخدمات التي تدعم الهويات المُدارة لموارد Azure.
اختبر تطبيق الويب
- قم بإنشاء مساحة اسم Event Hubs ومركز أحداث.
- نشر تطبيق الويب لـAzure. راجع القسم المبوب التالي للحصول على ارتباطات إلى نموذج تطبيق الويب على GitHub.
- تأكد من تعيين .aspx SendReceive كمستند افتراضي لتطبيق الويب.
- تمكين الهوية لتطبيق الويب.
- تعيين هذه الهوية إلى دور مالك بيانات Event Hubs على مستوى مساحة الاسم أو مستوى لوحة الوصل الحدث.
- قم بتشغيل تطبيق ويب، وادخل اسم مساحة الاسم واسم لوحة مركز الحدث، ورسالة، وحدد إرسال. لتلقي الحدث، حدد تلقي.
يمكنك العثور على نموذج تطبيق ويب الذي يرسل البيانات ويتلقاها من موارد 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 الهوية المدارة.
العينات
- NET
- للحصول على عينة تستخدم أحدث حزمة Azure.Messaging.EventHubs ، راجع نشر الأحداث بهوية مدارة
- للحصول على عينة تستخدم حزمة Microsoft.Azure.EventHubs القديمة، راجع نموذج .NET هذا على GitHub
- Java - راجع العينات التالية.
- نشر الأحداث باستخدام نموذج هوية Azure على GitHub.
- لمعرفة كيفية استخدام بروتوكول Apache Kafka لإرسال الأحداث وتلقيها من مركز أحداث باستخدام هوية مدارة، راجع مراكز الأحداث لعينة Kafka لإرسال الرسائل وتلقيها باستخدام هوية مدارة.
المحتوى ذو الصلة
- راجع المقالة التالية للتعرف على الهويات المدارة لموارد Azure: ما هي الهويات المدارة لموارد Azure؟
- راجع المقالات التالية ذات الصلة: