Autentisera en hanterad identitet med Microsoft Entra-ID för att få åtkomst till Azure Relay-resurser
Hanterade identiteter för Azure-resurser är en funktion mellan Azure som gör att du kan skapa en säker identitet som är associerad med distributionen där programkoden körs. Du kan sedan associera den identiteten med åtkomstkontrollroller som ger anpassade behörigheter för åtkomst till specifika Azure-resurser som ditt program behöver.
Med hanterade identiteter hanterar Azure-plattformen den här körningsidentiteten. Du behöver inte lagra och skydda åtkomstnycklar i programkoden eller konfigurationen, varken för själva identiteten eller för de resurser som du behöver åtkomst till. En Relay-klientapp som körs i ett Azure App Service-program eller på en virtuell dator med aktiverade hanterade entiteter för Stöd för Azure-resurser behöver inte hantera SAS-regler och nycklar eller andra åtkomsttoken. Klientappen behöver bara slutpunktsadressen för Relay-namnområdet. När appen ansluter binder Relay den hanterade entitetens kontext till klienten i en åtgärd som visas i ett exempel senare i den här artikeln. När den är associerad med en hanterad identitet kan Relay-klienten utföra alla auktoriserade åtgärder. Auktorisering beviljas genom att associera en hanterad entitet med Relay-roller.
Kommentar
Den här funktionen är allmänt tillgänglig i alla regioner, inklusive Microsoft Azure som drivs av 21Vianet.
Översikt
När ett säkerhetsobjekt (en användare, grupp, ett program) försöker komma åt en Relay-entitet måste begäran auktoriseras. Med Microsoft Entra-ID är åtkomst till en resurs en tvåstegsprocess.
- Först autentiseras säkerhetsobjektets identitet och en OAuth 2.0-token returneras. Resursnamnet för att begära en token är
https://relay.azure.net
. Om ett program körs inom en Azure-entitet, till exempel en virtuell Azure-dator, en VM-skalningsuppsättning eller en Azure-funktionsapp, kan den använda en hanterad identitet för att komma åt resurserna. - Därefter skickas token som en del av en begäran till Relay-tjänsten för att ge åtkomst till den angivna resursen (hybridanslutningar, WCF-reläer). Microsoft Entra auktoriserar åtkomsträttigheter till skyddade resurser via rollbaserad åtkomstkontroll i Azure (Azure RBAC). Azure Relay definierar en uppsättning inbyggda Azure-roller som omfattar vanliga uppsättningar med behörigheter som används för att komma åt Relay-entiteter. Du kan också definiera anpassade roller för åtkomst till data. En lista över inbyggda roller som stöds av Azure Relay finns i Inbyggda Azure-roller för Azure Relay. Inbyggda program och webbprogram som skickar begäranden till Relay kan också auktorisera med Microsoft Entra-ID.
Inbyggda Azure-roller för Azure Relay
För Azure Relay skyddas redan hanteringen av namnområden och alla relaterade resurser via Azure Portal och Azure-resurshanterings-API:et med hjälp av Azure RBAC-modellen. Azure tillhandahåller de inbyggda Azure-rollerna nedan för att auktorisera åtkomst till ett Relay-namnområde:
Roll | beskrivning |
---|---|
Azure Relay-ägare | Använd den här rollen för att ge fullständig åtkomst till Azure Relay-resurser. |
Azure Relay-lyssnare | Använd den här rollen för att bevilja läsbehörighet för lyssning och entitet till Azure Relay-resurser. |
Azure Relay-avsändare | Använd den här rollen för att bevilja läsbehörighet för skicka och entitet till Azure Relay-resurser. |
Resursomfång
Innan du tilldelar en Azure-roll till ett säkerhetsobjekt ska du bestämma omfånget för åtkomst som säkerhetsobjektet ska ha. Bästa praxis kräver att det alltid är bäst att endast bevilja minsta möjliga omfång.
I följande lista beskrivs de nivåer där du kan begränsa åtkomsten till Azure Relay-resurser, med början med det smalaste omfånget:
- Relay-entiteter: Rolltilldelning gäller för en specifik Relay-entitet som en hybridanslutning eller ett WCF-relä.
- Relay-namnrymd: Rolltilldelning gäller för alla Relay-entiteter under namnområdet.
- Resursgrupp: Rolltilldelning gäller för alla Relay-resurser under resursgruppen.
- Prenumeration: Rolltilldelning gäller för alla Relay-resurser i alla resursgrupper i prenumerationen.
Kommentar
Tänk på att Azure-rolltilldelningar kan ta upp till fem minuter att sprida. Mer information om hur inbyggda roller definieras finns i Förstå rolldefinitioner. Information om hur du skapar anpassade Azure-roller finns i Anpassade Azure-roller.
Aktivera hanterad identitet
Aktivera först hanterad identitet för Den Azure-resurs som behöver åtkomst till Azure Relay-entiteter (hybridanslutningar eller WCF-reläer). Om ditt Relay-klientprogram till exempel körs på en virtuell Azure-dator aktiverar du hanterad identitet för den virtuella datorn genom att följa anvisningarna i artikeln Konfigurera hanterad identitet för en virtuell Azure-dator . När du har aktiverat den här inställningen skapas en ny hanterad tjänstidentitet i ditt Microsoft Entra-ID.
En lista över tjänster som stöder hanterade identiteter finns i Tjänster som stöder hanterade identiteter för Azure-resurser.
Tilldela en Azure Relay-roll till den hanterade identiteten
När du har aktiverat den hanterade identiteten tilldelar du en av Azure Relay-rollerna (Azure Relay-ägare, Azure Relay-lyssnare eller Azure Relay-avsändare) till identiteten efter lämpligt omfång. När Azure-rollen tilldelas till en hanterad identitet beviljas den hanterade identiteten åtkomst till Relay-entiteter i lämpligt omfång.
I följande avsnitt används ett enkelt program som körs under en hanterad identitet på en instans av en virtuell Azure-dator och som har åtkomst till Relay-resurser.
Exempelapp på virtuell dator med åtkomst till Relay-entiteter
Ladda ned exempelkonsolprogrammet Hybridanslutningar till datorn från GitHub.
Skapa en virtuell Azure-dator. I det här exemplet använder du en Windows 10-avbildning.
Aktivera systemtilldelad identitet eller en användartilldelad identitet för den virtuella Azure-datorn. Anvisningar finns i Aktivera identitet för en virtuell dator.
Tilldela en av Relay-rollerna till den hanterade tjänstidentiteten i önskat omfång (Relay-entitet, Relay-namnområde, resursgrupp, prenumeration). Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.
Skapa konsolappen lokalt på den lokala datorn enligt anvisningarna i README-dokumentet.
Kopiera den körbara filen under <den lokala sökvägen>\RoleBasedAccessControl\bin\Debug-mappen till den virtuella datorn. Du kan använda RDP för att ansluta till din virtuella Azure-dator. Mer information finns i Ansluta och logga in på en virtuell Azure-dator som kör Windows.
Kör RoleBasedAccessControl.exe på den virtuella Azure-datorn enligt anvisningarna i README-dokumentet.
Kommentar
Följ samma steg för att köra konsolprogrammet för WCF Relays.
Markerad kod från exemplet
Här är koden från exemplet som visar hur du använder Microsoft Entra-autentisering för att ansluta till Azure Relay-tjänsten.
Skapa ett TokenProvider-objekt med hjälp
TokenProvider.CreateManagedIdentityTokenProvider
av metoden .- Om du använder en systemtilldelad hanterad identitet:
TokenProvider.CreateManagedIdentityTokenProvider();
- Om du använder en användartilldelad hanterad identitet hämtar du klient-ID:t för den användartilldelade identiteten från sidan Hanterad identitet i Azure Portal. Anvisningar finns i Lista användartilldelade hanterade identiteter.
var managedCredential = new ManagedIdentityCredential(clientId); tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);
- Om du använder en systemtilldelad hanterad identitet:
Skapa ett HybridConnectionListener - eller HybridConnectionClient-objekt genom att skicka hybridanslutnings-URI:n och tokenprovidern som du skapade i föregående steg.
Lyssnare:
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
Avsändare:
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
Exempel
- Hybridanslutningar: .NET, Java, JavaScript
- WCF Relay: .NET
Nästa steg
Mer information om Azure Relay finns i följande artiklar.