Få tillgång till Azure Event Hubs från en VM genom att använda en hanterad identitet

Den här artikeln visar hur du ansluter till Azure Event Hubs från en applikation som körs på en Azure virtuell maskin (VM) genom att använda en hanterad identitet. När du använder en hanterad identitet autentiserar din applikation sig mot Event Hubs utan att lagra anslutningssträngar eller accessnycklar i kod eller konfiguration. Azure tillhandahåller och roterar inloggningsuppgifterna automatiskt.

I den här artikeln utför du följande uppgifter:

  • Aktivera en systemtilldelad hanterad identitet på en VM.
  • Ge den hanterade identiteten behörighet att skicka händelser till en händelsehubb.
  • Skapa och kör en exempelapplikation på VM:n som använder den hanterade identiteten.

För att lära dig hur hanterad identitetsautentisering fungerar med Event Hubs, se Managed identity authentication for Azure Event Hubs.

Prerequisites

Aktivera en hanterad identitet på VM:n

Aktivera en systemtilldelad hanterad identitet på VM:n. Azure skapar en identitet i Microsoft Entra ID som är kopplad till VM:ns livscykel.

  1. Logga in på Azure-portalen.

  2. Gå till den virtuella datorn.

  3. På VM-sidan, välj Säkerhetsidentitet> från vänstermenyn.

  4. På sidan Identitet kontrollerar du att du är på fliken Systemtilldelad.

  5. För statusfältet , välj .

  6. Välj Spara i kommandofältet och välj sedan Ja för att bekräfta.

    Efter att Azure skapat identiteten visas Object (principal) ID på sidan. Du använder denna identitet i nästa avsnitt.

För att aktivera en användartilldelad hanterad identitet istället, se Konfigurera hanterade identiteter för Azure-resurser på en VM. En användartilldelad identitet är en fristående resurs som du kan tilldela till mer än en VM.

Tilldela den hanterade identiteten åtkomst till Event Hubs

Tilldela en Azure-inbyggd roll till den hanterade identiteten så att den kan skicka händelser till din event hub. Detta exempel tilldelar rollen Azure Event Hubs Data Sender inom omfånget för en enskild händelsehubb. Bevilja det snävaste utrymme som uppfyller din ansökan.

  1. Gå till din händelsehubb i Azure-portalen.
  2. På sidan för händelsehubben, välj Access Control (IAM) från vänstermenyn.
  3. Välj Lägg till>Lägg till rolltilldelning.
  4. På fliken Roll, välj Azure Event Hubs Data Sender och välj sedan Nästa.
  5. På fliken Medlemmar väljer du Hanterad identitet för Tilldela åtkomst till.
  6. Välj + Välj medlemmar, välj den virtuella maskinhanterade identiteten som du aktiverade i föregående avsnitt och välj sedan Välj.
  7. Välj Granska + tilldela för att genomföra rolltilldelningen.

För hela listan över roller och omfattningar, se Azure inbyggda roller för Azure Event Hubs. För att tilldela roller i Azure-portalen, se Assign Azure roles using the Azure portal.

Note

Rolltilldelningar kan ta några minuter för att spridas. Om din applikation inte kan autentiseras omedelbart, vänta och försök igen.

Skapa och köra exempelapplikationen på VM:n

Skapa en .NET-konsolapplikation som skickar händelser till din händelsehubb. När applikationen körs på VMDefaultAzureCredential:n upptäcker den automatiskt den hanterade identiteten, så du tillhandahåller ingen reťazec pripojenia eller nyckel.

  1. Anslut till den virtuella datorn. För en Windows-VM, använd Fjärrskrivbord. För en Linux-VM, använd SSH.

  2. I en terminal på VM:n, skapa ett projekt och lägg till de nödvändiga paketen:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Ersätt innehållet i Program.cs med följande kod. Byt ut <namespace> med ditt Event Hubs-namnrymdsnamn och <event-hub-name> med ditt event hub-namn.

    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. Bygg och kör applikationen på VM:n:

    dotnet run
    

    Applikationen använder VM:ns hanterade identitet för att autentisera och skickar händelserna. När händelserna skickas visas konsolen Events sent to the event hub.

  5. För att bekräfta att händelserna har anlänt, använd Data Explorer i Azure-portalen för din händelsehubb, eller måtten på namnrymdens översiktssida.

Tip

När du använder en användartilldelad hanterad identitet, eller när mer än en identitet finns tillgänglig på VM:n, ställ in klient-ID:t så att DefaultAzureCredential rätt identitet väljs. För mer information, se DefaultAzureCredentialOptions.ManagedIdentityClientId.