Accedi a Hub eventi di Azure da una VM utilizzando un'identità gestita

Questo articolo ti mostra come connetterti a Hub eventi di Azure da un'applicazione che gira su una macchina virtuale Azure (VM) utilizzando un'identità gestita. Quando usi un'identità gestita, la tua applicazione si autentica agli Event Hub senza memorizzare stringhe di connessione o chiavi di accesso nel codice o nella configurazione. Azure fornisce e ruota automaticamente le credenziali.

In questo articolo vengono completate le attività seguenti:

  • Abilita un'identità gestita assegnata al sistema su una VM.
  • Concedi all'identità gestita l'autorizzazione per inviare eventi a un hub di eventi.
  • Crea ed esegui un'applicazione di esempio sulla VM che utilizzi l'identità gestita.

Per capire come funziona l'autenticazione dell'identità gestita con gli Event Hubs, consulta Autenticazione dell'identità gestita per Hub eventi di Azure.

Prerequisiti

Abilita un'identità gestita sulla VM

Abilita un'identità gestita assegnata dal sistema sulla VM. Azure crea un'identità in Microsoft Entra ID legata al ciclo di vita della VM.

  1. Accedi al portale di Azure.

  2. Vai alla tua macchina virtuale.

  3. Nella pagina della VM, seleziona Identità di Sicurezza> nel menu sinistro.

  4. Nella pagina Identità , conferma di essere nella scheda Sistema assegnato .

  5. Per il campo Stato , seleziona On.

  6. Seleziona Salva nella barra dei comandi, poi seleziona per confermare.

    Dopo che Azure crea l'identità, l'ID dell'oggetto (principale) appare sulla pagina. Userai questa identità nella sezione successiva.

Per abilitare invece un'identità gestita assegnata dall'utente, vedi Configura identità gestite per le risorse Azure su una VM. Un'identità assegnata dall'utente è una risorsa autonoma che puoi assegnare a più di una VM.

Concedere all'identità gestita l'accesso agli Event Hub

Assegna un ruolo integrato Azure all'identità gestita in modo che possa inviare eventi al tuo event hub. Questo esempio assegna il ruolo di Data Sender di Hub eventi di Azure nell'ambito di un singolo event hub. Concedi il campo più ristretto che soddisfi le esigenze della tua domanda.

  1. Nel portale di Azure passare all'hub eventi.
  2. Nella pagina dell'hub eventi, seleziona Controllo accesso (IAM) dal menu sinistro.
  3. Seleziona Aggiungi>Aggiungi assegnazione di ruolo.
  4. Nella scheda Ruolo, seleziona Hub eventi di Azure Data Sender, e poi seleziona Next.
  5. Nella scheda Membri , per Assegna accesso a, selezionare Identità gestita.
  6. Seleziona + Seleziona membri, scegli l'identità gestita della macchina virtuale che hai abilitato nella sezione precedente, e poi seleziona Seleziona.
  7. Selezionare Rivedi e assegna per completare l'assegnazione di ruolo.

Per l'elenco completo di ruoli e ambiti, vedere Ruoli predefiniti di Azure per Hub eventi di Azure. Per assegnare i ruoli nel portale Azure, vedi Assegna ruoli Azure usando il portale Azure.

Note

La propagazione delle assegnazioni di ruolo può richiedere alcuni minuti. Se la tua applicazione non riesce ad autenticarsi immediatamente, attendi e riprova.

Crea ed esegui l'applicazione di esempio sulla VM

Crea un'applicazione console .NET che invii eventi al tuo hub eventi. Quando l'applicazione si attiva sulla VM, DefaultAzureCredential rileva automaticamente l'identità gestita, quindi non fornisci una stringa di connessione o una key.

  1. Connettersi alla VM. Per una VM Windows, usa Desktop remoto. Per una VM Linux, usa SSH.

  2. In un terminale sulla VM, crea un progetto e aggiungi i pacchetti richiesti:

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Sostituire il contenuto di Program.cs con il codice seguente. Sostituisci <namespace> con il nome dello spazio del tuo Event Hub e <event-hub-name> con il nome del tuo hub evento.

    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.");
    
  4. Compila ed esegui l'applicazione sulla VM:

    dotnet run
    

    L'applicazione utilizza l'identità gestita della VM per autenticare e inviare gli eventi. Quando gli eventi vengono inviati, la console visualizza Events sent to the event hub.

  5. Per confermare che gli eventi siano arrivati, usa Esplora dati nel portale di Azure per il tuo hub eventi, oppure usa le metriche della pagina Panoramica dello spazio dei nomi.

Tip

Quando usi un'identità gestita assegnata dall'utente, o quando sono disponibili più identità sulla VM, imposta l'ID del client in modo che DefaultAzureCredential scelga l'identità corretta. Per maggiori informazioni, vedi DefaultAzureCredentialOptions.ManagedIdentityClientId.