Uwierzytelnianie tożsamości zarządzanej za pomocą identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do zasobów usługi Event Hubs
Usługa Azure Event Hubs obsługuje uwierzytelnianie w usłudze Microsoft Entra z tożsamościami zarządzanymi dla zasobów platformy Azure. Tożsamości zarządzane dla zasobów platformy Azure mogą autoryzować dostęp do zasobów usługi Event Hubs przy użyciu poświadczeń usługi Microsoft Entra z poziomu aplikacji działających w usłudze Azure Virtual Machines, aplikacji funkcji, usługi Virtual Machine Scale Sets i innych usług. Korzystając z tożsamości zarządzanych dla zasobów platformy Azure wraz z uwierzytelnianiem firmy Microsoft Entra, można uniknąć przechowywania poświadczeń z aplikacjami uruchomionymi w chmurze. W tym artykule pokazano, jak autoryzować dostęp do centrum zdarzeń przy użyciu tożsamości zarządzanej z maszyny wirtualnej platformy Azure.
Włączanie tożsamości zarządzanych na maszynie wirtualnej
Przed użyciem tożsamości zarządzanych dla zasobów platformy Azure w celu uzyskania dostępu do zasobów usługi Event Hubs z maszyny wirtualnej należy najpierw włączyć tożsamości zarządzane dla zasobów platformy Azure na maszynie wirtualnej. Aby dowiedzieć się, jak włączyć tożsamości zarządzane dla zasobów platformy Azure, zobacz Konfigurowanie tożsamości zarządzanych na maszynach wirtualnych platformy Azure.
Udzielanie uprawnień tożsamości zarządzanej w identyfikatorze Entra firmy Microsoft
Aby autoryzować żądanie do usługi Event Hubs z tożsamości zarządzanej w aplikacji, najpierw skonfiguruj ustawienia kontroli dostępu opartej na rolach (RBAC) platformy Azure dla tej tożsamości zarządzanej. Usługa Azure Event Hubs definiuje role platformy Azure, które obejmują uprawnienia do wysyłania zdarzeń do usługi Event Hubs i odbierania zdarzeń. Po przypisaniu roli platformy Azure do tożsamości zarządzanej tożsamość zarządzana ma dostęp do danych usługi Event Hubs w odpowiednim zakresie. Aby uzyskać więcej informacji na temat przypisywania ról platformy Azure, zobacz Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do zasobów usługi Event Hubs.
Aplikacja przykładowa
Procedura w tej sekcji używa prostej aplikacji, która działa w ramach tożsamości zarządzanej i uzyskuje dostęp do zasobów usługi Event Hubs.
W tym miejscu używamy przykładowej aplikacji internetowej hostowanej w usłudze aplikacja systemu Azure Service. Aby uzyskać instrukcje krok po kroku dotyczące tworzenia aplikacji internetowej, zobacz Tworzenie aplikacji internetowej ASP.NET Core na platformie Azure
Po utworzeniu aplikacji wykonaj następujące kroki:
Przejdź do pozycji Ustawienia i wybierz pozycję Tożsamość.
Wybierz pozycję Stan , aby mieć wartość Włączone.
Wybierz pozycję Zapisz, aby zapisać ustawienie.
Wybierz pozycję Tak w komunikacie informacyjnym.
Po włączeniu tego ustawienia zostanie utworzona nowa tożsamość usługi w identyfikatorze Entra firmy Microsoft i skonfigurowana na hoście usługi App Service.
Teraz przypisz tę tożsamość usługi do roli w wymaganym zakresie w zasobach usługi Event Hubs.
Aby przypisać role platformy Azure przy użyciu witryny Azure Portal
Przypisz jedną z ról usługi Event Hubs do tożsamości zarządzanej w żądanym zakresie (przestrzeń nazw usługi Event Hubs, grupa zasobów, subskrypcja). Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Uwaga
Aby uzyskać listę usług obsługujących tożsamości zarządzane, zobacz Usługi obsługujące tożsamości zarządzane dla zasobów platformy Azure.
Testowanie aplikacji internetowej
- Utwórz przestrzeń nazw usługi Event Hubs i centrum zdarzeń.
- Wdróż aplikację internetową na platformie Azure. Aby uzyskać linki do przykładowej aplikacji internetowej w usłudze GitHub, zobacz następującą sekcję z kartami.
- Upewnij się, że SendReceive.aspx jest ustawiony jako dokument domyślny dla aplikacji internetowej.
- Włącz tożsamość dla aplikacji internetowej.
- Przypisz tę tożsamość do roli Właściciel danych usługi Event Hubs na poziomie przestrzeni nazw lub centrum zdarzeń.
- Uruchom aplikację internetową, wprowadź nazwę przestrzeni nazw i nazwę centrum zdarzeń, komunikat i wybierz pozycję Wyślij. Aby odebrać zdarzenie, wybierz pozycję Odbierz.
Przykładowa aplikacja internetowa, która wysyła i odbiera dane z zasobów usługi Event Hubs, znajduje się w repozytorium GitHub.
Zainstaluj najnowszy pakiet z pakietu NuGet i rozpocznij wysyłanie zdarzeń do usługi Event Hubs przy użyciu elementu EventHubProducerClient i odbierania zdarzeń przy użyciu elementu EventHubConsumerClient.
Uwaga
Przykład języka Java, który używa tożsamości zarządzanej do publikowania zdarzeń w centrum zdarzeń, zobacz Publikowanie zdarzeń za pomocą przykładu tożsamości platformy Azure w usłudze 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 dla platformy Kafka
Za pomocą aplikacji platformy Apache Kafka można wysyłać komunikaty do usługi Azure Event Hubs i odbierać je z usługi Azure Event Hubs przy użyciu protokołu OAuth tożsamości zarządzanej. Zobacz następujący przykład w witrynie GitHub: Usługa Event Hubs dla platformy Kafka — wysyłanie i odbieranie komunikatów przy użyciu protokołu OAuth tożsamości zarządzanej.
Przykłady
- .SIEĆ.
- Aby zapoznać się z przykładem korzystającym z najnowszego pakietu Azure.Messaging.EventHubs , zobacz Publikowanie zdarzeń przy użyciu tożsamości zarządzanej
- Aby zapoznać się z przykładem korzystającym ze starszego pakietu Microsoft.Azure.EventHubs , zobacz ten przykład platformy .NET w witrynie GitHub
- Java — zapoznaj się z poniższymi przykładami.
- Publikowanie zdarzeń za pomocą przykładu tożsamości platformy Azure w usłudze GitHub.
- Aby dowiedzieć się, jak używać protokołu Apache Kafka do wysyłania zdarzeń do centrum zdarzeń i odbierania z niego zdarzeń przy użyciu tożsamości zarządzanej, zobacz przykład Event Hubs for Kafka do wysyłania i odbierania komunikatów przy użyciu tożsamości zarządzanej.
Powiązana zawartość
- Zapoznaj się z następującym artykułem, aby dowiedzieć się więcej o tożsamościach zarządzanych dla zasobów platformy Azure: Co to są tożsamości zarządzane dla zasobów platformy Azure?
- Zobacz następujące powiązane artykuły:
- Uwierzytelnianie żądań w usłudze Azure Event Hubs z aplikacji przy użyciu identyfikatora Entra firmy Microsoft
- Uwierzytelnianie żądań w usłudze Azure Event Hubs przy użyciu sygnatur dostępu współdzielonego
- Autoryzowanie dostępu do zasobów usługi Event Hubs przy użyciu Microsoft Entra ID
- Autoryzowanie dostępu do zasobów usługi Event Hubs przy użyciu sygnatur dostępu współdzielonego