Een beheerde identiteit verifiëren met Microsoft Entra-id voor toegang tot Azure Relay-resources

Beheerde identiteiten voor Azure-resources is een functie voor meerdere Azure-resources waarmee u een beveiligde identiteit kunt maken die is gekoppeld aan de implementatie waaronder uw toepassingscode wordt uitgevoerd. Vervolgens kunt u die identiteit koppelen aan rollen voor toegangsbeheer die aangepaste machtigingen verlenen voor toegang tot specifieke Azure-resources die uw toepassing nodig heeft.

Met beheerde identiteiten beheert het Azure-platform deze runtime-identiteit. U hoeft geen toegangssleutels op te slaan en te beveiligen in uw toepassingscode of -configuratie, voor de identiteit zelf of voor de resources die u nodig hebt. Een Relay-client-app die wordt uitgevoerd in een Azure-app Service-toepassing of op een virtuele machine met ingeschakelde beheerde entiteiten voor Azure-resources, hoeft geen SAS-regels en -sleutels of andere toegangstokens te verwerken. De client-app heeft alleen het eindpuntadres van de Relay-naamruimte nodig. Wanneer de app verbinding maakt, verbindt Relay de context van de beheerde entiteit met de client in een bewerking die verderop in dit artikel wordt weergegeven. Zodra deze is gekoppeld aan een beheerde identiteit, kan uw Relay-client alle geautoriseerde bewerkingen uitvoeren. Autorisatie wordt verleend door een beheerde entiteit te koppelen aan Relay-rollen.

Notitie

Deze functie is algemeen beschikbaar in alle regio's, waaronder 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.

Beheerde identiteit inschakelen

Schakel eerst een beheerde identiteit in voor de Azure-resource die toegang nodig heeft tot Azure Relay-entiteiten (hybride verbindingen of WCF-relays). Als uw Relay-clienttoepassing bijvoorbeeld wordt uitgevoerd op een Virtuele Azure-machine, schakelt u beheerde identiteit voor de VIRTUELE machine in door de instructies uit het artikel Beheerde identiteit configureren voor een Azure-VM te volgen. Zodra u deze instelling hebt ingeschakeld, wordt er een nieuwe beheerde service-identiteit gemaakt in uw Microsoft Entra-id.

Zie Services die beheerde identiteiten ondersteunen voor Azure-resources voor een lijst met services die beheerde identiteiten ondersteunen.

Een Azure Relay-rol toewijzen aan de beheerde identiteit

Nadat u de beheerde identiteit hebt ingeschakeld, wijst u een van de Azure Relay-rollen (Azure Relay-eigenaar, Azure Relay-listener of Azure Relay-afzender) toe aan de identiteit op het juiste bereik. Wanneer de Azure-rol is toegewezen aan een beheerde identiteit, krijgt de beheerde identiteit toegang tot Relay-entiteiten op het juiste bereik.

In de volgende sectie wordt een eenvoudige toepassing gebruikt die wordt uitgevoerd onder een beheerde identiteit op een Azure VM-exemplaar en toegang krijgt tot Relay-resources.

Voorbeeld-app op VM-toegang tot Relay-entiteiten

  1. Download de voorbeeldconsoletoepassing hybrid Verbinding maken ions naar uw computer vanuit GitHub.

  2. Maak een Virtuele Azure-machine. Gebruik voor dit voorbeeld een Windows 10-installatiekopieën.

  3. Schakel door het systeem toegewezen identiteit of een door de gebruiker toegewezen identiteit in voor de Azure-VM. Zie Identiteit inschakelen voor een VIRTUELE machine voor instructies.

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

  5. Bouw de console-app lokaal op uw lokale computer volgens de instructies in het README-document.

  6. Kopieer het uitvoerbare bestand onder <uw lokale pad>\RoleBasedAccessControl\bin\Debug-map naar de VIRTUELE machine. U kunt RDP gebruiken om verbinding te maken met uw Azure-VM. Zie How to connect and sign on to an Azure virtual machine running Windows voor meer informatie.

  7. Voer RoleBasedAccessControl.exe uit op de Virtuele Azure-machine volgens de instructies in het README-document.

    Notitie

    Volg dezelfde stappen om de consoletoepassing voor WCF Relays 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.CreateManagedIdentityTokenProvider methode.

    • Als u een door het systeem toegewezen beheerde identiteit gebruikt:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, haalt u de client-id op voor de door de gebruiker toegewezen identiteit op de pagina Beheerde identiteit in Azure Portal. Zie Lijst met door de gebruiker toegewezen beheerde identiteiten voor instructies.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  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 artikelen voor meer informatie over Azure Relay.