Mengautentikasi identitas terkelola dengan ID Microsoft Entra untuk mengakses Sumber Daya Azure Event Hubs
Azure Event Hubs mendukung autentikasi Microsoft Entra dengan identitas terkelola untuk sumber daya Azure. Identitas terkelola untuk sumber daya Azure dapat memberikan akses otorisasi ke sumber daya Event Hubs dengan menggunakan kredensial Microsoft Entra dari aplikasi yang berjalan di Mesin Virtual (VM) Azure, Function apps, Virtual Machine Scale Sets, dan layanan lainnya. Dengan menggunakan identitas terkelola untuk sumber daya Azure bersama dengan autentikasi Microsoft Entra, Anda dapat menghindari penyimpanan kredensial dengan aplikasi Anda yang berjalan di cloud. Artikel ini memperlihatkan cara mengotorisasi akses ke kumpulan aktivitas dengan menggunakan identitas terkelola dari Azure VM.
Mengaktifkan identitas terkelola pada VM
Sebelum Anda menggunakan identitas terkelola untuk sumber daya Azure untuk mengakses sumber daya Azure Event Hubs dari VM, Anda harus terlebih dahulu mengaktifkan identitas terkelola untuk Sumber Daya Azure di VM. Untuk mempelajari cara mengaktifkan identitas terkelola untuk sumber daya Azure, lihat Mengonfigurasi identitas terkelola di Azure VM.
Memberikan izin ke identitas terkelola di ID Microsoft Entra
Untuk mengotorisasi permintaan ke layanan Azure Event Hubs dari identitas terkelola di aplikasi Anda, pertama-tama konfigurasikan pengaturan kontrol akses berbasis peran (RBAC) Azure untuk identitas terkelola tersebut. Azure Event Hubs menentukan peran Azure yang mencakup izin untuk mengirim peristiwa ke dan menerima peristiwa dari Azure Event Hubs. Saat peran Azure ditetapkan ke identitas terkelola, identitas terkelola diberikan akses ke data Azure Event Hubs pada cakupan yang sesuai. Untuk informasi selengkapnya tentang menetapkan peran Azure, lihat Mengautentikasi dengan ID Microsoft Entra untuk akses ke sumber daya Azure Event Hubs.
Aplikasi sampel
Prosedur di bagian ini menggunakan aplikasi sederhana yang berjalan di bawah identitas terkelola dan mengakses sumber daya Azure Event Hubs.
Di sini kita menggunakan contoh aplikasi web yang di-host di Azure App Service. Untuk petunjuk langkah demi langkah untuk membuat aplikasi web, lihat Membuat aplikasi web ASP.NET Core di Azure
Setelah aplikasi dibuat, ikuti langkah-langkah berikut:
Buka Pengaturan dan pilih Identitas.
Pilih Status akan diubah ke Aktif.
Pilih Simpan untuk menyimpan pengaturan.
Pilih Ya pada pesan informasi.
Setelah Anda mengaktifkan pengaturan ini, identitas layanan baru dibuat di ID Microsoft Entra Anda dan dikonfigurasi ke host App Service.
Sekarang, tetapkan identitas layanan ini ke peran dalam cakupan yang diperlukan di sumber daya Azure Event Hubs Anda.
Untuk Menetapkan peran Azure menggunakan portal Microsoft Azure
Tetapkan salah satu peran Azure Event Hubs ke identitas terkelola pada cakupan yang diinginkan (ruang nama Event Hubs, grup sumber daya, langganan). Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.
Catatan
Untuk daftar layanan yang mendukung identitas terkelola, lihat Layanan yang mendukung identitas terkelola untuk sumber daya Azure.
Menguji aplikasi web
- Membuat ruang nama Azure Event Hubs dan pusat aktivitas.
- Sebarkan aplikasi web ke Azure. Lihat bagian bertab berikut untuk tautan ke aplikasi web sampel di GitHub.
- Pastikan SendReceive.aspx ditetapkan sebagai dokumen default untuk aplikasi web.
- Aktifkan identitas untuk aplikas web.
- Tetapkan identitas ini ke peranPemilik Data Azure Event Hubs di tingkat ruang nama atau tingkat pusat aktivitas.
- Jalankan aplikasi web, masukkan nama ruang nama dan nama pusat aktivitas, pesan, dan pilih Kirim. Untuk menerima kejadian, pilih Terima.
Anda dapat menemukan contoh aplikasi web yang mengirim dan menerima data dari sumber daya Azure Event Hubs di repositori GitHub.
Instal paket terbaru dari NuGet, dan mulai mengirim kejadian ke Azure Event Hubs menggunakan EventHubProducerClient dan menerima kejadian menggunakan EventHubConsumerClient.
Catatan
Untuk sampel Java yang menggunakan identitas terkelola untuk menerbitkan kejadian ke pusat aktivitas, lihat Menerbitkan kejadian dengan sampel identitas Azure di 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;
}
}
}
Azure Event Hubs for Kafka
Anda dapat menggunakan aplikasi Apache Kafka untuk mengirim pesan ke dan menerima pesan dari Azure Event Hubs menggunakan OAuth identitas terkelola. Lihat sampel berikut di GitHub: Azure Event Hubs for Kafka - kirim dan terima pesan menggunakan OAuth identitas terkelola.
Sampel
- .NET.
- Untuk sampel yang menggunakan paket Azure.Messaging.EventHubs terbaru, lihat Menerbitkan peristiwa dengan identitas terkelola
- Untuk sampel yang menggunakan paket Microsoft.Azure.EventHubs warisan, lihat sampel .NET ini di GitHub
- Java - lihat sampel berikut.
- Terbitkan peristiwa dengan sampel identitas Azure di GitHub.
- Untuk mempelajari cara menggunakan protokol Apache Kafka untuk mengirim peristiwa ke dan menerima peristiwa dari pusat aktivitas menggunakan identitas terkelola, lihat Sampel Azure Event Hubs for Kafka untuk mengirim dan menerima pesan menggunakan identitas terkelola.
Konten terkait
- Lihat artikel berikut untuk mempelajari tentang identitas terkelola untuk sumber daya Azure: Apa itu identitas terkelola untuk sumber daya Azure?
- Lihat artikel terkait berikut ini:
- Mengautentikasi permintaan ke Azure Event Hubs dari aplikasi menggunakan ID Microsoft Entra
- Mengautentikasi permintaan ke Azure Event Hubs menggunakan Tanda Tangan Akses Bersama
- Akses otorisasi ke sumber daya Event Hubs menggunakan Microsoft Entra ID
- Mengotorisasi akses ke sumber daya Event Hubs menggunakan Tanda Tangan Akses Bersama