Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- Een Azure-account met een actief abonnement. Als je er geen hebt, maak een gratis account aan.
- Een Event Hubs-naamruimte en een eventhub. Om ze te maken, zie Quickstart: Create an event hub met Azure portal.
- Een virtuele Azure-machine. Om er een te maken, raadpleeg Quickstart: Een Windows-VM maken in Azure Portal of Quickstart: Een Linux-VM maken in Azure Portal.
- Toestemming om Azure-rollen toe te wijzen op het doelbereik. De rol Eigenaar of Gebruikerstoegangsbeheerder bevat deze toestemming.
- De .NET SDK werd op de VM geïnstalleerd om de voorbeeldapplicatie te bouwen en uit te voeren.
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.
Meld u aan bij het Azure-portaal.
Ga naar uw virtuele machine.
Selecteer op de VM-pagina > SecurityIdentity in het linkermenu.
Bevestig op de Identiteit-pagina dat je op het tabblad Systeem toegewezen bent.
Voor het Statusveld , selecteer Op.
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.
- Ga in Azure Portal naar uw Event Hub.
- Selecteer Access control (IAM) in het linkermenu op de event hub-pagina.
- Selecteer Toevoegen>Roltoewijzing toevoegen.
- Selecteer op het tabblad RolAzure Event Hubs Data Sender en selecteer vervolgens Volgende.
- Selecteer op het tabblad Leden , voor Toegang toewijzen aan, beheerde identiteit.
- Selecteer + Selecteer leden, kies de virtuele machine beheerde identiteit die je in de vorige sectie hebt ingeschakeld, en selecteer vervolgens Selecteren.
- 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.
Maak verbinding met de VM. Voor een Windows VM gebruik je Extern bureaublad. Voor een Linux-VM gebruik SSH.
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.IdentityVervang de inhoud van
Program.csdoor 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.");Bouw en voer de applicatie uit op de VM:
dotnet runDe 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.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.