Event Hubs Kaynaklarına erişmek için Microsoft Entra Id ile yönetilen kimliğin kimliğini doğrulama

Azure Event Hubs, Azure kaynakları için yönetilen kimliklerle Microsoft Entra kimlik doğrulamasını destekler. Azure kaynakları için yönetilen kimlikler, Azure Sanal Makineler (VM), İşlev uygulamaları, Sanal Makine Ölçek Kümeleri ve diğer hizmetlerde çalışan uygulamalardan Microsoft Entra kimlik bilgilerini kullanarak Event Hubs kaynaklarına erişim yetkisi verebilir. Azure kaynakları için yönetilen kimlikleri Microsoft Entra kimlik doğrulamasıyla birlikte kullanarak, kimlik bilgilerini bulutta çalışan uygulamalarınızla birlikte depolamaktan kaçınabilirsiniz. Bu makalede, Azure VM'den yönetilen kimlik kullanarak bir olay hub'ına erişimi yetkilendirme adımları gösterilmektedir.

VM'de yönetilen kimlikleri etkinleştirme

Azure kaynaklarının VM'nizden Event Hubs kaynaklarına erişmesi için yönetilen kimlikleri kullanmadan önce VM'de Azure Kaynakları için yönetilen kimlikleri etkinleştirmeniz gerekir. Azure kaynakları için yönetilen kimlikleri etkinleştirmeyi öğrenmek için şu makalelerden birine bakın:

Microsoft Entra Id'de yönetilen kimliğe izin verme

Uygulamanızdaki yönetilen kimlikten Event Hubs hizmetine yönelik bir isteği yetkilendirmek için önce bu yönetilen kimlik için Azure rol tabanlı erişim denetimi (Azure RBAC) ayarlarını yapılandırın. Azure Event Hubs, Event Hubs'dan gönderme ve okuma izinlerini kapsayan Azure rollerini tanımlar. Azure rolü yönetilen bir kimliğe atandığında, yönetilen kimliğe uygun kapsamda Event Hubs verilerine erişim verilir. Azure rollerini atama hakkında daha fazla bilgi için bkz . Event Hubs kaynaklarına erişim için Microsoft Entra Id ile kimlik doğrulaması yapma.

Event Hubs'ı yönetilen kimliklerle kullanma

Event Hubs'ı yönetilen kimliklerle kullanmak için, kimliğe uygun kapsamda bir Event Hubs RBAC rolü atayın. Bu bölümdeki yordam, yönetilen kimlik altında çalışan ve Event Hubs kaynaklarına erişen basit bir uygulama kullanır.

Burada Azure Uygulaması Hizmeti'nde barındırılan örnek bir web uygulaması kullanıyoruz. Web uygulaması oluşturmaya yönelik adım adım yönergeler için bkz . Azure'da ASP.NET Core web uygulaması oluşturma

Uygulama oluşturulduktan sonra şu adımları izleyin:

  1. Ayarlar gidin ve Kimlik'i seçin.

  2. Açık olacak Durumu seçin.

  3. Ayarları kaydetmek için Kaydet’i seçin.

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

  4. Bilgi iletisinde Evet'i seçin.

    Bu ayarı etkinleştirdikten sonra, Microsoft Entra Kimliğinizde yeni bir hizmet kimliği oluşturulur ve App Service ana bilgisayarında yapılandırılır.

    Şimdi bu hizmet kimliğini Event Hubs kaynaklarınızdaki gerekli kapsamdaki bir role atayın.

Azure portalını kullanarak Azure rolleri atama

Event Hubs rollerinden birini istenen kapsamda (Event Hubs ad alanı, kaynak grubu, abonelik) yönetilen kimliğe atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

Dekont

Yönetilen kimlikleri destekleyen hizmetlerin listesi için bkz . Azure kaynakları için yönetilen kimlikleri destekleyen hizmetler.

Web uygulamasını test etme

  1. Event Hubs ad alanı ve olay hub'ı oluşturun.
  2. Web uygulamasını Azure'a dağıtın. GitHub'da örnek web uygulamasına bağlantılar için aşağıdaki sekmeli bölüme bakın.
  3. SendReceive.aspx dosyasının web uygulaması için varsayılan belge olarak ayarlandığından emin olun.
  4. Web uygulaması için kimliği etkinleştirin.
  5. Bu kimliği ad alanı düzeyinde veya olay hub'ı düzeyinde Event Hubs Veri Sahibi rolüne atayın.
  6. Web uygulamasını çalıştırın, ad alanı adını ve olay hub'ı adını, bir iletiyi girin ve Gönder'i seçin. Olayı almak için Al'ı seçin.

Artık web uygulamanızı başlatabilir ve tarayıcınızı örnek aspx sayfasına işaret edebilirsiniz. Event Hubs kaynaklarından veri gönderen ve alan örnek web uygulamasını GitHub deposunda bulabilirsiniz.

NuGet'ten en son paketi yükleyin ve EventHubProducerClient kullanarak Event Hubs'a olay göndermeye ve EventHubConsumerClient kullanarak olayları almaya başlayın.

Dekont

Olayları bir olay hub'ına yayımlamak için yönetilen kimlik kullanan bir Java örneği için bkz . GitHub'da Azure kimlik örneğiyle olayları yayımlama.

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;
        }
    }
}

Kafka için Event Hubs

Yönetilen kimlik OAuth kullanarak Azure Event Hubs'a ileti göndermek ve azuredan ileti almak için Apache Kafka uygulamalarını kullanabilirsiniz. GitHub'da aşağıdaki örneğe bakın: Kafka için Event Hubs - OAuth yönetilen kimliğini kullanarak ileti gönderme ve alma.

Örnekler

  • .NET.
    • En son Azure.Messaging.EventHubs paketini kullanan bir örnek için bkz . Yönetilen kimlikle olayları yayımlama
    • Eski Microsoft.Azure.EventHubs paketini kullanan bir örnek için GitHub'da bu .NET örneğine bakın
  • Java - Aşağıdaki örneklere bakın.
    • GitHub'da Azure kimlik örneğiyle olayları yayımlayın.
    • Yönetilen kimlik kullanarak olay hub'ına olay göndermek ve olay hub'ından olay almak için Apache Kafka protokollerini kullanmayı öğrenmek için bkz . Yönetilen kimlik kullanarak ileti göndermek ve almak için Kafka için Event Hubs örneği.

.

Sonraki adımlar