Authentification et autorisation avec Microsoft Entra ID

Cet article explique comment authentifier les clients de publication Azure Event Grid à l’aide de Microsoft Entra ID.

Vue d’ensemble

La plateforme Microsoft Identity fournit une gestion intégrée de l'authentification et du contrôle d'accès pour les ressources et les applications qui utilisent Microsoft Entra ID comme fournisseur d'identité. Utilisez la plateforme d'identité Microsoft pour fournir une prise en charge de l'authentification et de l'autorisation dans vos applications. Elle est basée sur des normes ouvertes telles que OAuth 2.0 et OpenID Connect et offre des outils et des bibliothèques open source qui prennent en charge de nombreux scénarios d’authentification. Elle fournit des fonctionnalités avancées, telles que l’accès conditionnel, qui vous permet de définir des stratégies qui nécessitent l’authentification multifacteur ou autorisent l’accès à partir d’emplacements spécifiques, par exemple.

Un avantage qui améliore votre niveau de sécurité lorsque vous utilisez Microsoft Entra ID est que vous n'avez pas besoin de stocker les informations d'identification, telles que les clés d'authentification, dans le code ou dans les référentiels. Au lieu de cela, vous comptez sur l'acquisition de jetons d'accès OAuth 2.0 à partir de la plateforme d'identité Microsoft que votre application présente lors de l'authentification auprès d'une ressource protégée. Vous pouvez enregistrer votre application de publication d'événements avec Microsoft Entra ID et obtenir un principal de service associé à votre application que vous gérez et utilisez. Au lieu de cela, vous pouvez utiliser des identités managées, à savoir le système affecté ou l’utilisateur affecté, pour un modèle de gestion des identités encore plus simple, car certains aspects du cycle de vie des identités sont managés pour vous.

Le contrôle d’accès en fonction du rôle (RBAC) vous permet de configurer l’autorisation de telle sorte que certains principaux de sécurité (identités pour les utilisateurs, les groupes ou les applications) disposent d’autorisations spécifiques pour exécuter des opérations sur les ressources Azure. De cette façon, le principal de sécurité utilisé par une application cliente qui envoie des événements à Event Grid doit être associé au rôle RBAC EventGrid Data Sender.

Principaux de sécurité

Deux grandes catégories de principaux de sécurité s’appliquent lorsque vous discutez de l’authentification d’un client de publication Event Grid :

  • Les identités managées. Une identité managée peut être attribuée par le système, que vous activez sur une ressource Azure et qui est associé uniquement à cette ressource, ou à l’utilisateur affecté, que vous créez et nommez explicitement. Les identités managées affectées par l’utilisateur peuvent être associées à plusieurs ressources.
  • Le principal de sécurité de l’application. Il s'agit d'un type d'entité de sécurité qui représente une application qui accède aux ressources protégées par Microsoft Entra ID.

Quel que soit le principal de sécurité utilisé, une identité managée ou un principal de sécurité d'application, votre client utilise cette identité pour s'authentifier auprès de Microsoft Entra ID et obtenir un jeton d'accès OAuth 2.0 envoyé avec les demandes lors de l'envoi d'événements à Event Grid. Ce jeton est signé par chiffrement, et lorsqu’Event Grid le reçoit, le jeton est validé. Par exemple, l’audience (destinataire prévu du jeton) est confirmée en tant qu’Event Grid (https://eventgrid.azure.net), entre autres choses. Le jeton contient des informations sur l’identité du client. Event Grid prend cette identité et vérifie que le client a le rôle EventGrid Data Sender qui lui est assigné. Plus précisément, Event Grid valide que l’identité a l’autorisation Microsoft.EventGrid/events/send/action dans un rôle RBAC associé à l’identité avant d’autoriser la fin de la requête de publication d’événement.

Si vous utilisez le Kit de développement logiciel (SDK) Event Grid, vous n’avez pas à vous soucier des détails sur la façon d’implémenter l’acquisition de jetons d’accès et sur la façon de l’inclure à chaque requête à Event Grid, car le Kit de développement logiciel (SDK) de plan de données Event Grid le fait pour vous.

Étapes de configuration du client pour utiliser l'authentification Microsoft Entra

