Een toepassing verifiëren en autoriseren met Microsoft Entra-id voor toegang tot Azure Relay-entiteiten

Azure Relay biedt ondersteuning voor het gebruik van Microsoft Entra ID voor het autoriseren van aanvragen voor Azure Relay-entiteiten (hybride Verbinding maken ions, WCF Relays). Met Microsoft Entra-id kunt u op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om machtigingen te verlenen aan een beveiligingsprincipaal. Dit kan een gebruikers-, groep- of toepassingsservice-principal zijn. Zie Inzicht in de verschillende rollen voor meer informatie over rollen en roltoewijzingen.

Notitie

Deze functie is algemeen beschikbaar in alle regio's, met uitzondering van Microsoft Azure beheerd door 21Vianet.

Overzicht

Wanneer een beveiligingsprincipaal (een gebruiker, groep, toepassing) toegang probeert te krijgen tot een Relay-entiteit, moet de aanvraag worden geautoriseerd. Met Microsoft Entra ID is de toegang tot een resource een proces in twee stappen.

  1. Eerst wordt de identiteit van de beveiligingsprincipaal geverifieerd en wordt een OAuth 2.0-token geretourneerd. De resourcenaam voor het aanvragen van een token is https://relay.azure.net. Als een toepassing wordt uitgevoerd binnen een Azure-entiteit zoals een Azure-VM, een virtuele-machineschaalset of een Azure Function-app, kan deze een beheerde identiteit gebruiken om toegang te krijgen tot de resources.
  2. Vervolgens wordt het token doorgegeven als onderdeel van een aanvraag aan de Relay-service om toegang te verlenen tot de opgegeven resource (hybride verbindingen, WCF-relays). Microsoft Entra autoriseert toegangsrechten voor beveiligde resources via op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Azure Relay definieert een set ingebouwde Azure-rollen die algemene sets machtigingen omvatten die worden gebruikt voor toegang tot Relay-entiteiten. U kunt ook aangepaste rollen definiëren voor toegang tot de gegevens. Zie Ingebouwde Azure-rollen voor Azure Relay voor een lijst met ingebouwde rollen die worden ondersteund door Azure Relay. Systeemeigen toepassingen en webtoepassingen die aanvragen indienen bij Relay, kunnen ook autoriseren met Microsoft Entra-id.

Ingebouwde Azure-rollen voor Azure Relay

Voor Azure Relay is het beheer van naamruimten en alle gerelateerde resources via Azure Portal en de Azure Resource Management-API al beveiligd met behulp van het Azure RBAC-model. Azure biedt de onderstaande ingebouwde Azure-rollen voor het autoriseren van toegang tot een Relay-naamruimte:

Rol Beschrijving
Azure Relay-eigenaar Gebruik deze rol om volledige toegang te verlenen tot Azure Relay-resources.
Azure Relay-listener Gebruik deze rol om lees- en luistertoegang te verlenen aan Azure Relay-resources.
Afzender van Azure Relay Gebruik deze rol om leestoegang tot Azure Relay-resources voor verzenden en entiteiten te verlenen.

Resourcebereik

Voordat u een Azure-rol toewijst een beveiligingsprincipal, moet u het toegangsbereik bepalen dat de beveiligingsprincipal moet hebben. Uit best practices blijkt dat het het beste is om het nauwst mogelijke bereik toe te wijzen.

In de volgende lijst worden de niveaus beschreven waarop u toegang tot Azure Relay-resources kunt instellen, te beginnen met het smalste bereik:

  • Relay-entiteiten: roltoewijzing is van toepassing op een specifieke Relay-entiteit, zoals een hybride verbinding of een WCF-relay.
  • Relay-naamruimte: Roltoewijzing is van toepassing op alle Relay-entiteiten onder de naamruimte.
  • Resourcegroep: Roltoewijzing is van toepassing op alle Relay-resources onder de resourcegroep.
  • Abonnement: Roltoewijzing is van toepassing op alle Relay-resources in alle resourcegroepen in het abonnement.

Notitie

Houd er rekening mee dat het maximaal vijf minuten kan duren voordat Azure-roltoewijzingen zijn doorgegeven. Zie Roldefinities begrijpen voor meer informatie over hoe ingebouwde rollen worden gedefinieerd. Zie Aangepaste Azure-rollen voor informatie over het maken van aangepaste Azure-rollen.

Verifiëren vanuit een app

