Hanterade identiteter i Azure Container Apps

Med en hanterad identitet från Microsoft Entra-ID kan din containerapp komma åt andra Microsoft Entra-skyddade resurser. Mer information om hanterade identiteter i Microsoft Entra-ID finns i Hanterade identiteter för Azure-resurser.

Containerappen kan beviljas två typer av identiteter:

  • En systemtilldelad identitet är kopplad till containerappen och tas bort när containerappen tas bort. En app kan bara ha en systemtilldelad identitet.
  • En användartilldelad identitet är en fristående Azure-resurs som kan tilldelas till din containerapp och andra resurser. En containerapp kan ha flera användartilldelade identiteter. Identiteten finns tills du tar bort dem.

Varför ska jag använda en hanterad identitet?

Du kan använda en hanterad identitet i en containerapp som körs för att autentisera till alla tjänster som stöder Microsoft Entra-autentisering.

Med hanterade identiteter:

  • Appen ansluter till resurser med den hanterade identiteten. Du behöver inte hantera autentiseringsuppgifter i containerappen.
  • Du kan använda rollbaserad åtkomstkontroll för att bevilja specifika behörigheter till en hanterad identitet.
  • Systemtilldelade identiteter skapas och hanteras automatiskt. De tas bort när din containerapp tas bort.
  • Du kan lägga till och ta bort användartilldelade identiteter och tilldela dem till flera resurser. De är oberoende av containerappens livscykel.
  • Du kan använda hanterad identitet för att autentisera med ett privat Azure Container Registry utan användarnamn och lösenord för att hämta containrar för containerappen.
  • Du kan använda hanterad identitet för att skapa anslutningar för Dapr-aktiverade program via Dapr-komponenter

Vanliga användningsfall

Systemtilldelade identiteter passar bäst för arbetsbelastningar som:

  • finns i en enskild resurs
  • behöver oberoende identiteter

Användartilldelade identiteter är idealiska för arbetsbelastningar som:

  • körs på flera resurser och kan dela en enda identitet
  • behöver förhandsauktorisering till en säker resurs

Begränsningar

Det går inte att använda hanterade identiteter i skalningsregler. Du måste fortfarande inkludera anslutningssträng eller nyckeln i secretRef skalningsregeln.

Init-containrar kan inte komma åt hanterade identiteter.

Konfigurera hanterade identiteter

Du kan konfigurera dina hanterade identiteter genom att:

  • Azure-portalen
  • Azure CLI
  • din ARM-mall (Azure Resource Manager)

När en hanterad identitet läggs till, tas bort eller ändras i en containerapp som körs startas inte appen om automatiskt och ingen ny revision skapas.

Kommentar

När du lägger till en hanterad identitet i en containerapp som distribuerats före den 11 april 2022 måste du skapa en ny revision.

Lägga till en systemtilldelad identitet

  1. I det vänstra navigeringsfältet på containerappens sida rullar du ned till gruppen Inställningar.

  2. Välj Identitet.

  3. På fliken Systemtilldelat växlar du Status till . Välj Spara.

Screenshot of system-assigned identities.

Lägga till en användartilldelad identitet

Om du konfigurerar en containerapp med en användartilldelad identitet måste du först skapa identiteten och sedan lägga till dess resursidentifierare i containerappens konfiguration. Du kan skapa användartilldelade identiteter via Azure-portalen eller Azure CLI. Information om hur du skapar och hanterar användartilldelade identiteter finns i Hantera användartilldelade hanterade identiteter.

Först måste du skapa en användartilldelad identitetsresurs.

  1. Skapa en användartilldelad hanterad identitetsresurs enligt stegen i Hantera användartilldelade hanterade identiteter.

  2. I det vänstra navigeringsfältet för containerappens sida rullar du ned till gruppen Inställningar.

  3. Välj Identitet.

  4. På fliken Användartilldelade väljer du Lägg till.

  5. Sök efter den identitet som du skapade tidigare och välj den. Markera Lägga till.

