Autentisera en hanterad identitet med Microsoft Entra-ID för åtkomst till Event Hubs-resurser

Azure Event Hubs stöder Microsoft Entra-autentisering med hanterade identiteter för Azure-resurser. Hanterade identiteter för Azure-resurser kan auktorisera åtkomst till Event Hubs-resurser med hjälp av Microsoft Entra-autentiseringsuppgifter från program som körs i azure virtual machines (VM), funktionsappar, vm-skalningsuppsättningar och andra tjänster. Genom att använda hanterade identiteter för Azure-resurser tillsammans med Microsoft Entra-autentisering kan du undvika att lagra autentiseringsuppgifter med dina program som körs i molnet. Den här artikeln visar hur du auktoriserar åtkomst till en händelsehubb med hjälp av en hanterad identitet från en virtuell Azure-dator.

Aktivera hanterade identiteter på en virtuell dator

Innan du använder hanterade identiteter för Azure-resurser för att komma åt Event Hubs-resurser från den virtuella datorn måste du först aktivera hanterade identiteter för Azure-resurser på den virtuella datorn. Mer information om hur du aktiverar hanterade identiteter för Azure-resurser finns i någon av följande artiklar:

Bevilja behörigheter till en hanterad identitet i Microsoft Entra-ID

Om du vill auktorisera en begäran till Event Hubs-tjänsten från en hanterad identitet i ditt program konfigurerar du först Azures rollbaserade åtkomstkontrollinställningar (Azure RBAC) för den hanterade identiteten. Azure Event Hubs definierar Azure-roller som omfattar behörigheter för att skicka och läsa från Event Hubs. När Azure-rollen tilldelas till en hanterad identitet beviljas den hanterade identiteten åtkomst till Event Hubs-data i lämpligt omfång. Mer information om hur du tilldelar Azure-roller finns i Autentisera med Microsoft Entra-ID för åtkomst till Event Hubs-resurser.

Använd Event Hubs med hanterade identiteter

Om du vill använda Event Hubs med hanterade identiteter tilldelar du en Event Hubs RBAC-roll i lämpligt omfång till identiteten. Proceduren i det här avsnittet använder ett enkelt program som körs under en hanterad identitet och som har åtkomst till Event Hubs-resurser.

Här använder vi ett exempelwebbprogram som finns i Azure App Service. Stegvisa instruktioner för hur du skapar ett webbprogram finns i Skapa en ASP.NET Core-webbapp i Azure

När programmet har skapats följer du dessa steg:

  1. Gå till Inställningar och välj Identitet.

  2. Välj den Status som ska vara .

  3. Spara inställningen genom att välja Spara.

    Screenshot of the Identity page showing the status of system-assigned identity set to ON.

  4. Välj Ja i informationsmeddelandet.

    När du har aktiverat den här inställningen skapas en ny tjänstidentitet i ditt Microsoft Entra-ID och konfigureras till App Service-värden.

    Tilldela nu den här tjänstidentiteten till en roll i det nödvändiga omfånget i dina Event Hubs-resurser.

Tilldela Azure-roller med hjälp av Azure-portalen

Tilldela en av Event Hubs-rollerna till den hanterade identiteten i önskat omfång (Event Hubs-namnområde, resursgrupp, prenumeration). Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

Kommentar

En lista över tjänster som stöder hanterade identiteter finns i Tjänster som stöder hanterade identiteter för Azure-resurser.

Testa webbprogrammet

  1. Skapa ett Event Hubs-namnområde och en händelsehubb.
  2. Distribuera webbappen till Azure. Se följande avsnitt med flikar för länkar till exempelwebbprogrammet på GitHub.
  3. Kontrollera att SendReceive.aspx har angetts som standarddokument för webbappen.
  4. Aktivera identitet för webbappen.
  5. Tilldela den här identiteten till rollen Event Hubs-dataägare på namnområdesnivå eller händelsehubbnivå.
  6. Kör webbprogrammet, ange namnområdets namn och händelsehubbnamn, ett meddelande och välj Skicka. Om du vill ta emot händelsen väljer du Ta emot.

Nu kan du starta webbappen och peka webbläsaren på aspx-exempelsidan. Du hittar exempelwebbprogrammet som skickar och tar emot data från Event Hubs-resurser på GitHub-lagringsplatsen.

Installera det senaste paketet från NuGet och börja skicka händelser till Event Hubs med EventHubProducerClientoch ta emot händelser med EventHubConsumerClient.

Kommentar

Ett Java-exempel som använder en hanterad identitet för att publicera händelser till en händelsehubb finns i Publicera händelser med Azure-identitetsexempel på GitHub.

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 för Kafka

Du kan använda Apache Kafka-program för att skicka meddelanden till och ta emot meddelanden från Azure Event Hubs med hjälp av den hanterade identiteten OAuth. Se följande exempel på GitHub: Event Hubs for Kafka – skicka och ta emot meddelanden med hjälp av den hanterade identiteten OAuth.

Exempel

.

Nästa steg