Accédez à Azure Event Hubs depuis une VM en utilisant une identité managée

Cet article vous montre comment vous connecter à Azure Event Hubs depuis une application qui fonctionne sur une machine virtuelle Azure (VM) en utilisant une identité managée. Lorsque vous utilisez une identité managée, votre application s’authentifie aux Event Hubs sans stocker de chaînes de connexion ou de clés d’accès dans le code ou la configuration. Azure provisionne et fait pivoter automatiquement les identifiants.

Dans cet article, vous allez effectuer les tâches suivantes :

  • Activez une identité managée assignée au système sur une VM.
  • Accordez à l’identité gérée la permission d’envoyer des événements vers un hub d’événements.
  • Créer et exécuter une application d’exemple sur la VM qui utilise l’identité gérée.

Pour comprendre comment fonctionne l’authentification d’identité managée avec les Event Hubs, voir Authentification d’identité managée pour Azure Event Hubs.

Prerequisites

Activez une identité gérée sur la VM

Activez une identité managée assignée au système sur la VM. Azure crée une identité dans Microsoft Entra ID liée au cycle de vie de la VM.

  1. Connectez-vous au portail Azure.

  2. Accédez à votre machine virtuelle.

  3. Sur la page VM, sélectionnez Identité de sécurité> dans le menu de gauche.

  4. Sur la page Identité , confirmez que vous êtes dans l’onglet Système assigné .

  5. Pour le champ Statut , sélectionnez Activé.

  6. Sélectionnez Enregistrer dans la barre de commandes, puis sélectionnez Oui pour confirmer.

    Après qu’Azure ait créé l’identité, l’ID de l’objet (principal) apparaît sur la page. Vous utilisez cette identité dans la section suivante.

Pour activer une identité managée attribuée par l’utilisateur, voir Configurer les identités gérées pour les ressources Azure sur une VM. Une identité attribuée par l’utilisateur est une ressource autonome que vous pouvez attribuer à plusieurs VM.

Accorder à l’identité gérée l’accès aux Event Hubs

Attribuez un rôle intégré Azure à l’identité gérée afin qu’il puisse envoyer des événements à votre hub d’événements. Cet exemple attribue le rôle Azure Event Hubs Data Sender dans le champ d’un seul event hub. Accordez le champ d’application le plus restreint qui répond aux besoins de votre demande.

  1. Dans le portail Azure, accédez à votre hub d’événements.
  2. Sur la page du hub événement, sélectionnez Contrôle d’accès (IAM) dans le menu de gauche.
  3. Sélectionnez Ajouter>Ajouter une attribution de rôle.
  4. Dans l’onglet Rôle, sélectionnez Azure Event Hubs Data Sender, puis sélectionnez Suivant.
  5. Sous l’onglet Membres , pour Affecter l’accès, sélectionnez Identité managée.
  6. Sélectionner + Sélectionner des membres, choisir l’identité gérée par la machine virtuelle que vous avez activée dans la section précédente, puis sélectionner Sélectionner.
  7. Sélectionnez Vérifier + attribuer pour terminer l’attribution de rôle.

Pour obtenir la liste complète des rôles et des portées, consultez les rôles intégrés Azure pour Azure Event Hubs. Pour attribuer des rôles dans le portail Azure, voir Assigner des rôles Azure via le portail Azure.

Note

La propagation des attributions de rôles peut prendre quelques minutes. Si votre application ne peut pas s’authentifier immédiatement, attendez et réessayez.

Créer et exécuter l’application d’exemple sur la VM

Créez une application console .NET qui envoie des événements vers votre hub d’événements. Lorsque l'application s'exécute sur la VM, DefaultAzureCredential elle détecte automatiquement l'identité gérée, donc vous ne fournissez pas de chaîne de connexion ou de clé.

  1. Connectez-vous à la machine virtuelle. Pour une machine virtuelle Windows, utilisez Bureau à distance. Pour une machine virtuelle Linux, utilisez SSH.

  2. Dans un terminal sur la VM, créez un projet et ajoutez les paquets requis :

    dotnet new console --name EventHubsManagedIdentitySample
    cd EventHubsManagedIdentitySample
    dotnet add package Azure.Messaging.EventHubs
    dotnet add package Azure.Identity
    
  3. Remplacez le contenu de Program.cs par le code suivant. Remplacez-le <namespace> par le nom de votre espace de noms Event Hub et <event-hub-name> par celui de votre event hub.

    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. Construisez et exécutez l’application sur la VM :

    dotnet run
    

    L’application utilise l’identité gérée de la VM pour authentifier et envoyer les événements. Lorsque les événements sont envoyés, la console s’affiche Events sent to the event hub.

  5. Pour confirmer que les événements sont arrivés, utilisez l’Data Explorer dans le portail Azure pour votre hub d’événements, ou les métriques sur la page Aperçu de l’espace de noms.

Tip

Lorsque vous utilisez une identité managée attribuée par l’utilisateur, ou lorsque plusieurs identités sont disponibles sur la VM, définissez l’ID client afin que DefaultAzureCredential cela sélectionne la bonne identité. Pour plus d’informations, voir DefaultAzureCredentialOptions.ManagedIdentityClientId.