Authentifier une identité managée avec Microsoft Entra ID pour accéder aux ressources Azure Relay
La fonctionnalité Identités managées pour les ressources Azure vous permet de créer une identité sécurisée associée au déploiement sous lequel s’exécute le code de votre application. Vous pouvez ensuite associer cette identité à des rôles de contrôle d’accès qui accordent des autorisations personnalisées pour l’accès aux ressources Azure nécessaires à votre application.
Avec les identités managées, la plateforme Azure gère cette identité d’exécution. Il n'est pas nécessaire de stocker et de protéger des clés d'accès 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. Une application cliente Relay exécutée dans une application Azure App Service ou dans une machine virtuelle prenant en charge les identités managées pour les ressources Azure n'a pas besoin de gérer des clés et des règles SAS, ou d'autres jetons d'accès. L'application cliente a uniquement besoin de l'adresse du point de terminaison de l'espace de noms Relay. Lorsque l'application se connecte, Relay lie le contexte de l'entité managée au client dans le cadre d'une opération illustrée plus loin dans cet article. Une fois associé à une identité managée, votre client Relay peut effectuer toutes les opérations autorisées. L'autorisation est accordée en associant une identité managée à des rôles Relay.
Remarque
Cette fonctionnalité est en disponibilité générale dans toutes les régions, y compris Microsoft Azure géré par 21Vianet.
Vue d’ensemble
Quand un principal de sécurité (un utilisateur, un groupe ou une application) tente d’accéder à une entité de Relais, la requête doit être autorisée. Avec Microsoft Entra ID, l’accès à une ressource est un processus en deux étapes.
- Pour commencer, l’identité du principal de sécurité est authentifiéeet un jeton OAuth 2.0 est renvoyé. Le nom de ressource à utiliser pour demander un jeton est
https://relay.azure.net
. Si une application s’exécute dans une entité Azure telle qu’une machine virtuelle Azure, un groupe de machines virtuelles identiques ou une application de fonction Azure, elle peut utiliser une identité managée pour accéder aux ressources. - Ensuite, ce jeton est transmis dans le cadre d’une requête adressée au Service de relais pour autoriser l’accès à la ressource spécifiée (connexions hybrides, relais WCF). Microsoft Entra autorise les droits d’accès aux ressources sécurisées via le contrôle d’accès en fonction du rôle (RBAC Azure). Azure Relay définit un ensemble de rôles intégrés Azure qui englobent les ensembles communs d’autorisations utilisés pour accéder aux entités de Relais. Vous pouvez également définir des rôles personnalisés pour l’accès aux données. Pour obtenir la liste des rôles intégrés pris en charge par Azure Relay, consultez rôles intégrés Azure pour Azure Relay. Les applications natives et les applications web qui envoient des demandes à Relay peuvent également autoriser l’accès avec Microsoft Entra ID.
Rôles intégrés Azure pour Azure Relay
Pour Azure Relay, la gestion des espaces de noms et de toutes les ressources associées via le portail Azure et l’API de gestion des ressources Azure est déjà protégée à l’aide du modèle Azure RBAC. Azure fournit les rôles Azure intégrés ci-dessous pour autoriser l’accès à un espace de noms Relay :
Rôle | Description |
---|---|
Propriétaire d’Azure Relay | Utilisez ce rôle pour octroyer l’accès complet aux ressources Azure Relay. |
Écouteur Azure Relay | Utilisez ce rôle pour octroyer l’accès écoute et lecture d’entité aux ressources Azure Relay. |
Expéditeur Azure Relay | Utilisez ce rôle pour octroyer l’accès envoi et lecture d’entité aux ressources Azure Relay. |
Étendue des ressources
Avant d’attribuer un rôle Azure à un principal de sécurité, déterminez l’étendue de l’accès dont doit disposer le principal de sécurité. Selon les bonnes pratiques, il est toujours préférable d’accorder la plus petite étendue possible.
La liste suivante décrit les niveaux auxquels vous pouvez étendre l’accès aux ressources Azure Relay, en commençant par la plus petite étendue :
- Entités de relais : l’attribution de rôle s’applique à une entité de Relais spécifique comme une connexion hybride ou un relais WCF.
- Espace de noms Relay : l’attribution de rôle s’applique à toutes les entités de Relais sous l’espace de noms.
- Groupe de ressources :l’attribution de rôle s’applique à toutes les ressources Relay sous le groupe de ressources.
- Abonnement : l’attribution de rôle s’applique à toutes les ressources Relay dans tous les groupes de ressources de l’abonnement.
Remarque
Gardez à l’esprit que la propagation des attributions de rôles Azure peut prendre cinq minutes. Pour plus d’informations sur la définition des rôles intégrés, consultez Comprendre les définitions de rôles. Pour plus d’informations sur la création de rôles personnalisés Azure, consultez Rôles personnalisés Azure.
Activer une identité managée
Tout d'abord, activez l'identité managée pour la ressource Azure qui doit accéder aux entités Azure Relay (connexions hybrides ou relais WCF). Par exemple, si votre application cliente Relay s'exécute sur une machine virtuelle Azure, activez l'identité managée correspondante en suivant les instructions de l'article Configurer une identité managée pour une machine virtuelle Azure. Dès que vous avez activé ce paramètre, une nouvelle identité de service managée est créée dans votre annuaire Microsoft Entra ID.
Pour obtenir la liste des services qui prennent en charge les identités managées, consultez Services qui prennent en charge les identités managées pour les ressources Azure.
Attribuer un rôle Azure Relay à l'identité managée
Après avoir activé l'identité managée, attribuez-lui un rôle Azure Relay (Propriétaire Azure Relay, Écouteur Azure Relay ou Expéditeur Azure Relay) dans l'étendue appropriée. Lorsque le rôle Azure est attribué à une identité managée, celle-ci est autorisée à accéder aux entités Relay dans l'étendue appropriée.
La section suivante utilise une application simple qui s'exécute sous une identité managée sur une instance de machine virtuelle Azure et accède aux ressources Relay.
Exemple d'application sur une machine virtuelle qui accède à des entités Relay
Téléchargez l'exemple d'application console Connexions hybrides sur votre ordinateur à partir de GitHub.
Créez une machine virtuelle Azure. Pour cet exemple, utilisez une image Windows 10.
Activez l'identité affectée par le système ou par un utilisateur pour la machine virtuelle Azure. Pour plus d'informations, consultez Activer l'identité pour une machine virtuelle.
Attribuez un des rôles Relay à l'identité de service managée dans l'étendue souhaitée (entité Relay, espace de noms Relay, groupe de ressources, abonnement). Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Générez l'application console sur votre ordinateur local en suivant les instructions du document LISEZ-MOI.
Copiez le fichier exécutable du dossier <votre chemin d'accès local>\RoleBasedAccessControl\bin\Debug vers la machine virtuelle. Vous pouvez utiliser RDP pour vous connecter à votre machine virtuelle Azure. Pour plus d’informations, consultez Connexion à une machine virtuelle Azure exécutant Windows.
Exécutez RoleBasedAccessControl.exe sur la machine virtuelle Azure en suivant les instructions du document LISEZ-MOI.
Remarque
Suivez les mêmes étapes pour exécuter l’application console pour les relais WCF.
Code en surbrillance de l’exemple
Voici le code de l’exemple qui montre comment utiliser l’authentification Microsoft Entra pour se connecter au service Azure Relay.
Créez un objet TokenProvider à l’aide de la méthode
TokenProvider.CreateManagedIdentityTokenProvider
.- Si vous utilisez une identité managée affectée par le système :
TokenProvider.CreateManagedIdentityTokenProvider();
- Si vous utilisez une identité managée affectée par l’utilisateur, obtenez l’ID client de l'identité affectée par l’utilisateur dans la page Identité managée du portail Azure. Pour plus d'informations, consultez Répertorier les identités managées affectées par l'utilisateur.
var managedCredential = new ManagedIdentityCredential(clientId); tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);
- Si vous utilisez une identité managée affectée par le système :
Créez un objet HybridConnectionListener ou HybridConnectionClient en lui transmettant l’URI de la connexion hybride et le fournisseur de jetons que vous avez créé à l’étape précédente.
Écouteur :
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
Expéditeur :
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
Exemples
- Connexions hybrides : .NET, Java, JavaScript
- WCF Relay : .NET
Étapes suivantes
Pour en savoir plus sur Azure Relay, consultez les articles suivants.