Beheerde identiteiten gebruiken voor App Service en Azure Functions

In dit artikel leest u hoe u een beheerde identiteit maakt voor App Service- en Azure Functions-toepassingen en hoe u deze kunt gebruiken voor toegang tot andere resources.

Belangrijk

Omdat beheerde identiteiten geen ondersteuning bieden voor scenario's tussen mappen, gedragen ze zich niet zoals verwacht als uw app wordt gemigreerd tussen abonnementen of tenants. Als u de beheerde identiteiten na een dergelijke verplaatsing opnieuw wilt maken, raadpleegt u Of beheerde identiteiten automatisch opnieuw worden gemaakt als ik een abonnement naar een andere map verplaats?. Downstream-resources moeten ook toegangsbeleid hebben bijgewerkt om de nieuwe identiteit te kunnen gebruiken.

Notitie

Beheerde identiteiten zijn niet beschikbaar voor apps die zijn geïmplementeerd in Azure Arc.

Met een beheerde identiteit van Microsoft Entra ID heeft uw app eenvoudig toegang tot andere met Microsoft Entra beveiligde resources, zoals Azure Key Vault. De identiteit wordt beheerd door het Azure-platform en u hoeft geen geheimen in te richten of te draaien. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Microsoft Entra ID.

Aan uw toepassing kunnen twee typen identiteiten worden toegekend:

  • Een door het systeem toegewezen identiteit is gekoppeld aan uw toepassing en wordt verwijderd als uw app wordt verwijderd. Een app kan slechts één door het systeem toegewezen identiteit hebben.
  • Een door de gebruiker toegewezen identiteit is een autonome Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen identiteiten hebben.

De configuratie van de beheerde identiteit is specifiek voor de site. Als u een beheerde identiteit wilt configureren voor een implementatiesite in de portal, gaat u eerst naar de site. Als u de beheerde identiteit voor uw web-app of implementatiesite in uw Microsoft Entra-tenant wilt vinden vanuit Azure Portal, zoekt u deze rechtstreeks op de overzichtspagina van uw tenant. Meestal is de naam van de site vergelijkbaar met <app-name>/slots/<slot-name>.

In deze video ziet u hoe u beheerde identiteiten gebruikt voor App Service.

De stappen in de video worden ook beschreven in de volgende secties.

Een door het systeem toegewezen identiteit toevoegen

  1. Schuif in de linkernavigatiebalk van de pagina van uw app omlaag naar de Instellingen groep.

  2. Selecteer Identiteit.

  3. Schakel op het tabblad Door systeem toegewezen status over naar Aan. Klik op Opslaan.

    Screenshot that shows where to switch Status to On and then select Save.

Een door de gebruiker toegewezen identiteit toevoegen

Voor het maken van een app met een door de gebruiker toegewezen identiteit moet u de identiteit maken en vervolgens de resource-id toevoegen aan uw app-configuratie.

Eerst moet u een door de gebruiker toegewezen identiteitsresource maken.

  1. Maak een door de gebruiker toegewezen beheerde identiteitresource volgens deze instructies.

  2. Schuif in de linkernavigatiebalk voor de pagina van uw app omlaag naar de Instellingen groep.

  3. Selecteer Identiteit.

  4. Selecteer Gebruiker toegewezen>toevoegen.

  5. Zoek naar de identiteit die u eerder hebt gemaakt, selecteer deze en selecteer Toevoegen.

    Managed identity in App Service

    Zodra u Toevoegen hebt geselecteerd, wordt de app opnieuw opgestart.

Doelresource configureren

Mogelijk moet u de doelresource configureren om toegang vanuit uw app of functie toe te staan. Als u bijvoorbeeld een token aanvraagt voor toegang tot Key Vault, moet u ook een toegangsbeleid toevoegen dat de beheerde identiteit van uw app of functie bevat. Anders worden uw aanroepen naar Key Vault geweigerd, zelfs als u een geldig token gebruikt. Hetzelfde geldt voor Azure SQL Database. Zie Azure-services die ondersteuning bieden voor Microsoft Entra-verificatie voor meer informatie over welke resources Ondersteuning bieden voor Microsoft Entra-tokens.

Belangrijk

De back-endservices voor beheerde identiteiten onderhouden ongeveer 24 uur een cache per resource-URI. Als u het toegangsbeleid van een bepaalde doelresource bijwerkt en onmiddellijk een token voor die resource ophaalt, kunt u een token in de cache met verouderde machtigingen blijven ophalen totdat dat token verloopt. Er is momenteel geen manier om een tokenvernieuwing af te dwingen.

Verbinding maken naar Azure-services in app-code

Met de beheerde identiteit kan een app tokens verkrijgen voor Azure-resources die worden beveiligd door Microsoft Entra-id, zoals Azure SQL Database, Azure Key Vault en Azure Storage. Deze tokens vertegenwoordigen de toepassing die toegang heeft tot de resource en niet een specifieke gebruiker van de toepassing.

