Authentification par identité managée pour Azure Event Hubs

Une identité gérée est une identité dans Microsoft Entra ID que Azure gère pour vous, afin qu’une application puisse s’authentifier auprès de services supportant l’authentification Microsoft Entra sans stocker d’identifiants. Azure Event Hubs prend en charge l’authentification Microsoft Entra avec des identités gérées pour les ressources Azure, ce qui permet aux applications fonctionnant sous Azure de se connecter aux Event Hubs sans intégrer des chaînes de connexion ou des clés d’accès dans le code ou la configuration.

Lorsque vous utilisez une identité managée avec l’authentification Microsoft Entra, les applications s’exécutant dans des services tels qu’Machines virtuelles Azure, Azure Functions, Azure App Service et Virtual Machine Scale Sets peuvent accéder aux données Event Hubs à l’aide d’identifiants qu’Azure fournit et renouvelle automatiquement. Cette approche élimine le risque de fuite des clés et réduit la charge opérationnelle liée à la gestion des accréditations.

Pour un exemple étape par étape, voir Access Azure Event Hubs depuis une VM utilisant une identité managée.

Fonctionnement de l’authentification d’identité managée

L’accès à une ressource Event Hubs via une identité gérée se fait en deux étapes :

  • Authentification : L’identité gérée demande un jeton OAuth 2.0 à Microsoft Entra ID. Azure fournit automatiquement l’identité en fonction de l’environnement de calcul où le code s’exécute, de sorte qu’aucun secret n’est stocké ou transmis dans l’application.
  • Autorisation : Le jeton est présenté au service Event Hubs, qui accorde l’accès en fonction des rôles de contrôle d’accès basés sur les rôles (RBAC) d’Azure attribués à l’identité.

Pour une description complète du flux d’authentification et d’autorisation, voir Autoriser l’accès aux ressources Azure Event Hubs à l’aide de Microsoft Entra ID.

Types d’identités managées

Event Hubs fonctionne avec les deux types d’identités gérées :

  • Identité managée attribuée au système : Activée directement sur une ressource Azure, telle qu’une machine virtuelle ou une application App Service. Son cycle de vie est lié à cette ressource, et seule cette ressource peut l’utiliser pour demander des jetons.
  • Identité managée attribuée par l’utilisateur : Créée comme une ressource Azure autonome et assignée à une ou plusieurs ressources Azure, afin que plusieurs charges de travail puissent partager la même identité.

Pour en savoir plus sur les deux types et quand choisir chacun, voir Types d’identité gérés. Pour la liste des services qui prennent en charge les identités gérées, voir Services qui prennent en charge les identités gérées pour les ressources Azure.

Azure rôles intégrés pour les Event Hubs

Après avoir activé une identité managée, attribuez-lui un rôle intégré Azure qui définit ses permissions sur les données des Event Hubs. Azure propose les rôles intégrés suivants pour autoriser l’accès aux données des Event Hubs avec Microsoft Entra ID :

Role Description
Propriétaire de données Azure Event Hubs Accorde un accès complet aux ressources des Event Hubs.
Azure Event Hubs Expéditeur de données Autorise l’envoi d’événements aux ressources des Event Hubs.
Récepteur de données Azure Event Hubs Accorde l’autorisation de recevoir des événements à partir des ressources Event Hubs.

Vous pouvez attribuer un rôle au niveau d’un groupe de consommateurs, d’un hub d’événements, d’un espace de noms, d’un groupe de ressources ou d’un abonnement. Accordez le champ d’application le plus restreint qui répond aux besoins de la demande. Pour la liste complète des périmètres et des détails des rôles, voir Azure built-in roles for Azure Event Hubs. Pour attribuer un rôle dans le portail Azure, voir Assigner des rôles Azure via le portail Azure.

Comportement d’expiration du token

Lorsque vous retirez une identité gérée d’un rôle RBAC dans un Event Hubs, le changement ne prend pas effet immédiatement pour une application en cours. Si le service source ou l’application ne redémarre pas, il peut continuer à envoyer ou recevoir des événements depuis le hub d’événements jusqu’à l’expiration du jeton. La validité par défaut du jeton est de 24 heures. Ce comportement est intentionnel.

Pour révoquer immédiatement l’accès après avoir supprimé l’identité du rôle, redémarrez l’application ou le service source afin que le jeton existant expire.

Support du SDK client

Les bibliothèques clients Kit de développement logiciel (SDK) Azure acquièrent le token d’identité géré pour vous via DefaultAzureCredential, qui détecte automatiquement l’identité gérée disponible dans l’environnement d’hébergement. Vous transmettez les informations d’identification à EventHubProducerClient pour envoyer des événements et à EventHubConsumerClient pour en recevoir, sans fournir de chaîne de connexion ni de clé.

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);

Installez le package Azure.Messaging.EventHubs le plus récent depuis NuGet pour utiliser ces clients. Pour obtenir des exemples exécutables, voir :

Centres d’événements pour Apache Kafka

Les applications Apache Kafka peuvent envoyer des événements vers et recevoir des événements depuis Azure Event Hubs en utilisant une identité managée avec OAuth. Pour un exemple Java, voir Event Hubs for Kafka : envoyer et recevoir des messages via l’OAuth à identité managée.