Share via


Beheerde identiteiten gebruiken voor App Service en Azure Functions

Notitie

Vanaf 1 juni 2024 hebben alle nieuw gemaakte App Service-apps de mogelijkheid om een unieke standaardhostnaam te genereren met behulp van de naamconventie <app-name>-<random-hash>.<region>.azurewebsites.net. Bestaande app-namen blijven ongewijzigd.

Voorbeeld: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Raadpleeg de unieke standaardhostnaam voor App Service-resource voor meer informatie.

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 de app en wordt verwijderd als de 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 en één door de gebruiker toegewezen identiteit kan worden toegewezen aan meerdere Azure-resources, zoals twee App Service-apps.

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. Open de instellingen van uw app in Azure Portal onder de groep Instellingen in het linkernavigatiedeelvenster.

  2. Selecteer Identiteit.

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

    Schermopname van waar u de status wilt overschakelen naar Aan en selecteer Vervolgens Opslaan.

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 het linkernavigatievenster voor de pagina van uw app omlaag naar de groep Instellingen .

  3. Selecteer Identiteit.

  4. Selecteer Gebruiker toegewezen>toevoegen.

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

    Beheerde identiteit 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. Dit betekent dat het enkele uren kan duren voordat wijzigingen in de groep of het rollidmaatschap van een beheerde identiteit van kracht worden. Het is momenteel niet mogelijk om af te dwingen dat het token van een beheerde identiteit vóór de vervaldatum wordt vernieuwd. Als u de groep of het rollidmaatschap van een beheerde identiteit wijzigt om machtigingen toe te voegen of te verwijderen, moet u mogelijk enkele uren wachten totdat de Azure-resource die de identiteit gebruikt, de juiste toegang heeft. Zie Beperking van het gebruik van beheerde identiteiten voor autorisatie voor alternatieven voor groepen of rollidmaatschappen.

Verbinding maken met 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 met andere Azure-services is net zo eenvoudig als het toevoegen van een referentieobject aan de servicespecifieke client.

Een onbewerkte HTTP GET-aanvraag maakt gebruik van de twee opgegeven omgevingsvariabelen en ziet er als volgt uit:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>

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": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

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 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 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 In Beschrijving
resource Query 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 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 (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, 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 (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 (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