Toegang tot Azure Event Hubs vanaf een VM door gebruik te maken van een beheerde identiteit

Dit artikel laat zien hoe je verbinding maakt met Azure Event Hubs vanaf een applicatie die draait op een Azure virtuele machine (VM) door gebruik te maken van een beheerde identiteit. Wanneer je een beheerde identiteit gebruikt, authenticeert je applicatie zich bij Event Hubs zonder verbindingsstrings of toegangssleutels op te slaan in code of configuratie. Azure stelt de inloggegevens automatisch beschikbaar en roteert ze.

In dit artikel voert u de volgende taken uit:

  • Schakel een systeem-toegewezen beheerde identiteit in voor een VM.
  • Verleen de beheerde identiteit toestemming om evenementen naar een event hub te sturen.
  • Maak een voorbeeldapplicatie aan en voer deze uit op de VM die de beheerde identiteit gebruikt.

Om te leren hoe beheerde identiteitsauthenticatie werkt met Event Hubs, zie Beheerde identiteitsauthenticatie voor Azure Event Hubs.

Prerequisites

Schakel een beheerde identiteit in op de VM

Schakel een door het systeem toegewezen beheerde identiteit in op de VM. Azure creëert een identiteit in Microsoft Entra ID die gekoppeld is aan de levenscyclus van de VM.

  1. Meld u aan bij het Azure-portaal.

  2. Ga naar uw virtuele machine.

  3. Selecteer op de VM-pagina > SecurityIdentity in het linkermenu.

  4. Bevestig op de Identiteit-pagina dat je op het tabblad Systeem toegewezen bent.

  5. Voor het Statusveld , selecteer Op.

  6. Selecteer Opslaan in de commandobalk en selecteer vervolgens Ja om te bevestigen.

    Nadat Azure de identiteit heeft aangemaakt, verschijnt de Object (principal) ID op de pagina. Je gebruikt deze identiteit in de volgende sectie.

Om in plaats daarvan een door de gebruiker toegewezen beheerde identiteit in te schakelen, zie Configure managed identities for Azure resources on a VM. Een door gebruikers toegewezen identiteit is een zelfstandige bron die je aan meer dan één VM kunt toewijzen.

Verleen de beheerde identiteit toegang aan Event Hubs

Wijs een ingebouwde rol van Azure toe aan de beheerde identiteit zodat deze evenementen naar je event hub kan sturen. Dit voorbeeld wijst de rol van Azure Event Hubs Data Sender toe aan de scope van een enkele event hub. Ken de smalste scope toe die aan de behoeften van uw aanvraag voldoet.

  1. Ga in Azure Portal naar uw Event Hub.
  2. Selecteer Access control (IAM) in het linkermenu op de event hub-pagina.
  3. Selecteer Toevoegen>Roltoewijzing toevoegen.
  4. Selecteer op het tabblad RolAzure Event Hubs Data Sender en selecteer vervolgens Volgende.
  5. Selecteer op het tabblad Leden , voor Toegang toewijzen aan, beheerde identiteit.
  6. Selecteer + Selecteer leden, kies de virtuele machine beheerde identiteit die je in de vorige sectie hebt ingeschakeld, en selecteer vervolgens Selecteren.
  7. Selecteer Beoordelen en toewijzen om de roltoewijzing te voltooien.

Voor de volledige lijst van rollen en scopes, zie Azure ingebouwde rollen voor Azure Event Hubs. Om rollen toe te wijzen in het Azure-portaal, zie Assign Azure roles using the Azure portal.

Note

Het kan enkele minuten duren voordat roltoewijzingen zijn doorgegeven. Als je applicatie niet direct kan authenticeren, wacht dan en probeer het opnieuw.

Maak de voorbeeldapplicatie aan en voer deze uit op de VM

Maak een .NET-consoleapplicatie die gebeurtenissen naar je event hub stuurt. Wanneer de applicatie op de VM draait, DefaultAzureCredential detecteert die automatisch de beheerde identiteit, dus je geeft geen verbindingsreeks of key op.

  1. Maak verbinding met de VM. Voor een Windows VM gebruik je Extern bureaublad. Voor een Linux-VM gebruik SSH.

  2. Maak in een terminal op de VM een project aan en voeg de benodigde pakketten toe:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Vervang de inhoud van Program.cs door de volgende code. Vervang <namespace> door de naam van je Event Hubs-naamruimte en <event-hub-name> door de naam van je event hub.

    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. Bouw en voer de applicatie uit op de VM:

    dotnet run
    

    De applicatie gebruikt de beheerde identiteit van de VM om te authenticeren en de gebeurtenissen te verzenden. Wanneer de gebeurtenissen worden verzonden, toont de console Events sent to the event hub.

  5. Om te bevestigen dat de evenementen zijn aangekomen, gebruik je de Data Explorer in het Azure-portaal van je event hub, of de statistieken op de overzichtspagina van de naamruimte.

Tip

Wanneer je een door de gebruiker toegewezen beheerde identiteit gebruikt, of wanneer er meer dan één identiteit beschikbaar is op de VM, stel dan de client-ID zo in dat de DefaultAzureCredential juiste identiteit wordt geselecteerd. Voor meer informatie, zie DefaultAzureCredentialOptions.ManagedIdentityClientId.