Een beheerde identiteit verifiëren met Microsoft Entra-id voor toegang tot Event Hubs-resources
Azure Event Hubs ondersteunt Microsoft Entra-verificatie met beheerde identiteiten voor Azure-resources. Beheerde identiteiten voor Azure-resources kunnen toegang verlenen tot Event Hubs-resources met behulp van Microsoft Entra-referenties van toepassingen die worden uitgevoerd in Azure Virtual Machines (VM's), functie-apps, Virtual Machine Scale Sets en andere services. Door beheerde identiteiten te gebruiken voor Azure-resources samen met Microsoft Entra-verificatie, kunt u voorkomen dat referenties worden opgeslagen met uw toepassingen die in de cloud worden uitgevoerd. In dit artikel wordt beschreven hoe u toegang tot een Event Hub kunt autoriseren met behulp van een beheerde identiteit van een Azure-VM.
Beheerde identiteiten inschakelen op een VIRTUELE machine
Voordat u beheerde identiteiten voor Azure-resources gebruikt om toegang te krijgen tot Event Hubs-resources vanaf uw VM, moet u eerst beheerde identiteiten inschakelen voor Azure-resources op de VM. Zie Beheerde identiteiten configureren op Azure-VM's voor meer informatie over het inschakelen van beheerde identiteiten voor Azure-resources.
Machtigingen verlenen aan een beheerde identiteit in Microsoft Entra-id
Als u een aanvraag voor de Event Hubs-service wilt autoriseren vanuit een beheerde identiteit in uw toepassing, configureert u eerst op rollen gebaseerd toegangsbeheer (RBAC) van Azure voor die beheerde identiteit. Azure Event Hubs definieert Azure-rollen die machtigingen omvatten voor het verzenden van gebeurtenissen naar en het ontvangen van gebeurtenissen van Event Hubs. Wanneer een Azure-rol wordt toegewezen aan een beheerde identiteit, krijgt de beheerde identiteit toegang tot Event Hubs-gegevens op het juiste bereik. Zie Verifiëren met Microsoft Entra ID voor toegang tot Event Hubs-resources voor meer informatie over het toewijzen van Azure-rollen.
Voorbeeldtoepassing
De procedure in deze sectie maakt gebruik van een eenvoudige toepassing die wordt uitgevoerd onder een beheerde identiteit en toegang heeft tot Event Hubs-resources.
Hier gebruiken we een voorbeeldwebtoepassing die wordt gehost in Azure-app Service. Zie Een ASP.NET Core-web-app maken in Azure voor stapsgewijze instructies voor het maken van een webtoepassing
Zodra de toepassing is gemaakt, voert u de volgende stappen uit:
Ga naar Instellingen en selecteer Identiteit.
Selecteer de status die moet worden ingeschakeld.
Selecteer Opslaan om de instelling op te slaan.
Selecteer Ja in het informatiebericht.
Zodra u deze instelling hebt ingeschakeld, wordt er een nieuwe service-id gemaakt in uw Microsoft Entra-id en geconfigureerd in de App Service-host.
Wijs deze service-identiteit nu toe aan een rol in het vereiste bereik in uw Event Hubs-resources.
Azure-rollen toewijzen met behulp van Azure Portal
Wijs een van de Event Hubs-rollen toe aan de beheerde identiteit op het gewenste bereik (Event Hubs-naamruimte, resourcegroep, abonnement). Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.
Notitie
Zie Services die beheerde identiteiten ondersteunen voor Azure-resources voor een lijst met services die beheerde identiteiten ondersteunen.
De webtoepassing testen
- Een Event Hubs-naamruimte en een Event Hub maken.
- Implementeer de web-app in Azure. Zie de volgende sectie met tabbladen voor koppelingen naar de voorbeeldwebtoepassing op GitHub.
- Zorg ervoor dat de SendReceive.aspx is ingesteld als het standaarddocument voor de web-app.
- Identiteit inschakelen voor de web-app.
- Wijs deze identiteit toe aan de rol Event Hubs-gegevenseigenaar op naamruimteniveau of Event Hub-niveau.
- Voer de webtoepassing uit, voer de naamruimtenaam en event hubnaam, een bericht in en selecteer Verzenden. Selecteer Ontvangen om de gebeurtenis te ontvangen.
U vindt de voorbeeldwebtoepassing die gegevens verzendt en ontvangt van Event Hubs-resources in de GitHub-opslagplaats.
Installeer het nieuwste pakket van NuGet en begin met het verzenden van gebeurtenissen naar Event Hubs met behulp van EventHubProducerClient en het ontvangen van gebeurtenissen met behulp van EventHubConsumerClient.
Notitie
Zie Gebeurtenissen publiceren met azure-identiteitsvoorbeelden op GitHub voor een Java-voorbeeld dat gebruikmaakt van een beheerde identiteit om gebeurtenissen te publiceren naar een Event Hub.
protected async void btnSend_Click(object sender, EventArgs e)
{
await using (EventHubProducerClient producerClient = new EventHubProducerClient(txtNamespace.Text, txtEventHub.Text, new DefaultAzureCredential()))
{
// create a batch
using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
{
// add events to the batch. only one in this case.
eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(txtData.Text)));
// send the batch to the event hub
await producerClient.SendAsync(eventBatch);
}
txtOutput.Text = $"{DateTime.Now} - SENT{Environment.NewLine}{txtOutput.Text}";
}
}
protected async void btnReceive_Click(object sender, EventArgs e)
{
await using (var consumerClient = new EventHubConsumerClient(EventHubConsumerClient.DefaultConsumerGroupName, $"{txtNamespace.Text}.servicebus.windows.net", txtEventHub.Text, new DefaultAzureCredential()))
{
int eventsRead = 0;
try
{
using CancellationTokenSource cancellationSource = new CancellationTokenSource();
cancellationSource.CancelAfter(TimeSpan.FromSeconds(5));
await foreach (PartitionEvent partitionEvent in consumerClient.ReadEventsAsync(cancellationSource.Token))
{
txtOutput.Text = $"Event Read: { Encoding.UTF8.GetString(partitionEvent.Data.Body.ToArray()) }{ Environment.NewLine}" + txtOutput.Text;
eventsRead++;
}
}
catch (TaskCanceledException ex)
{
txtOutput.Text = $"Number of events read: {eventsRead}{ Environment.NewLine}" + txtOutput.Text;
}
}
}
Event Hubs voor Kafka
U kunt Apache Kafka-toepassingen gebruiken om berichten te verzenden naar en te ontvangen van Azure Event Hubs met behulp van OAuth voor beheerde identiteit. Zie het volgende voorbeeld op GitHub: Event Hubs voor Kafka : berichten verzenden en ontvangen met behulp van OAuth voor beheerde identiteit.
Voorbeelden
- .NET.
- Zie Gebeurtenissen publiceren met een beheerde identiteit voor een voorbeeld dat gebruikmaakt van het nieuwste Pakket Azure.Messaging.EventHubs
- Zie dit .NET-voorbeeld op GitHub voor een voorbeeld dat gebruikmaakt van het verouderde Microsoft.Azure.EventHubs-pakket
- Java: zie de volgende voorbeelden.
- Gebeurtenissen publiceren met azure-identiteitsvoorbeeld op GitHub.
- Als u wilt weten hoe u het Apache Kafka-protocol gebruikt om gebeurtenissen te verzenden naar en te ontvangen van een Event Hub met behulp van een beheerde identiteit, raadpleegt u het Voorbeeld van Event Hubs voor Kafka voor het verzenden en ontvangen van berichten met behulp van een beheerde identiteit.
Gerelateerde inhoud
- Zie het volgende artikel voor meer informatie over beheerde identiteiten voor Azure-resources: Wat zijn beheerde identiteiten voor Azure-resources?
- Zie de volgende gerelateerde artikelen:
- Aanvragen verifiëren bij Azure Event Hubs vanuit een toepassing met behulp van Microsoft Entra-id
- Aanvragen verifiëren bij Azure Event Hubs met behulp van Shared Access Signatures
- Toegang verlenen tot Event Hubs-resources met behulp van Microsoft Entra ID
- Toegang tot Event Hubs-resources autoriseren met Shared Access Signatures