Dostęp do Azure Event Hubs z maszyny wirtualnej, używając zarządzanej tożsamości

Ten artykuł pokazuje, jak połączyć się z Azure Event Hubs z aplikacji działającej na wirtualnej maszynie (VM) Azure, korzystając z tożsamości zarządzanej. Gdy używasz zarządzanej tożsamości, Twoja aplikacja uwierzytelnia się do Event Hubów bez przechowywania łańcuchów połączeń czy kluczy dostępu w kodzie czy konfiguracji. Azure automatycznie udostępnia i rotuje dane uwierzytelniające.

W tym artykule wykonasz następujące zadania:

  • Włącz systemowo przypisaną tożsamość zarządzaną na maszynie wirtualnej.
  • Nadaj zarządzanej tożsamości uprawnienie do wysyłania zdarzeń do usługi Event Hub.
  • Stwórz i uruchom przykładową aplikację na maszynie wirtualnej, która korzysta z tożsamości zarządzanej.

Aby dowiedzieć się, jak działa uwierzytelnianie przy użyciu tożsamości zarządzanej w usłudze Event Hubs, zobacz Uwierzytelnianie przy użyciu tożsamości zarządzanej w usłudze Azure Event Hubs.

Prerequisites

Włącz zarządzaną tożsamość na maszynie wirtualnej

Włącz systemowo przypisaną tożsamość zarządzaną na maszynie wirtualnej. Azure tworzy tożsamość w Microsoft Entra ID, która jest powiązana z cyklem życia maszyny wirtualnej.

  1. Zaloguj się do portalu Azure.

  2. Przejdź do swojej maszyny wirtualnej.

  3. Na stronie maszyny wirtualnej wybierz z menu po lewej stronie pozycje Zabezpieczenia>.

  4. Na stronie Tożsamość potwierdź, że jesteś na zakładce Przydzielony przez System.

  5. W polu Status wybierz Włączone.

  6. Wybierz na pasku poleceń „Zapisz”, a następnie wybierz „Tak”, aby potwierdzić.

    Po utworzeniu tożsamości przez Azure, na stronie pojawia się identyfikator obiektu (główny). Użyjesz tego identyfikatora w następnej sekcji.

Aby zamiast tego włączyć zarządzaną tożsamość przypisaną przez użytkownika, zobacz artykuł Configure managed identities for Azure resources on a VM. Tożsamość przypisana przez użytkownika to samodzielny zasób, który możesz przypisać do więcej niż jednej maszyny wirtualnej.

Przyznaj zarządzanej tożsamości dostęp do usługi Event Hubs

Przypisz tożsamości zarządzanej wbudowaną rolę platformy Azure, aby mogła wysyłać zdarzenia do centrum zdarzeń. Ten przykład przypisuje rolę Azure Event Hubs Data Sender w obrębie pojedynczego centrum zdarzeń. Udziel najwęższego zakresu, który odpowiada potrzebom Twojej aplikacji.

  1. W witrynie Azure Portal przejdź do centrum zdarzeń.
  2. Na stronie event hub wybierz Kontrolę dostępu (IAM) z lewego menu.
  3. Wybierz Dodaj>Dodaj przypisanie roli.
  4. Na zakładce Rola wybierz Azure Event Hubs Data Sender, a następnie wybierz Następne.
  5. Na karcie Członkowie w polu Przypisz dostęp do wybierz pozycję Tożsamość zarządzana.
  6. Wybierz + Wybierz członków, wybierz zarządzaną tożsamość maszyny wirtualnej , którą włączyłeś w poprzedniej sekcji, a następnie wybierz Wybierz.
  7. Wybierz pozycję Sprawdź i przypisz, aby zakończyć przypisywanie roli.

Pełną listę ról i zakresów można znaleźć w artykule Wbudowane role platformy Azure dla usługi Azure Event Hubs. Aby przypisać role w portalu Azure, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Note

Propagowanie przypisań ról może potrwać kilka minut. Jeśli twoja aplikacja nie może się od razu uwierzytelnić, poczekaj i spróbuj ponownie.

Utworzenie i uruchomienie przykładowej aplikacji na maszynie wirtualnej

Stwórz konsolę .NET, która wysyła zdarzenia do twojego event huba. Gdy aplikacja działa na maszynie wirtualnej, DefaultAzureCredential automatycznie wykrywa zarządzaną tożsamość, więc nie podajesz parametry połączenia ani klucza.

  1. Nawiąż połączenie z maszyną wirtualną. Dla maszyny wirtualnej z Windows użyj Remote Desktop. Dla maszyny wirtualnej z Linuksem użyj SSH.

  2. W terminalu na maszynie wirtualnej utwórz projekt i dodaj wymagane pakiety:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Zastąp zawartość Program.cs pliku następującym kodem. Zastąp <namespace> nazwą przestrzeni nazw usługi Event Hubs, a <event-hub-name> nazwą centrum zdarzeń.

    using Azure.Identity;
    using Azure.Messaging.EventHubs;
    using Azure.Messaging.EventHubs.Producer;
    
    // DefaultAzureCredential detects the managed identity available on the VM.
    var credential = new DefaultAzureCredential();
    
    var producerClient = new EventHubProducerClient(
        "<namespace>.servicebus.windows.net",
        "<event-hub-name>",
        credential);
    
    using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
    eventBatch.TryAdd(new EventData("First event from a managed identity"));
    eventBatch.TryAdd(new EventData("Second event from a managed identity"));
    
    await producerClient.SendAsync(eventBatch);
    await producerClient.DisposeAsync();
    
    Console.WriteLine("Events sent to the event hub.");
    
  4. Zbuduj i uruchom aplikację na maszynie wirtualnej:

    dotnet run
    

    Aplikacja korzysta z zarządzanej tożsamości maszyny wirtualnej do uwierzytelniania i wysyła zdarzenia. Po wysłaniu zdarzeń konsola wyświetla Events sent to the event hub.

  5. Aby potwierdzić, że zdarzenia dotarły, użyj Eksploratora danych w witrynie Azure Portal dla swojego centrum zdarzeń albo metryk na stronie Przegląd obszaru nazw.

Tip

Jeśli używasz zarządzanej tożsamości przypisanej przez użytkownika lub gdy na maszynie wirtualnej jest dostępna więcej niż jedna tożsamość, ustaw identyfikator klienta tak, aby DefaultAzureCredential wybierał właściwą tożsamość. Więcej informacji można znaleźć w DefaultAzureCredentialOptions.ManagedIdentityClientId.