Zarządzane uwierzytelnianie tożsamości dla Azure Event Hubs

Tożsamość zarządzana to tożsamość w Microsoft Entra ID, którą Azure zarządza za Ciebie, dzięki czemu aplikacja może uwierzytelniać się do usług obsługujących uwierzytelnianie Microsoft Entra bez przechowywania jakichkolwiek danych uwierzytelniających. Azure Event Hubs obsługuje uwierzytelnianie Microsoft Entra z zarządzanymi tożsamościami dla zasobów Azure, co pozwala aplikacjom działającym w Azure łączyć się z Event Hubami bez osadzania łańcuchów połączeń czy kluczy dostępu w kodzie czy konfiguracji.

Gdy używasz zarządzanej tożsamości razem z uwierzytelnianiem Microsoft Entra, aplikacje działające w usługach takich jak Azure Virtual Machines, Azure Functions, Azure App Service oraz Virtual Machine Scale Sets może uzyskać dostęp do danych Event Hubs za pomocą poświadczeń, które Azure automatycznie konfiguruje i rotuje. Takie podejście eliminuje ryzyko wycieku kluczy i zmniejsza koszty operacyjne związane z zarządzaniem poświadczeniami.

Dla przykładu krok po kroku zobacz Uzyskiwanie dostępu do usługi Azure Event Hubs z maszyny wirtualnej przy użyciu tożsamości zarządzanej.

Jak działa uwierzytelnianie tożsamości zarządzanej

Dostęp do zasobu Event Hubs poprzez zarządzaną tożsamość to proces dwuetapowy:

  • Autologacja: Zarządzana tożsamość żąda tokena OAuth 2.0 z Microsoft Entra ID. Azure automatycznie dostarcza tożsamość w oparciu o środowisko obliczeniowe, w którym kod działa, więc żadna tajemnica nie jest przechowywana ani przekazywana w aplikacji.
  • Autoryzacja: Token jest przekazywany usłudze Event Hubs, która przyznaje dostęp na podstawie ról kontroli dostępu opartej na rolach Azure (RBAC) przypisanych do tej tożsamości.

Pełny opis procesu uwierzytelniania i autoryzacji można znaleźć w artykule Autoryzuj dostęp do zasobów Azure Event Hubs za pomocą Microsoft Entra ID.

Zarządzane typy tożsamości

Event Hubs działa z obiema typami zarządzanych tożsamości:

  • Zarządzana tożsamość przypisana przez system: Włączona bezpośrednio w zasobie platformy Azure, takim jak maszyna wirtualna lub aplikacja usługi App Service. Jego cykl życia jest powiązany z tym zasobem i tylko ten zasób może go używać do żądania tokenów.
  • Zarządzana tożsamość przypisana przez użytkownika: Utworzona jako samodzielny zasób Azure i przypisana do jednego lub więcej zasobów Azure, dzięki czemu wiele obciążeń może dzielić tę samą tożsamość.

Aby dowiedzieć się więcej o tych dwóch typach i kiedy wybrać każdy z nich, zobacz Zarządzane typy tożsamości. Listę usług obsługujących zarządzane tożsamości można znaleźć w artykule Usługi wspierające zarządzane tożsamości dla zasobów Azure.

Wbudowane role platformy Azure dla usługi Event Hubs

Po włączeniu tożsamości zarządzanej przypisz jej wbudowaną rolę Azure, która definiuje uprawnienia do danych Event Huba. Azure oferuje następujące wbudowane role autoryzujące dostęp do danych Event Hubs za pomocą Microsoft Entra ID:

Rola Description
Właściciel danych usługi Azure Event Hubs Zapewnia pełny dostęp do zasobów Event Hubs.
Nadawca danych usługi Azure Event Hubs Udziela zgody na wysyłanie zdarzeń do zasobów Event Hubs.
Odbiornik danych usługi Azure Event Hubs Udziela zgody na przyjmowanie wydarzeń z zasobów Event Hubs.

Możesz przypisać rolę na poziomie grupy konsumenckiej, centrum zdarzeń, przestrzeni nazw, grupy zasobów lub subskrypcji. Nadaj najwęższy zakres odpowiadający potrzebom aplikacji. Pełną listę zakresów i szczegółowe informacje o rolach można znaleźć w artykule Role wbudowane platformy Azure dla usługi Azure Event Hubs. Aby przypisać rolę w portalu Azure, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Działanie wygasania tokena

Gdy usuwasz zarządzaną tożsamość z roli RBAC Event Huba, zmiana nie zadziała od razu dla działającej aplikacji. Jeśli usługa źródłowa lub aplikacja nie zostanie zrestartowana, może nadal wysyłać zdarzenia do lub odbierać zdarzenia z centrum zdarzeń aż do wygaśnięcia tokena. Domyślna ważność tokena to 24 godziny. Takie działanie jest zamierzone.

Aby natychmiast cofnąć dostęp po usunięciu tożsamości z roli, zrestartuj aplikację lub usługę źródłową, aby istniejący token wygasł.

Wsparcie dla SDK klienta

Biblioteki klienckie zestawu Azure SDK pobierają za Ciebie token tożsamości zarządzanej za pomocą DefaultAzureCredential, który automatycznie wykrywa tożsamość zarządzaną dostępną w środowisku hostingu. Przekazujesz dane uwierzytelniające do EventHubProducerClient, aby wysyłać zdarzenia, oraz do EventHubConsumerClient, aby je odbierać, bez podawania parametrów połączenia ani klucza.

var credential = new DefaultAzureCredential();

// Send events with a managed identity.
var producerClient = new EventHubProducerClient(
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

// Receive events with a managed identity.
var consumerClient = new EventHubConsumerClient(
    EventHubConsumerClient.DefaultConsumerGroupName,
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

Zainstaluj z NuGet najnowszy pakiet Azure.Messaging.EventHubs, aby korzystać z tych klientów. Przykłady do uruchomienia znajdziesz tutaj:

Centra wydarzeń dla Apache Kafki

Aplikacje Apache Kafka mogą wysyłać i odbierać zdarzenia do Azure Event Hubs, korzystając z zarządzanej tożsamości z OAuth. Aby zobaczyć przykład Java, zobacz Event Hubs for Kafka: wysyłaj i odbieraj wiadomości używając zarządzanej tożsamości OAuth.