Autenticare un'identità gestita con Microsoft Entra ID per accedere alle risorse di Hub eventi

Hub eventi di Azure supporta l'autenticazione di Microsoft Entra con identità gestite per le risorse di Azure. Le identità gestite per le risorse di Azure possono autorizzare l'accesso alle risorse di Hub eventi usando le credenziali di Microsoft Entra dalle applicazioni in esecuzione in Azure Macchine virtuali (VM), app per le funzioni, set di scalabilità di macchine virtuali e altri servizi. Usando le identità gestite per le risorse di Azure insieme all'autenticazione Microsoft Entra, è possibile evitare di archiviare le credenziali con le applicazioni eseguite nel cloud. Questo articolo illustra come autorizzare l'accesso a un hub eventi usando un'identità gestita da una macchina virtuale di Azure.

Abilitare le identità gestite su una macchina virtuale

Prima di usare le identità gestite per le risorse di Azure per accedere alle risorse di Hub eventi dalla macchina virtuale, è necessario abilitare le identità gestite per le risorse di Azure nella macchina virtuale. Per informazioni su come abilitare le identità gestite per le risorse di Azure, vedere uno di questi articoli:

Concedere le autorizzazioni a un'identità gestita in Microsoft Entra ID

Per autorizzare una richiesta al servizio Hub eventi da un'identità gestita nell'applicazione, configurare innanzitutto le impostazioni di controllo degli accessi in base al ruolo di Azure per l'identità gestita. Hub eventi di Azure definisce i ruoli di Azure che includono le autorizzazioni per l'invio e la lettura da Hub eventi. Quando il ruolo di Azure viene assegnato a un'identità gestita, all'identità gestita viene concesso l'accesso ai dati di Hub eventi nell'ambito appropriato. Per altre informazioni sull'assegnazione dei ruoli di Azure, vedere Eseguire l'autenticazione con Microsoft Entra ID per l'accesso alle risorse di Hub eventi.

Uso di Hub eventi con le identità gestite

Per usare Hub eventi con identità gestite, assegnare un ruolo controllo degli accessi in base al ruolo di Hub eventi nell'ambito appropriato all'identità. La procedura descritta in questa sezione usa una semplice applicazione eseguita con un'identità gestita e accede alle risorse di Hub eventi.

Di seguito viene usata un'applicazione Web di esempio ospitata nel servizio app Azure. Per istruzioni dettagliate sulla creazione di un'applicazione Web, vedere Creare un'app Web ASP.NET Core in Azure

Dopo aver creato l'applicazione, seguire questa procedura:

  1. Passare a Impostazioni e selezionare Identità.

  2. Selezionare lo stato su .

  3. Selezionare Salva per salvare l'impostazione.

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

  4. Selezionare nel messaggio informativo.

    Dopo aver abilitato questa impostazione, viene creata una nuova identità del servizio nell'ID Microsoft Entra e configurata nell'host servizio app.

    Assegnare ora questa identità del servizio a un ruolo nell'ambito richiesto nelle risorse di Hub eventi.

Per assegnare ruoli di Azure usando il portale di Azure

Assegnare uno dei ruoli di Hub eventi all'identità gestita nell'ambito desiderato (spazio dei nomi di Hub eventi, gruppo di risorse, sottoscrizione). Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Nota

Per un elenco dei servizi che supportano le identità gestite, vedere Servizi che supportano le identità gestite per le risorse di Azure.

Testare l'applicazione Web

  1. Creare uno spazio dei nomi di Hub eventi e un hub eventi.
  2. Distribuire l'app Web in Azure. Vedere la sezione a schede seguente per i collegamenti all'applicazione Web di esempio in GitHub.
  3. Assicurarsi che SendReceive.aspx sia impostato come documento predefinito per l'app Web.
  4. Abilitare l'identità per l'app Web.
  5. Assegnare questa identità al ruolo Proprietario dati di Hub eventi a livello di spazio dei nomi o hub eventi.
  6. Eseguire l'applicazione Web, immettere il nome dello spazio dei nomi e il nome dell'hub eventi, un messaggio e selezionare Invia. Per ricevere l'evento, selezionare Ricevi.

È ora possibile avviare l'applicazione Web e puntare il browser alla pagina aspx di esempio. È possibile trovare l'applicazione Web di esempio che invia e riceve i dati dalle risorse di Hub eventi nel repository GitHub.

Installare il pacchetto più recente da NuGet e iniziare a inviare eventi a Hub eventi usando EventHubProducerClient e ricevere eventi usando EventHubConsumerClient.

Nota

Per un esempio Java che usa un'identità gestita per pubblicare eventi in un hub eventi, vedere Pubblicare eventi con l'esempio di identità di Azure in 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;
        }
    }
}

Hub eventi per Kafka

È possibile usare le applicazioni Apache Kafka per inviare e ricevere messaggi da Hub eventi di Azure usando OAuth con identità gestita. Vedere l'esempio seguente in GitHub: Hub eventi per Kafka - Inviare e ricevere messaggi usando OAuth identità gestita.

Esempi

.

Passaggi successivi