Zugriff auf Azure Event Hubs von einer VM aus mit einer verwalteten Identität

Dieser Artikel zeigt Ihnen, wie Sie von einer Anwendung, die auf einer virtuellen Azure-Maschine (VM) ausgeführt wird, mithilfe einer verwalteten Identität eine Verbindung mit Azure Event Hubs herstellen. Wenn Sie eine verwaltete Identität verwenden, authentifiziert sich Ihre Anwendung bei Event Hubs, ohne Verbindungsstrings oder Zugriffsschlüssel im Code oder in der Konfiguration zu speichern. Azure stellt die Zugangsdaten bereit und rotiert sie automatisch.

In diesem Artikel führen Sie die folgenden Aufgaben aus:

  • Aktivieren Sie eine systemzugewiesene verwaltete Identität auf einer VM.
  • Erteilen Sie der verwalteten Identität die Berechtigung, Ereignisse an einen Event Hub zu senden.
  • Erstelle und führe eine Beispielanwendung auf der VM aus, die die verwaltete Identität verwendet.

Um zu erfahren, wie die Authentifizierung der verwalteten Identität mit Event Hubs funktioniert, siehe Verwaltete Identitätsauthentifizierung für Azure Event Hubs.

Voraussetzungen

Aktivieren Sie eine verwaltete Identität auf der VM

Aktivieren Sie eine systemzugewiesene verwaltete Identität auf der VM. Azure erstellt eine Identität in Microsoft Entra ID, die an den Lebenszyklus der VM gebunden ist.

  1. Melden Sie sich im Azure-Portal an.

  2. Wechseln Sie zu Ihrer VM.

  3. Wählen Sie auf der VM-Seite im linken Menü SecurityIdentityaus>.

  4. Vergewissern Sie sich auf der Seite Identität, dass Sie sich auf der Registerkarte System assigned befinden.

  5. Für das Statusfeld wählen Sie Ein.

  6. Wählen Sie in der Befehlsleiste Speichern und dann Ja, um dies zu bestätigen.

    Nachdem Azure die Identität erstellt hat, erscheint die Objekt-(Haupt-)ID auf der Seite. Diese Identität verwenden Sie im nächsten Abschnitt.

Um stattdessen eine vom Benutzer zugewiesene verwaltete Identität zu aktivieren, siehe Configure managed Identities for Azure resources on a VM. Eine benutzerzugewiesene Identität ist eine eigenständige Ressource, die Sie mehr als einer VM zuweisen können.

Gewähren Sie der verwalteten Identität den Zugriff auf Event Hubs

Weisen Sie der verwalteten Identität eine integrierte Azure-Rolle zu, damit sie Ereignisse an Ihren Event Hub senden kann. Dieses Beispiel weist die Rolle Azure Event Hubs Data Sender für den Bereich eines einzelnen Event Hubs zu. Gewähren Sie den kleinstmöglichen Berechtigungsumfang, der den Anforderungen Ihrer Anwendung entspricht.

  1. Wechseln Sie im Azure-Portal zu Ihrem Event Hub.
  2. Auf der Eventhub-Seite wählen Sie im linken Menü Access Control (IAM) aus.
  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus.
  4. Auf der Registerkarte Rolle wählen Sie Azure Event Hubs Data Sender aus und dann Weiter.
  5. Wählen Sie auf der Registerkarte " Mitglieder " für "Zugriff zuweisen"die Option "Verwaltete Identität" aus.
  6. Wählen Sie + Mitglieder auswählen, wählen Sie die verwaltete Identität des Virtuellen Computers aus, die Sie im vorherigen Abschnitt aktiviert haben, und wählen Sie dann Auswählen.
  7. Wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung abzuschließen.

Die vollständige Liste der Rollen und Bereiche finden Sie unter Integrierte Azure-Rollen für Azure Event Hubs. Um Rollen im Azure-Portal zuzuweisen, siehe Assign Azure Roles using the Azure Portal.

Note

Rollenzuweisungen können einige Minuten dauern, bis sie verteilt werden. Wenn deine Anwendung sich nicht sofort authentifizieren kann, warte und versuche es erneut.

Erstellen und ausführen Sie die Beispielanwendung auf der VM

Erstellen Sie eine .NET-Konsolenanwendung, die Ereignisse an Ihren Event Hub sendet. Wenn die Anwendung auf der VM läuft, DefaultAzureCredential erkennt sie automatisch die verwaltete Identität, sodass du keinen Verbindungszeichenfolge oder Key angibst.

  1. Stellen Sie eine Verbindung mit der VM her. Für eine Windows-VM verwenden Sie Remotedesktop. Für eine Linux-VM verwenden Sie SSH.

  2. Erstellen Sie in einem Terminal der VM ein Projekt und fügen Sie die erforderlichen Pakete hinzu:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code. Ersetzen Sie <namespace> durch Ihren Event Hubs-Namespace und <event-hub-name> durch den Namen Ihres Event Hubs.

    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. Baue und führe die Anwendung auf der VM aus:

    dotnet run
    

    Die Anwendung verwendet die verwaltete Identität der VM zur Authentifizierung und sendet die Ereignisse. Wenn die Ereignisse gesendet werden, zeigt die Konsole Events sent to the event hub. an.

  5. Um zu bestätigen, dass die Ereignisse angekommen sind, verwenden Sie den Data Explorer im Azure-Portal Ihres Event-Hubs oder die Metriken auf der Übersichtsseite des Namensraums.

Tip

Wenn Sie eine benutzerzugewiesene verwaltete Identität verwenden oder wenn mehr als eine Identität auf der VM verfügbar ist, stellen Sie die Client-ID so ein, dass die DefaultAzureCredential korrekte Identität ausgewählt wird. Weitere Informationen finden Sie unter DefaultAzureCredentialOptions.ManagedIdentityClientId.