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 mengotorisasi akses ke sumber daya Azure Event Hubs menggunakan kredensial Microsoft Entra dari aplikasi yang berjalan di Azure Virtual Machines (VM), aplikasi Fungsi, 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 salah satu artikel berikut ini:

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 Azure (Azure RBAC) untuk identitas terkelola tersebut. Azure Event Hubs mendefinisikan peran Azure yang mencakup izin untuk mengirim dan membaca 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.

Menggunakan Event Hubs dengan identitas terkelola

Untuk menggunakan Azure Event Hubs dengan identitas terkelola, tetapkan peran RBAC Azure Event Hubs pada cakupan yang sesuai dengan identitas. 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:

  1. Buka Pengaturan dan pilih Identitas.

  2. Pilih Status akan diubah ke Aktif.

  3. Pilih Simpan untuk menyimpan pengaturan.

    Screenshot of the Identity page showing the status of system-assigned identity set to ON.

  4. 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

  1. Membuat ruang nama Azure Event Hubs dan pusat aktivitas.
  2. Sebarkan aplikasi web ke Azure. Lihat bagian bertab berikut untuk tautan ke aplikasi web sampel di GitHub.
  3. Pastikan SendReceive.aspx ditetapkan sebagai dokumen default untuk aplikasi web.
  4. Aktifkan identitas untuk aplikas web.
  5. Tetapkan identitas ini ke peranPemilik Data Azure Event Hubs di tingkat ruang nama atau tingkat pusat aktivitas.
  6. Jalankan aplikasi web, masukkan nama ruang nama dan nama pusat aktivitas, pesan, dan pilih Kirim. Untuk menerima kejadian, pilih Terima.

Anda sekarang dapat meluncurkan aplikasi web dan mengarahkan browser Anda ke halaman sampel aspx. 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

.

Langkah berikutnya