Delen via


Beheerde identiteiten gebruiken voor App Service en Azure Functions

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

Notitie

Vanaf 1 juni 2024 kunnen nieuw gemaakte App Service-apps een unieke standaardhostnaam genereren die gebruikmaakt van de naamconventie <app-name>-<random-hash>.<region>.azurewebsites.net. Voorbeeld: myapp-ds27dh7271aah175.westus-01.azurewebsites.net. Bestaande app-namen blijven ongewijzigd.

Zie het blogbericht over het maken van een web-app met een unieke standaardhostnaamvoor meer informatie.

Met een beheerde identiteit van Microsoft Entra ID heeft uw app eenvoudig toegang tot andere met Microsoft Entra beveiligde resources, zoals Azure Key Vault. Het Azure-platform beheert de identiteit, dus u hoeft geen geheimen in te richten of te roteren. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Microsoft Entra ID.

U kunt twee typen identiteiten aan uw toepassing verlenen:

  • 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. Eé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 implementatiesleuf in de portal, gaat u eerst naar de sleuf. 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 slotnaam vergelijkbaar met <app-name>/slots/<slot-name>.

Notitie

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

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.

Vereisten

Als u de stappen in dit artikel wilt uitvoeren, moet u een minimale set machtigingen hebben voor uw Azure-resources. De specifieke machtigingen die u nodig hebt, variëren afhankelijk van uw scenario. De volgende tabel bevat een overzicht van de meest voorkomende scenario's:

Scenario Vereiste machtiging Voorbeeld van ingebouwde rollen
Een door het systeem toegewezen identiteit maken Microsoft.Web/sites/write over de app of Microsoft.Web/sites/slots/write over de site Inzender voor websites
Een door de gebruiker toegewezen identiteit maken Microsoft.ManagedIdentity/userAssignedIdentities/write over de resourcegroep waarin de identiteit moet worden gemaakt Inzender voor beheerde identiteit
Een door de gebruiker toegewezen identiteit toewijzen aan uw app Microsoft.Web/sites/write over de app, Microsoft.Web/sites/slots/write over de site of
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action over de identiteit
Inzender voor websites en operator voor beheerde identiteit
Azure-roltoewijzingen maken Microsoft.Authorization/roleAssignments/write over de scope van de doelresource Op rollen gebaseerd toegangsbeheerbeheerder of beheerder van gebruikerstoegang

Een door het systeem toegewezen identiteit toevoegen

Gebruik de volgende instructies om een door het systeem toegewezen beheerde identiteit in te schakelen.

  1. Ga in Azure Portal naar de pagina van uw app.

  2. Selecteer Instellingen>Identiteit in het linkermenu.

  3. Zet op het tabblad Door systeem toegewezen de Status naar Aan. Selecteer vervolgens Opslaan.

Een door de gebruiker toegewezen identiteit toevoegen

Als u een app wilt maken met een door de gebruiker toegewezen identiteit, maakt u de identiteit en voegt u vervolgens de resource-id toe aan uw app-configuratie.

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

  2. Selecteer Instellingen>Identiteit op de pagina van uw app in het linkermenu.

  3. Selecteer Gebruiker toegewezen en selecteer Vervolgens Toevoegen.

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

Nadat u deze stappen hebt voltooid, wordt de app opnieuw opgestart.

De doelresource configureren

U moet de doelresource configureren om toegang vanuit uw app toe te staan. Voor de meeste Azure-services configureert u de doelresource door een roltoewijzing te maken.

Sommige services gebruiken andere mechanismen dan op rollen gebaseerd toegangsbeheer van Azure. Raadpleeg de documentatie voor elke doelresource voor meer informatie over het configureren van toegang met behulp van een identiteit. Zie Azure-services die ondersteuning bieden voor Microsoft Entra-verificatie voor meer informatie over welke resources Ondersteuning bieden voor Microsoft Entra-tokens.