App Service en Azure Functions bieden een intern toegankelijk REST-eindpunt voor het ophalen van tokens. Het REST-eindpunt kan worden geopend vanuit de app met een standaard HTTP GET, die kan worden geïmplementeerd met een algemene HTTP-client in elke taal. Voor .NET, JavaScript, Java en Python biedt de Azure Identity-clientbibliotheek een abstractie over dit REST-eindpunt en vereenvoudigt de ontwikkelervaring. Verbinding maken aan andere Azure-services is net zo eenvoudig als het toevoegen van een referentieobject aan de servicespecifieke client.

Een onbewerkte HTTP GET-aanvraag ziet eruit als in het volgende voorbeeld:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

En een voorbeeldantwoord kan er als volgt uitzien:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "1586984735",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer",
    "client_id": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}

Dit antwoord is hetzelfde als het antwoord voor de toegangstokenaanvraag van Microsoft Entra-service-naar-service. Voor toegang tot Key Vault voegt u vervolgens de waarde toe van access_token een clientverbinding met de kluis.

Zie rest-eindpuntreferentie voor meer informatie over het REST-eindpunt.

Een identiteit verwijderen

Wanneer u een door het systeem toegewezen identiteit verwijdert, wordt deze verwijderd uit de Microsoft Entra-id. Door het systeem toegewezen identiteiten worden ook automatisch verwijderd uit Microsoft Entra ID wanneer u de app-resource zelf verwijdert.

  1. Schuif in de linkernavigatiebalk van de pagina van uw app omlaag naar de Instellingen groep.

  2. Selecteer Identiteit. Volg vervolgens de stappen op basis van het identiteitstype:

    • Door het systeem toegewezen identiteit: schakel op het tabblad Door systeem toegewezen status over op Uit. Klik op Opslaan.
    • Door de gebruiker toegewezen identiteit: selecteer het tabblad Door de gebruiker toegewezen , schakel het selectievakje voor de identiteit in en selecteer Verwijderen. Selecteer Ja om te bevestigen.

Notitie

Er is ook een toepassingsinstelling die kan worden ingesteld, WEBSITE_DISABLE_MSI, waardoor de lokale tokenservice wordt uitgeschakeld. De identiteit blijft echter aanwezig en met hulpprogramma's wordt de beheerde identiteit nog steeds weergegeven als 'aan' of 'ingeschakeld'. Als gevolg hiervan wordt het gebruik van deze instelling niet aanbevolen.

REST-eindpuntreferentie

Een app met een beheerde identiteit maakt dit eindpunt beschikbaar door twee omgevingsvariabelen te definiëren:

  • IDENTITY_ENDPOINT: de URL naar de lokale tokenservice.
  • IDENTITY_HEADER: een header die wordt gebruikt om aanvragenvervalsing aan de serverzijde (SSRF) te beperken. De waarde wordt gedraaid door het platform.

Het IDENTITY_ENDPOINT is een lokale URL waaruit uw app tokens kan aanvragen. Als u een token voor een resource wilt ophalen, maakt u een HTTP GET-aanvraag naar dit eindpunt, met inbegrip van de volgende parameters:

Parameternaam Over Beschrijving
resource Query’s uitvoeren De Microsoft Entra-resource-URI van de resource waarvoor een token moet worden verkregen. Dit kan een van de Azure-services zijn die ondersteuning bieden voor Microsoft Entra-verificatie of een andere resource-URI.
api-versie Query’s uitvoeren De versie van de token-API die moet worden gebruikt. Gebruik 2019-08-01.
X-IDENTITY-HEADER Koptekst De waarde van de omgevingsvariabele IDENTITY_HEADER. Deze header wordt gebruikt om aanvragenvervalsing (SSRF)-aanvallen aan de serverzijde te beperken.
client_id Query’s uitvoeren (Optioneel) De client-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Kan niet worden gebruikt voor een aanvraag die principal_id, msi_res_idof object_id. Als alle id-parameters (client_id, principal_id, object_iden msi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
principal_id Query’s uitvoeren (Optioneel) De principal-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. object_id is een alias die in plaats daarvan kan worden gebruikt. Kan niet worden gebruikt voor een aanvraag met client_id, msi_res_id of object_id. Als alle id-parameters (client_id, principal_id, object_iden msi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
msi_res_id Query’s uitvoeren (Optioneel) De Azure-resource-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Kan niet worden gebruikt voor een aanvraag die principal_id, client_idof object_id. Als alle id-parameters (client_id, principal_id, object_iden msi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.

Belangrijk

Als u tokens probeert te verkrijgen voor door de gebruiker toegewezen identiteiten, moet u een van de optionele eigenschappen opnemen. Anders probeert de tokenservice een token te verkrijgen voor een door het systeem toegewezen identiteit, die al dan niet bestaat.

Volgende stappen