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 gebruikt om toegang te krijgen 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. Dit wordt gedaan door de functie uit te schakelen en opnieuw in te schakelen. Downstreamresources 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 u hoeft geen geheimen in te richten of te roteren. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Azure AD.
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 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
Schuif in de linkernavigatiebalk van de pagina van uw app omlaag naar de groep Instellingen .
Selecteer Identiteit.
Schakel op het tabblad Systeem toegewezende optie Status in op Aan. Klik op Opslaan.
Notitie
Als u de beheerde identiteit voor uw web-app of site-app wilt vinden in de Azure Portal, kijkt u onder Bedrijfstoepassingen in de sectie Gebruikersinstellingen. Meestal is de naam van de site vergelijkbaar met <app name>/slots/<slot name>
.
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 van de pagina van uw app omlaag naar de groep Instellingen .
Selecteer Identiteit.
Klik op het tabblad Gebruiker toegewezen op Toevoegen.
Zoek naar de identiteit die u eerder hebt gemaakt en selecteer deze. Klik op Add.
Belangrijk
Als u Toevoegen selecteert nadat u een door de gebruiker toegewezen identiteit hebt geselecteerd om toe te voegen, wordt uw toepassing opnieuw gestart.
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, 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 met 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 is toegankelijk 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 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
toe aan een clientverbinding met de kluis.
Zie naslaginformatie over REST-eindpunten 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.
Schuif in de linkernavigatiebalk 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: zet status op het tabblad Door het systeem toegewezen op Uit. Klik op Opslaan.
- Door de gebruiker toegewezen identiteit: klik op het tabblad Door de 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 alleen de lokale tokenservice wordt uitgeschakeld. De identiteit blijft echter behouden en bij 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 SSRF-aanvallen (request forgery) aan de serverzijde te beperken. De waarde wordt gedraaid door het platform.
De IDENTITY_ENDPOINT is een lokale URL van waaruit uw app tokens kan aanvragen. Als u een token voor een resource wilt ophalen, maakt u een HTTP GET-aanvraag naar dit eindpunt, inclusief 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_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’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 die client_id, mi_res_id of object_id bevat. 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’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 , client_id
ofobject_id
bevatprincipal_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 op te halen 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
- Veilig Microsoft Graph aanroepen met behulp van een beheerde identiteit
- Veilig verbinding maken met services met Key Vault geheimen