Partager via


Authentifier et autoriser une application avec Microsoft Entra ID pour accéder aux entités Azure Relay

Azure Relay prend en charge l’utilisation de Microsoft Entra ID pour autoriser les requêtes aux entités Azure Relay (connexions hybrides, relais WCF). Avec Microsoft Entra ID, vous pouvez utiliser le contrôle d’accès en fonction du rôle Azure (RBAC Azure) pour accorder des autorisations à un principal de sécurité, qui peut être un utilisateur, un groupe ou un principal de service d’application. Pour en savoir plus sur les rôles et les attributions de rôles, consultez Comprendre les différents rôles.

Remarque

Cette fonctionnalité est généralement disponible dans toutes les régions, à l’exception de 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.

  1. 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.
  2. 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.

S’authentifier à partir d’une application

L’un des principaux avantages de l’utilisation de Microsoft Entra ID avec Azure Relay est que vous n’avez plus besoin de stocker vos informations d’identification dans votre code. À la place, vous pouvez demander un jeton d’accès OAuth 2.0 sur la plateforme d’identités Microsoft. Microsoft Entra authentifie le principal de sécurité (un utilisateur, un groupe ou un principal de service) qui exécute l’application. Si l’authentification réussit, Microsoft Entra ID retourne le jeton d’accès à l’application, qui peut ensuite l’utiliser pour autoriser les requêtes adressées à Azure Relay.

Les sections suivantes vous montrent comment configurer votre application console pour l’authentification avec la Plateforme d’identités Microsoft 2.0. Pour plus d’informations, consultez Présentation de la Plateforme d’identités Microsoft (v2.0).

Pour avoir une vue d’ensemble du flux d’octroi de code OAuth 2.0, consultez Autoriser l’accès aux applications web Microsoft Entra à l’aide du flux d’octroi de code OAuth 2.0.

Inscrire votre application auprès d’un locataire Microsoft Entra ID

La première étape associée à l’utilisation de Microsoft Entra ID pour autoriser l’accès aux entités Azure Relay consiste à inscrire votre application cliente auprès d’un locataire Microsoft Entra à partir du Portail Azure. Lorsque vous inscrivez votre application cliente, vous fournissez des informations la concernant à Azure AD. Microsoft Entra ID fournit ensuite un ID client (également appelé ID d’application) que vous pouvez utiliser pour associer votre application au runtime Microsoft Entra.

Pour obtenir des instructions étape par étape sur l’inscription de votre application auprès de Microsoft Entra ID, consultez Démarrage rapide : Inscrire une application auprès de Microsoft Entra ID.

Important

Notez l’ID de répertoire (locataire) et l’ID d’application (client). Vous aurez besoin de ces valeurs pour exécuter l’exemple d’application.

Créer une clé secrète client

L’application a besoin d’une clé secrète client pour prouver son identité lors de la requête de jeton. Dans le même article dont le lien est mentionné précédemment, consultez la section Ajouter une clé secrète client pour créer une clé secrète client.

Important

Notez la clé secrète client. Vous en aurez besoin pour exécuter l’exemple d’application.

Attribuer des rôles Azure à l’aide du portail Azure

Attribuez un des rôles Azure Relay au principal de service de l’application dans l’étendue souhaitée (entité Relay, espace de noms, groupe de ressources, abonnement). Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

Exécution de l'exemple

  1. Téléchargez l’exemple d’application console à partir de GitHub.

  2. Exécutez l’application localement sur votre ordinateur en suivant les instructions de l’article README.

    Remarque

    Suivez les mêmes étapes pour exécuter l’exemple d’application console pour WCF Relay.

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.

  1. Créez un objet TokenProvider à l’aide de la méthode TokenProvider.CreateAzureActiveDirectoryTokenProvider.

    Si vous n’avez pas encore créé d’inscription d’application, consultez la section Inscrire votre application auprès de Microsoft Entra ID pour la créer, puis créez une clé secrète client comme indiqué dans la section Créer une clé secrète client.

    Si vous souhaitez utiliser une inscription d’application existante, suivez ces instructions pour obtenir l’ID d’application (client) et l’ID de répertoire (locataire).

    1. Connectez-vous au portail Azure.
    2. Recherchez et sélectionnez Microsoft Entra ID à l’aide de la barre de recherche située dans la partie supérieure.
    3. Dans la page Microsoft Entra ID, sélectionnez Inscriptions d’applications dans la section Gérer du menu de gauche.
    4. Sélectionnez votre inscription d’application.
    5. Dans la page de votre inscription d’application, vous voyez les valeurs ID d’application (client) et ID d’annuaire (locataire).

    Pour obtenir la clé secrète client, procédez comme suit :

    1. Sur la page de votre inscription d’application, sélectionnez Certificats et secrets dans le menu de gauche.
    2. Utilisez le bouton de copie dans la colonne Valeur pour le secret dans la section Clés secrètes client.
    static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret)
    {
        return TokenProvider.CreateAzureActiveDirectoryTokenProvider(
            async (audience, authority, state) =>
            {
                IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithAuthority(authority)
                    .WithClientSecret(clientSecret)
                    .Build();
    
                var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync();
                return authResult.AccessToken;
            },
            $"https://login.microsoftonline.com/{tenantId}");
    }
    
  2. 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

Étapes suivantes

Pour en savoir plus sur Azure Relay, consultez les articles suivants.