Effectuez les étapes suivantes pour configurer votre client afin qu'il utilise l'authentification Microsoft Entra lors de l'envoi d'événements à un sujet, un domaine ou un espace de noms partenaire.

  1. Créez un principal de sécurité ou utilisez-en un déjà existant pour vous authentifier. Vous pouvez utiliser une identité managée ou un principal de service d’application.
  2. Accordez l’autorisation à un principal de sécurité pour publier des événements en affectant le rôle EventGrid Data Sender au principal de sécurité.
  3. Utilisez le Kit de développement logiciel (SDK) Event Grid pour publier des événements sur une instance Event Grid.

S’authentifier à l’aide d’une identité managée

Les identités managées sont des identités associées aux ressources Azure. Les identités managées fournissent une identité que les applications utilisent lors de l'utilisation de ressources Azure prenant en charge l'authentification Microsoft Entra. Les applications peuvent utiliser l'identité managée de la ressource d'hébergement, comme une machine virtuelle ou un service Azure App, pour obtenir les jetons Microsoft Entra présentés avec la requête lors de la publication d'événements sur Event Grid. Lorsque l’application se connecte, Event Grid lie le contexte de l’entité managée au client. Une fois associé à une identité managée, votre client de publication Event Grid peut effectuer toutes les opérations autorisées. L’autorisation est accordée en associant une entité managée à un rôle RBAC Event Grid.

L’identité managée fournit aux services Azure une identité gérée automatiquement dans Microsoft Entra ID. Contrairement aux autres méthodes d’authentification, vous n’avez pas besoin de stocker et de protéger les clés d’accès ou les signatures d’accès partagé (SAP) dans le code ou la configuration de votre application, que ce soit pour l’identité elle-même ou pour les ressources auxquelles vous devez accéder.

Pour authentifier votre client de publication d’événements à l’aide d’identités managées, commencez par choisir le service d’hébergement Azure pour votre application cliente, puis activez les identités managées par le système ou attribuées à l’utilisateur sur cette instance de service Azure. Par exemple, vous pouvez activer les identités managées sur une machine virtuelle, ou une instance Azure App Service ou Azure Functions.

Lorsque vous disposez d’une identité managée configurée dans un service d’hébergement, attribuez l’autorisation de publier des événements à cette identité.

S’authentifier en utilisant un principal de sécurité d’une application cliente

Outre les identités managées, une autre option d’identité consiste à créer un principal de sécurité pour votre application cliente. À cette fin, vous devez enregistrer votre application avec Microsoft Entra ID. L'enregistrement de votre application est un geste par lequel vous déléguez le contrôle de gestion des identités et des accès à Microsoft Entra ID. Suivez les étapes décrites dans la section Inscrire une application et dans la section Ajouter un secret client. Veuillez passer en revue les prérequis avant de commencer.

Une fois que vous avez un principal de sécurité d’application et que vous avez suivi les étapes ci-dessus, attribuez l’autorisation de publier des événements à cette identité.

Notes

Si vous inscrivez une application dans le portail, un objet application et un principal de service sont automatiquement créés dans votre tenant (locataire) de base. Vous pouvez également utiliser Microsoft Graph pour inscrire votre application. Si vous inscrivez/créez une application à l’aide des API Microsoft Graph, la création de l’objet principal de service devient une étape distincte.

Attribuer une autorisation à un principal de sécurité pour publier des événements

L’identité utilisée pour publier des événements dans Event Grid doit disposer de l’autorisation Microsoft.EventGrid/events/send/action qui lui permet d’envoyer des événements à Event Grid. Cette autorisation est incluse dans le rôle RBAC intégré Event Grid Data Sender. Ce rôle peut être attribué à un principal de la sécurité, pour une étendue donnée, qui peut être un groupe d’administration, un abonnement Azure, un groupe de ressources ou un espace de noms Event Grid, un domaine ou un espace de noms de partenaire spécifique. Suivez les étapes décrites dans Attribuer des rôles Azure à l’aide du portail Azure pour affecter un principal de sécurité au rôle d’EventGrid Data Sender et, de cette façon, accorder à une application utilisant ce principal de sécurité l’accès pour envoyer des événements. Vous pouvez également définir un rôle personnalisé qui comprend l’autorisation Microsoft.EventGrid/events/send/action et affectez ce rôle personnalisé à votre principal de sécurité.

Une fois les privilèges RBAC pris en charge, vous pouvez désormais développer votre application cliente pour envoyer des événements à Event Grid.

Notes

