Beheerde identiteiten gebruiken voor App Service en Azure Functions

In dit artikel wordt beschreven 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

Beheerde identiteiten voor App Service en Azure Functions gedragen zich niet zoals verwacht als uw app wordt gemigreerd tussen abonnementen/tenants. De app moet een nieuwe identiteit verkrijgen, wat wordt gedaan door de functie uit te schakelen en opnieuw in te schakelen. 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 Azure Active Directory (Azure AD) heeft uw app eenvoudig toegang tot andere Azure AD beveiligde resources, zoals Azure Key Vault. De identiteit wordt beheerd door het Azure-platform en vereist niet dat u geheimen inricht of roteert. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Azure AD.

Uw toepassing kan twee typen identiteiten krijgen:

  • 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 zelfstandige Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen identiteiten hebben.

Een door het systeem toegewezen identiteit toevoegen

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

  2. Selecteer Identiteit.

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

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

Notitie

Als u de beheerde identiteit voor uw web-app of site-app in de Azure Portal wilt vinden, gaat u naar de sectie Gebruikersinstellingen onder Bedrijfstoepassingen. Meestal is de naam van de site vergelijkbaar met <app name>/slots/<slot name>.

Een door de gebruiker toegewezen identiteit toevoegen

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

Eerst moet u een door de gebruiker toegewezen identiteitsresource maken.

  1. Maak een door de gebruiker toegewezen beheerde identiteitsresource op basis van deze instructies.

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

  3. Selecteer Identiteit.

  4. Klik op het tabblad Gebruiker dat is toegewezen op Toevoegen.

  5. Zoek de identiteit die u eerder hebt gemaakt en selecteer deze. Klik op Add.

    Managed identity in App Service

Belangrijk

Als u Toevoegen selecteert nadat u een door de gebruiker toegewezen identiteit hebt geselecteerd om toe te voegen, wordt uw toepassing 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 Azure AD verificatie voor meer informatie over welke resources ondersteuning bieden voor Azure Active Directory 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, blijft u mogelijk een token in de cache ophalen met verouderde machtigingen 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 Azure Active Directory, 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 een intern toegankelijk REST-eindpunt bieden voor het ophalen van tokens. Het REST-eindpunt kan vanuit de app worden geopend 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 met 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 Azure AD service-naar-service-toegangstokenaanvraag. Voor toegang tot Key Vault voegt u vervolgens de waarde van access_token een clientverbinding met de kluis toe.

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 Azure Active Directory. Door het systeem toegewezen identiteiten worden ook automatisch verwijderd uit Azure Active Directory wanneer u de app-resource zelf verwijdert.

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

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

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

Notitie

Er is ook een toepassingsinstelling die kan worden ingesteld, WEBSITE_DISABLE_MSI, waarmee 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.

Naslaginformatie over REST-eindpunten

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 SSRF-aanvallen (server-side request forgery) te beperken. De waarde wordt gedraaid door het platform.

De 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 In Beschrijving
resource Query’s uitvoeren De Azure AD resource-URI van de resource waarvoor een token moet worden verkregen. Dit kan een van de Azure-services zijn die ondersteuning bieden voor Azure AD 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 Header De waarde van de omgevingsvariabele IDENTITY_HEADER. Deze header wordt gebruikt om SSRF-aanvallen (request forgery) 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 met principal_id, mi_res_idof object_id. Als alle id-parameters (client_id, principal_id, object_iden mi_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, mi_res_id of object_id. Als alle id-parameters (client_id, principal_id, object_iden mi_res_id) worden weggelaten, wordt de door het systeem toegewezen identiteit gebruikt.
mi_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 mi_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