Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- Konto platformy Azure z aktywną subskrypcją. Jeśli jej nie masz, utwórz bezpłatne konto.
- Przestrzeń nazw usługi Event Hubs oraz centrum zdarzeń. Aby je utworzyć, zobacz Quickstart: Create a event hub using Azure Portal.
- Maszyna wirtualna platformy Azure. Aby ją utworzyć, zobacz Szybki start: Tworzenie maszyny wirtualnej z systemem Windows w portalu Azure lub Szybki start: Tworzenie maszyny wirtualnej z systemem Linux w portalu Azure.
- Uprawnienie do przypisywania ról platformy Azure na poziomie docelowego zakresu. Rola Właściciela lub Administratora Dostępu Użytkownika obejmuje to uprawnienia.
- Zestaw SDK platformy .NET zainstalowany na maszynie wirtualnej, aby skompilować i uruchomić przykładową aplikację.
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.
Zaloguj się do portalu Azure.
Przejdź do swojej maszyny wirtualnej.
Na stronie maszyny wirtualnej wybierz z menu po lewej stronie pozycje Zabezpieczenia>.
Na stronie Tożsamość potwierdź, że jesteś na zakładce Przydzielony przez System.
W polu Status wybierz Włączone.
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.
- W witrynie Azure Portal przejdź do centrum zdarzeń.
- Na stronie event hub wybierz Kontrolę dostępu (IAM) z lewego menu.
- Wybierz Dodaj>Dodaj przypisanie roli.
- Na zakładce Rola wybierz Azure Event Hubs Data Sender, a następnie wybierz Następne.
- Na karcie Członkowie w polu Przypisz dostęp do wybierz pozycję Tożsamość zarządzana.
- 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.
- 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.
Nawiąż połączenie z maszyną wirtualną. Dla maszyny wirtualnej z Windows użyj Remote Desktop. Dla maszyny wirtualnej z Linuksem użyj SSH.
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.IdentityZastąp zawartość
Program.cspliku 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.");Zbuduj i uruchom aplikację na maszynie wirtualnej:
dotnet runAplikacja 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.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.