Event Grid prend en charge d’autres rôles RBAC, pour d’autres objectifs que l’envoi d’événements. Si vous souhaitez en savoir plus, consultez Rôles intégrés à Event Grid.

Publier des événements à l’aide du Kit de développement logiciel (SDK) client Event Grid

Utilisez le Kit de développement logiciel (SDK) Event Grid pour publier des événements sur une instance Event Grid. Le SDK d'Event Grid prend en charge toutes les méthodes d'authentification, y compris l'authentification Microsoft Entra.

Voici l’exemple de code qui publie des événements dans Event Grid à l’aide du kit de développement logiciel (SDK) .NET. Vous pouvez obtenir le point de terminaison de la rubrique sur la page Vue d’ensemble de votre rubrique Event Grid dans le portail Azure. Il est au format : https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Prérequis

Vous trouverez ci-dessous les conditions préalables à l’authentification auprès d’Event Grid.

Publier des événements avec l’authentification Microsoft Entra

Pour envoyer des événements à une rubrique, un domaine ou un espace de noms de partenaire, vous pouvez générer le client comme suit. La première version d’API à prendre en charge l’authentification Microsoft Entra est 2018-01-01. Utilisez cette version de l’API ou une version plus récente dans votre application.

Exemple :

Cet extrait de code C# crée un client de serveur de publication Event Grid à l’aide d’une application (principal de service) assortie d’un secret client, pour activer la méthode DefaultAzureCredential dont vous aurez besoin pour ajouter la bibliothèque Azure.Identity. Si vous utilisez le Kit de développement logiciel (SDK) officiel, celui-ci gère la version à votre place.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Pour plus d’informations, consultez les articles suivants :

Désactiver l’authentification par clé d’accès et signature d’accès partagé

L'authentification Microsoft Entra offre une prise en charge d'authentification supérieure à celle offerte par l'authentification par clé d'accès ou par jeton de signature d'accès partagé (SAS). Avec l'authentification Microsoft Entra, l'identité est validée par rapport au fournisseur d'identité Microsoft Entra. En tant que développeur, vous n'aurez pas à gérer les clés dans votre code si vous utilisez l'authentification Microsoft Entra. Vous bénéficierez également de toutes les fonctionnalités de sécurité intégrées à la plateforme Microsoft Identity, telles que l’accès conditionnel, qui peuvent vous aider à renforcer la posture de sécurité de votre application.

Une fois que vous décidez d'utiliser l'authentification Microsoft Entra, vous pouvez désactiver l'authentification basée sur les clés d'accès ou les jetons SAS.

Remarque

L’authentification par clés d’accès ou jeton SAS constitue une forme d’authentification locale. vous entendrez parfois parler de « authentification locale » lorsque vous discuterez de cette catégorie de mécanismes d'authentification qui ne reposent pas sur Microsoft Entra ID. Le paramètre d’API utilisé pour désactiver l’authentification locale est appelé, de manière appropriée, disableLocalAuth.

Portail Azure

Quand vous créez une rubrique, vous pouvez désactiver l’authentification locale sous l’onglet Avancé de la page Créer une rubrique.

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

Pour une rubrique existante, suivez les étapes ci-dessous pour désactiver l’authentification locale :

  1. Accédez à la page Rubrique Event Grid pour la rubrique, puis sélectionnez Activé sous Authentification locale.

    Screenshot showing the Overview page of an existing topic.

  2. Dans la fenêtre contextuelle Authentification locale, sélectionnez Désactivé, puis OK.

    Screenshot showing the Local Authentication window.

Azure CLI

La commande CLI suivante montre comment créer une rubrique personnalisée lorsque l’authentification locale est désactivée. La fonctionnalité Désactiver l’authentification locale est actuellement disponible en version préliminaire et vous devez utiliser la version de l’API 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

Pour référence, Voici les valeurs de type de ressource que vous pouvez utiliser en fonction de la rubrique que vous créez ou mettez à jour.

Type de rubrique Type de ressource
Domaines Microsoft.EventGrid/domains
Espace de noms de partenaire Microsoft.EventGrid/partnerNamespaces
Rubrique personnalisée Microsoft.EventGrid/topics

Azure PowerShell

Si vous utilisez PowerShell, utilisez les applets de commande suivantes pour créer une rubrique personnalisée pour laquelle l’authentification locale est désactivée.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Notes

Ressources