Screenshot of user-assigned identities.

Konfigurera en målresurs

För vissa resurser måste du konfigurera rolltilldelningar för appens hanterade identitet för att bevilja åtkomst. Annars avvisas anrop från din app till tjänster, till exempel Azure Key Vault och Azure SQL Database, även om du använder en giltig token för den identiteten. Mer information om rollbaserad åtkomstkontroll i Azure (Azure RBAC) finns i Vad är RBAC?. Mer information om vilka resurser som stöder Microsoft Entra-token finns i Azure-tjänster som stöder Microsoft Entra-autentisering.

Viktigt!

Serverdelstjänsterna för hanterade identiteter underhåller en cache per resurs-URI i cirka 24 timmar. Om du uppdaterar åtkomstprincipen för en viss målresurs och omedelbart hämtar en token för den resursen kan du fortsätta att hämta en cachelagrad token med inaktuella behörigheter tills token upphör att gälla. Det finns för närvarande inget sätt att tvinga fram en tokenuppdatering.

Anslut till Azure-tjänster i appkod

Med hanterade identiteter kan en app hämta token för åtkomst till Azure-resurser som använder Microsoft Entra-ID, till exempel Azure SQL Database, Azure Key Vault och Azure Storage. Dessa token representerar programmet som kommer åt resursen och inte någon specifik användare av programmet.

Container Apps tillhandahåller en internt tillgänglig REST-slutpunkt för att hämta token. REST-slutpunkten kan nås inifrån appen med en standard-HTTP GET, som kan implementeras med en allmän HTTP-klient på alla språk. För .NET, JavaScript, Java och Python tillhandahåller Azure Identity-klientbiblioteket en abstraktion över den här REST-slutpunkten. Anslut till andra Azure-tjänster är lika enkelt som att lägga till ett autentiseringsobjekt till den tjänstspecifika klienten.

Kommentar

När du använder Azure Identity-klientbiblioteket måste det användartilldelade klient-ID:t för hanterad identitet anges.

Kommentar

När du ansluter till Azure SQL-datakällor med Entity Framework Core bör du överväga att använda Microsoft.Data.SqlClient, som tillhandahåller särskilda anslutningssträng för hanterad identitetsanslutning.

För .NET-appar är det enklaste sättet att arbeta med en hanterad identitet via Azure Identity-klientbiblioteket för .NET. Mer information finns i respektive dokumentationsrubriker i klientbiblioteket:

De länkade exemplen använder DefaultAzureCredential. Det är användbart för de flesta scenarier eftersom samma mönster fungerar i Azure (med hanterade identiteter) och på din lokala dator (utan hanterade identiteter).

Visa hanterade identiteter

Du kan visa de systemtilldelade och användartilldelade hanterade identiteterna med hjälp av följande Azure CLI-kommando. Utdata visar den hanterade identitetstypen, klient-ID:n och huvudnamns-ID:n för alla hanterade identiteter som tilldelats din containerapp.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

Ta bort en hanterad identitet

När du tar bort en systemtilldelad identitet tas den bort från Microsoft Entra-ID. Systemtilldelade identiteter tas också bort automatiskt från Microsoft Entra-ID när du tar bort själva containerappresursen. Om du tar bort användartilldelade hanterade identiteter från containerappen tas de inte bort från Microsoft Entra-ID.

  1. I det vänstra navigeringsfönstret på appens sida rullar du ned till gruppen Inställningar.

  2. Välj Identitet. Följ sedan stegen baserat på identitetstypen:

    • Systemtilldelad identitet: På fliken Systemtilldelad växlar du Status till Av. Välj Spara.
    • Användartilldelad identitet: Välj fliken Användartilldelad , markera kryssrutan för identiteten och välj Ta bort. Välj Ja för att bekräfta.

Nästa steg