Een belangrijk voordeel van het gebruik van Microsoft Entra-id met Azure Relay is dat uw referenties niet meer hoeven te worden opgeslagen in uw code. In plaats daarvan kunt u een OAuth 2.0-toegangstoken aanvragen bij het Microsoft Identity Platform. Microsoft Entra verifieert de beveiligingsprincipaal (een gebruiker, een groep of service-principal) die de toepassing uitvoert. Als de verificatie slaagt, retourneert Microsoft Entra ID het toegangstoken naar de toepassing en kan de toepassing vervolgens het toegangstoken gebruiken om aanvragen voor Azure Relay te autoriseren.

In de volgende secties ziet u hoe u uw consoletoepassing configureert voor verificatie met Microsoft Identity Platform 2.0. Zie het overzicht van Microsoft Identity Platform (v2.0) voor meer informatie.

Zie Toegang verlenen tot Microsoft Entra-webtoepassingen autoriseren met behulp van de stroom voor het verlenen van OAuth 2.0-code voor een overzicht van de stroom voor het verlenen van OAuth 2.0-code.

Uw toepassing registreren bij een Microsoft Entra-tenant

De eerste stap bij het gebruik van Microsoft Entra-id voor het autoriseren van Azure Relay-entiteiten is het registreren van uw clienttoepassing bij een Microsoft Entra-tenant vanuit Azure Portal. Wanneer u uw clienttoepassing registreert, geeft u informatie over de toepassing aan AD op. Microsoft Entra-id biedt vervolgens een client-id (ook wel een toepassings-id genoemd) die u kunt gebruiken om uw toepassing te koppelen aan Microsoft Entra Runtime.

Zie quickstart: Een toepassing registreren bij Microsoft Entra ID voor stapsgewijze instructies voor het registreren van uw toepassing bij Microsoft Entra ID.

Belangrijk

Noteer de map-id (tenant) en de toepassings-id (client). U hebt deze waarden nodig om de voorbeeldtoepassing uit te voeren.

Een clientgeheim maken

De toepassing heeft een clientgeheim nodig om de identiteit ervan te bewijzen bij het aanvragen van een token. Zie in hetzelfde artikel dat eerder is gekoppeld, de sectie Een clientgeheim toevoegen om een clientgeheim te maken.

Belangrijk

Noteer het clientgeheim. U hebt deze nodig om de voorbeeldtoepassing uit te voeren.

Azure-rollen toewijzen met behulp van de Azure-portal

Wijs een van de Azure Relay-rollen toe aan de service-principal van de toepassing op het gewenste bereik (Relay-entiteit, naamruimte, resourcegroep, abonnement). Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

De voorbeeldtoepassing uitvoeren

  1. Download het voorbeeld van de consoletoepassing vanuit GitHub.

  2. Voer de toepassing lokaal op uw computer uit volgens de instructies uit het README-artikel.

    Notitie

    Volg dezelfde stappen om de voorbeeldconsoletoepassing voor WCF Relay uit te voeren.

Gemarkeerde code uit het voorbeeld

Hier volgt de code uit het voorbeeld waarin wordt getoond hoe u Microsoft Entra-verificatie gebruikt om verbinding te maken met de Azure Relay-service.

  1. Maak een TokenProvider-object met behulp van de TokenProvider.CreateAzureActiveDirectoryTokenProvider methode.

    Als u nog geen app-registratie hebt gemaakt, raadpleegt u de sectie Uw toepassing registreren bij Microsoft Entra ID om deze te maken en maakt u vervolgens een clientgeheim zoals vermeld in de sectie Een clientgeheim maken.

    Als u een bestaande app-registratie wilt gebruiken, volgt u deze instructies om de toepassings-id (client) en map-id (tenant) op te halen.

    1. Meld u aan bij de Azure-portal.
    2. Zoek en selecteer Microsoft Entra-id met behulp van de zoekbalk bovenaan.
    3. Selecteer op de pagina Microsoft Entra-id App-registraties in de sectie Beheren in het menu links.
    4. Selecteer uw app-registratie.
    5. Op de pagina voor uw app-registratie ziet u de waarden voor toepassings-id (client) en map-id (tenant).

    Voer de volgende stappen uit om het clientgeheim op te halen:

    1. Selecteer certificaten en geheimen in het linkermenu op de pagina waarin uw app wordt geregistreerd.
    2. Gebruik de knop Kopiëren in de kolom Waarde voor het geheim in de sectie Clientgeheimen .
    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. Maak een Hybrid Verbinding maken ionListener- of Hybrid Verbinding maken ionClient-object door de URI voor hybride verbindingen en de tokenprovider door te geven die u in de vorige stap hebt gemaakt.

    Listener:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Afzender:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Voorbeelden

Volgende stappen

Zie de volgende onderwerpen voor meer informatie over Azure Relay.