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
Open de instellingen van uw app in Azure Portal onder de groep Instellingen in het linkernavigatiedeelvenster.
Selecteer Identiteit.
Schakel op het tabblad Door systeem toegewezen status over naar Aan. Klik op 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.
Maak een door de gebruiker toegewezen beheerde identiteitresource volgens deze instructies.
Schuif in het linkernavigatievenster voor de pagina van uw app omlaag naar de groep Instellingen .
Selecteer Identiteit.
Selecteer Gebruiker toegewezen>toevoegen.
Zoek naar de identiteit die u eerder hebt gemaakt, selecteer deze en selecteer Toevoegen.
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.
Schuif in het linkernavigatievenster van de pagina van uw app omlaag naar de groep Instellingen .
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_id
ofobject_id
. Als alle id-parameters (client_id
,principal_id
,object_id
enmi_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_id
enmi_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_id
ofobject_id
. Als alle id-parameters (client_id
,principal_id
,object_id
enmi_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
- Zelfstudie: Verbinding maken met SQL Database vanuit App Service zonder geheimen met behulp van een beheerde identiteit
- Veilig toegang krijgen tot Azure Storage met behulp van een beheerde identiteit
- Microsoft Graph veilig aanroepen met een beheerde identiteit
- Veilig verbinding maken met services met Key Vault-geheimen