Als u bijvoorbeeld een token aanvraagt voor toegang tot een geheim in Azure Key Vault, moet u ook een roltoewijzing maken waarmee de beheerde identiteit kan werken met geheimen in de doelkluis. Anders weigert Key Vault uw aanroepen, zelfs als u een geldig token gebruikt. Hetzelfde geldt voor Azure SQL Database en andere services.

Belangrijk

De back-endservices voor beheerde identiteiten onderhouden ongeveer 24 uur een cache per resource-URI. Het kan enkele uren duren voordat wijzigingen in het groeps- of 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 het groepslidmaatschap 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, over de juiste toegang beschikt.

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 ophalen voor Azure-resources die door Microsoft Entra ID worden beveiligd, 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. U hebt toegang tot het REST-eindpunt vanuit de app met behulp van een standaard HTTP-aanvraag GET . U kunt de aanvraag implementeren 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-aanvraag GET 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>

Een voorbeeldantwoord kan eruitzien als in het volgende voorbeeld:

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 het service-naar-service toegangstokenverzoek van Microsoft Entra. Als u toegang wilt krijgen tot Key Vault, voegt u de waarde van access_token toe aan een clientverbinding met de kluis.

Zie de naslaginformatie voor REST-eindpunten verderop in dit artikel 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. Selecteer Instellingen> en Identiteit in het linkermenu van de pagina van uw app.

  2. Volg de stappen op basis van het identiteitstype:

    • Voor een systeemtoegewezen identiteit: schakel op het tabblad Systeemtoegewezen de Status naar Uit. Selecteer vervolgens Opslaan.
    • Voor een door de gebruiker toegewezen identiteit: selecteer het tabblad Door de gebruiker toegewezen , schakel het selectievakje voor de identiteit in en selecteer vervolgens Verwijderen. Selecteer Ja om te bevestigen.

Notitie

U kunt ook een toepassingsinstelling instellen waarmee alleen de lokale tokenservice wordt uitgeschakeld: WEBSITE_DISABLE_MSI. De identiteit blijft echter behouden. Tooling toont nog steeds dat de beheerde identiteit als aan of ingeschakeld staat. Als gevolg hiervan raden we u niet aan deze instelling te gebruiken.

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 kan helpen bij het beperken van SSRF-aanvallen (request forgery) aan de serverzijde. Het platform draait de waarde.

De IDENTITY_ENDPOINT variabele is een lokale URL waaruit uw app tokens kan aanvragen. Als u een token voor een resource wilt ophalen, moet u een HTTP-aanvraag GET naar dit eindpunt indienen. Neem de volgende parameters op:

Parameternaam In Beschrijving
resource Zoekopdracht De Microsoft Entra-resource-URI van de resource waarvoor een token moet worden verkregen. Deze resource kan een van de Azure-services zijn die ondersteuning bieden voor Microsoft Entra-verificatie of een andere resource-URI.
api-version Vraag De versie van de token-API die moet worden gebruikt. Gebruik 2019-08-01.
X-IDENTITY-HEADER Koptekst De waarde van de IDENTITY_HEADER omgevingsvariabele. Deze header wordt gebruikt om SSRF-aanvallen te beperken.
client_id Vraag (Optioneel) De client-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Het 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 Vraag (Optioneel) De principal-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. De object_id parameter is een alias die in plaats daarvan kan worden gebruikt. Het kan niet worden gebruikt voor een aanvraag met client_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.
mi_res_id Vraag (Optioneel) De Azure-resource-id van de door de gebruiker toegewezen identiteit die moet worden gebruikt. Het kan niet worden gebruikt voor een aanvraag met 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 wilt ophalen voor door de gebruiker toegewezen identiteiten, neemt u een van de optionele eigenschappen op. Anders probeert de tokenservice een token op te halen voor een door het systeem toegewezen identiteit, die al dan niet bestaat.

Bekijk de volgende handleidingen: