Autenticazione con identità gestita per Hub eventi di Azure

Un'identità gestita è un'identità in Microsoft Entra ID che Azure gestisce per te, così un'applicazione può autenticarsi ai servizi che supportano l'autenticazione Microsoft Entra senza memorizzare alcuna credenza. Hub eventi di Azure supporta l'autenticazione Microsoft Entra con identità gestite per le risorse Azure, che consente alle applicazioni in esecuzione in Azure di connettersi agli Event Hub senza dover incorporare stringhe di connessione o chiavi di accesso nel codice o nella configurazione.

Quando si utilizza un'identità gestita insieme all'autenticazione Microsoft Entra, le applicazioni in esecuzione in servizi come Macchine virtuali di Azure, Funzioni di Azure, Servizio app di Azure e set di scalabilità di macchine virtuali possono accedere ai dati di Event Hubs usando credenziali di cui Azure esegue automaticamente il provisioning e la rotazione. Questo approccio elimina il rischio di chiavi trapelate e riduce il sovraccarico operativo della gestione delle credenziali.

Per un esempio passo dopo passo, vedi Access Hub eventi di Azure da una VM usando un'identità gestita.

Funzionamento dell'autenticazione dell'identità gestita

L'accesso a una risorsa Event Hub tramite un'identità gestita è un processo in due fasi:

  • Autenticazione: L'identità gestita richiede un token OAuth 2.0 da Microsoft Entra ID. Azure fornisce automaticamente l'identità in base all'ambiente di calcolo in cui il codice viene eseguito, quindi nessun segreto viene memorizzato o passato nell'applicazione.
  • Autorizzazione: Il token viene inviato al servizio Event Hubs, che concede l'accesso in base ai ruoli di controllo degli accessi in base al ruolo (RBAC) di Azure assegnati all'identità.

Per una descrizione completa del flusso di autenticazione e autorizzazione, vedi Autorizzare l'accesso alle risorse di Hub eventi di Azure usando Microsoft Entra ID.

Tipi di identità gestita

Event Hubs lavora con entrambi i tipi di identità gestite:

  • Identità gestita assegnata al sistema: abilitata direttamente su una risorsa Azure, come una macchina virtuale o un'app App Service. Il suo ciclo di vita è legato a quella risorsa, e solo quella risorsa può usarla per richiedere token.
  • Identità gestita assegnata dall'utente: Creata come risorsa Azure autonoma e assegnata a una o più risorse Azure, così che più carichi di lavoro possano condividere la stessa identità.

Per saperne di più sui due tipi e quando scegliere ciascuno, consulta Tipi di identità gestiti. Per l'elenco dei servizi che supportano le identità gestite, vedi Servizi che supportano identità gestite per le risorse Azure.

Azure ruoli integrati per gli Event Hub

Dopo aver abilitato un'identità gestita, assegnale un ruolo integrato in Azure che definisce i suoi permessi sui dati degli Event Hubs. Azure fornisce i seguenti ruoli integrati per l'autorizzazione dell'accesso ai dati degli Event Hub con Microsoft Entra ID:

Ruolo Description
Proprietario dei dati di Hub eventi di Azure Concede accesso completo alle risorse degli Event Hubs.
Hub eventi di Azure mittente di dati Concede il permesso di inviare eventi alle risorse degli Event Hubs.
Ricevitore dati di Azure Event Hub Concede il permesso di ricevere eventi dalle risorse di Event Hubs.

Puoi assegnare un ruolo a livello di gruppo di consumatori, hub event, namespace, gruppo risorse o abbonamento. Concedere l'ambito più ristretto che soddisfi le esigenze della domanda. Per l'elenco completo di ambiti e dettagli sui ruoli, consulta Azure built-in roles per Hub eventi di Azure. Per assegnare un ruolo nel portale Azure, vedi Assegna ruoli Azure usando il portale Azure.

Comportamento di scadenza dei token

Quando rimuovi un'identità gestita da un ruolo RBAC di un Event Hubs, la modifica non entra in vigore immediatamente per un'applicazione in esecuzione. Se il servizio o l'app di origine non si riavviano, possono continuare a inviare eventi o ricevere eventi dall'event hub fino a quando il token non scade. La validità predefinita del token è di 24 ore. Questo comportamento è impostato a livello di progettazione.

Per revocare immediatamente l'accesso dopo aver rimosso l'identità dal ruolo, riavvia l'app o il servizio di origine in modo che il token esistente scada.

Supporto SDK client

Le librerie client Azure SDK acquisiscono il token di identità gestita per te tramite DefaultAzureCredential, che rileva automaticamente l'identità gestita disponibile nell'ambiente hosting. Si passa la credenziale a EventHubProducerClient per inviare eventi e a EventHubConsumerClient per ricevere eventi, senza fornire una stringa di connessione né una chiave.

var credential = new DefaultAzureCredential();

// Send events with a managed identity.
var producerClient = new EventHubProducerClient(
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

// Receive events with a managed identity.
var consumerClient = new EventHubConsumerClient(
    EventHubConsumerClient.DefaultConsumerGroupName,
    "<namespace>.servicebus.windows.net",
    "<event-hub-name>",
    credential);

Installa l'ultimo Azure. Messaging.EventHubs package di NuGet per utilizzare questi client. Per esempi eseguibili, vedi:

Hub eventi per Apache Kafka

Le applicazioni Apache Kafka possono inviare eventi e ricevere eventi da Hub eventi di Azure utilizzando l'identità gestita con OAuth. Per un esempio Java, vedi Event Hubs for Kafka: invia e ricevi messaggi usando l'identità gestita OAuth.