Översikt över dynamiska sessioner i Azure Container Apps
Dynamiska Sessioner i Azure Container Apps ger snabb åtkomst till säkra miljöer i sandbox-miljö som är idealiska för att köra kod eller program som kräver stark isolering från andra arbetsbelastningar.
Sessioner har följande attribut:
Stark isolering: Sessioner isoleras från varandra och från värdmiljön. Varje session körs i sin egen Sandbox-miljö i Hyper-V, vilket ger säkerhet och isolering i företagsklass. Du kan också aktivera nätverksisolering för att ytterligare förbättra säkerheten.
Enkel åtkomst: Sessioner nås via ett REST-API. En unik identifierare markerar varje session. Om en session med en viss identifierare inte finns allokeras en ny session automatiskt.
Fullständigt hanterad: Plattformen hanterar en sessions livscykel fullt ut. Sessioner rensas automatiskt när de inte längre används.
Snabb start: En ny session allokeras i millisekunder. Snabba nystartade datorer uppnås genom att automatiskt underhålla en pool med färdiga men oallokerade sessioner.
Skalbar: Sessioner kan köras i hög skala. Du kan köra hundratals eller tusentals sessioner samtidigt.
Kommentar
Dynamiska Sessioner i Azure Container Apps är för närvarande i förhandsversion.
Sessionstyper
Azure Container Apps stöder två typer av sessioner:
Typ | Beskrivning | Faktureringsmodell |
---|---|---|
Kodtolkare | Fullständigt hanterad kodtolkare | Per session (förbrukning) |
Anpassad container | Ta med din egen container | Dedikerad plan för Container Apps |
Kodtolkare
Med kodtolksessioner kan du köra kod i en sandbox-miljö som är förinstallerad med populära bibliotek. De är idealiska för att köra obetrodd kod, till exempel kod som tillhandahålls av användare av ditt program eller kod som genereras av en stor språkmodell (LLM). Läs mer om kodtolkarsessioner.
Anpassad container
Med anpassade containersessioner kan du köra egna containeravbildningar i säkra, isolerade sandbox-miljö. Du kan använda dem för att köra en anpassad kodtolkare för ett språk som inte stöds direkt eller för att köra arbetsbelastningar som kräver stark isolering. Läs mer om anpassade containersessioner.
Begrepp
De viktigaste begreppen i dynamiska Azure Container Apps-sessioner är sessionspooler och sessioner.
Sessionspooler
För att tillhandahålla sessionsallokeringstider under andra sekunden har Azure Container Apps en pool med klara men oallokerade sessioner. När du skickar en begäran till en ny session allokerar plattformen en session från poolen till dig. När sessioner allokeras fyller plattformen automatiskt på poolen för att upprätthålla ett konstant antal färdiga sessioner.
Du kan konfigurera pooler för att ange det maximala antalet sessioner som kan allokeras samtidigt via egenskapen maxConcurrentSessions
. Du kan ange väntetiden från den senaste begäran innan en session tas bort.cooldownPeriodInSeconds
För anpassade containersessioner kan du också ange den containeravbildning och de inställningar som ska användas för sessionerna i poolen, inklusive målantalet sessioner som ska hållas redo i poolen via readySessionInstances
.
Sessioner
En session är en sandbox-miljö som kör din kod eller ditt program. Varje session är isolerad från andra sessioner och från värdmiljön med en Hyper-V-sandbox-miljö . Du kan också aktivera nätverksisolering för att ytterligare förbättra säkerheten.
Du interagerar med sessioner i en sessionspool genom att skicka HTTP-begäranden. Varje sessionspool har en unik slutpunkt för poolhantering.
För kodtolkarsessioner kan du också använda en integrering med ett LLM-ramverk.
Sessionsidentifierare
Om du vill skicka en HTTP-begäran till en session måste du ange en sessionsidentifierare i begäran. Du skickar sessionsidentifieraren i en frågeparameter med namnet identifier
i URL:en när du skickar en begäran till en session.
- Om det redan finns en session med identifieraren skickas begäran till den befintliga sessionen.
- Om det inte finns någon session med identifieraren allokeras en ny session automatiskt innan begäran skickas till den.
Identifierarformat
Sessionsidentifieraren är en sträng i fritt format, vilket innebär att du kan definiera den på alla sätt som passar programmets behov.
Sessionsidentifieraren är en sträng som du definierar som är unik i sessionspoolen. Om du skapar ett webbprogram kan du använda användarens ID som sessionsidentifierare. Om du skapar en chattrobot kan du använda konversations-ID:t.
Identifieraren måste vara en sträng som är mellan 4 och 128 tecken lång och får endast innehålla alfanumeriska tecken och specialtecken från den här listan: |
, -
, &
, ^
, %
, , #
$
, , (
, )
, {
, }
, [
, ]
, , ;
, <
och >
.
Skydda sessionsidentifierare
Sessionsidentifieraren är känslig information som du måste hantera på ett säkert sätt. Ditt program måste se till att varje användare eller klient endast har åtkomst till sina egna sessioner.
De specifika strategier som förhindrar missbruk av sessionsidentifierare varierar beroende på appens design och arkitektur. Din app måste dock alltid ha fullständig kontroll över skapandet och användningen av sessionsidentifierare så att en obehörig användare inte kan komma åt en annan användares session.
Exempelstrategier är:
- En session per användare: Om din app använder en session per användare måste varje användare autentiseras på ett säkert sätt och appen måste använda en unik sessionsidentifierare för varje inloggad användare.
- En session per agentkonversation: Om din app använder en session per AI-agentkonversation kontrollerar du att appen använder en unik sessionsidentifierare för varje konversation som inte kan ändras av slutanvändaren.
Viktigt!
Om du inte kan skydda åtkomsten till sessioner kan det leda till missbruk eller obehörig åtkomst till data som lagras i användarnas sessioner.
Autentisering och auktorisering
När du skickar begäranden till en session med hjälp av API:et för poolhantering hanteras autentiseringen med hjälp av Microsoft Entra-token (tidigare Azure Active Directory). Endast Microsoft Entra-token från en identitet som tillhör azure ContainerApps-sessionskörningsrollen i sessionspoolen har behörighet att anropa API:et för poolhantering.
Om du vill tilldela rollen till en identitet använder du följande Azure CLI-kommando:
az role assignment create \
--role "Azure ContainerApps Session Executor" \
--assignee <PRINCIPAL_ID> \
--scope <SESSION_POOL_RESOURCE_ID>
Om du använder en LLM-ramverksintegrering hanterar ramverket tokengenereringen och hanteringen åt dig. Kontrollera att programmet har konfigurerats med en hanterad identitet med nödvändiga rolltilldelningar i sessionspoolen.
Om du använder poolens API-slutpunkter för hantering direkt måste du generera en token och inkludera den Authorization
i rubriken för dina HTTP-begäranden. Utöver de rolltilldelningar som tidigare nämnts måste token innehålla ett målgruppsanspråk (aud
) med värdet https://dynamicsessions.io
.
Kör följande kommando för att generera en token med hjälp av Azure CLI:
az account get-access-token --resource https://dynamicsessions.io
Viktigt!
En giltig token kan användas för att skapa och komma åt valfri session i poolen. Skydda dina token och dela dem inte med ej betrodda parter. Slutanvändarna bör komma åt sessioner via ditt program, inte direkt. De bör aldrig ha åtkomst till de token som används för att autentisera begäranden till sessionspoolen.
Livscykel
Container Apps-körningen hanterar automatiskt livscykeln för varje session i en sessionspool.
Väntar: När en session startas är den i väntande tillstånd. Hur lång tid en session tillbringar i väntande tillstånd beror på containeravbildningen och inställningarna som du anger för sessionspoolen. En väntande session läggs inte till i poolen med färdiga sessioner.
Klar: När en session har startats och är klar läggs den till i poolen. Sessionen är tillgänglig i det här tillståndet för allokering. För anpassade containersessioner kan du ange målantalet färdiga sessioner som ska behållas i poolen. Öka det här antalet om sessioner allokeras snabbare än poolen fylls på.
Allokerad: När du skickar en begäran till en session som inte körs tillhandahåller poolen en ny session och placerar den i ett allokerat tillstånd. Efterföljande begäranden med samma sessionsidentifierare dirigeras till samma session.
Borttagning: När en session slutar ta emot begäranden under den tid som definieras av
cooldownPeriodInSeconds
inställningen tas sessionen och dess Hyper-V-sandbox-miljö bort helt och säkert.
Säkerhet
Dynamiska sessioner i Azure Container Apps skapas för att köra kod och program som inte är betrodda i en säker och isolerad miljö. Sessioner är isolerade från varandra, men allt inom en enda session, inklusive filer och miljövariabler, är tillgängligt för användare av sessionen. Du bör bara konfigurera eller ladda upp känsliga data till en session om du litar på användarna av sessionen.
Som standard hindras sessioner från att göra utgående nätverksbegäranden. Du kan styra nätverksåtkomsten genom att konfigurera inställningar för nätverksstatus i sessionspoolen.
Följ dessutom riktlinjerna i avsnittet autentisering och auktorisering för att säkerställa att endast behöriga användare kan komma åt sessioner och i avsnittet skydda sessionsidentifierare för att säkerställa att sessionsidentifierare är säkra.
Begränsningar i förhandsversionen
Dynamiska Sessioner i Azure Container Apps är för närvarande i förhandsversion. Följande begränsningar gäller:
Den är bara tillgänglig i följande regioner:
Region Kodtolkare Anpassad container Asien, östra ✔ ✔ USA, östra ✔ ✔ Tyskland, västra centrala ✔ ✔ Italien, norra ✔ ✔ Polen, centrala ✔ ✔ Norra centrala USA ✔ - Europa, norra ✔ ✔ Västra USA 2 ✔ ✔