다음을 통해 공유


Azure Container Apps 동적 세션 개요

Azure Container Apps 동적 세션은 다른 워크로드로부터 강력한 격리가 필요한 코드 또는 애플리케이션을 실행하는 데 이상적인 안전한 샌드박스 환경에 대한 빠른 액세스를 제공합니다.

세션에는 다음과 같은 특성이 있습니다.

  • 강력한 격리: 세션이 서로 격리되고 호스트 환경에서도 격리됩니다. 각 세션은 자체 Hyper-V 샌드박스에서 실행되어 엔터프라이즈급 보안 및 격리를 제공합니다. 선택적으로 네트워크 격리를 사용하도록 설정하여 보안을 더욱 강화할 수 있습니다.

  • 간단한 액세스: REST API를 통해 세션에 액세스합니다. 고유 식별자가 각 세션을 표시합니다. 지정된 식별자를 가진 세션이 존재하지 않으면 새 세션이 자동으로 할당됩니다.

  • 완전 관리형: 플랫폼이 세션 수명 주기를 완전히 관리합니다. 세션은 더 이상 사용되지 않으면 자동으로 정리됩니다.

  • 빠른 시작: 새 세션이 밀리초 단위로 할당됩니다. 준비되었지만 할당되지 않은 세션 풀을 자동으로 유지함으로써 신속한 시작이 가능합니다.

  • 크기 조정 가능: 세션을 대규모로 실행할 수 있습니다. 수백 또는 수천 개의 세션을 동시에 실행할 수 있습니다.

세션 유형

Azure Container Apps는 두 가지 형식의 세션을 지원합니다.

Type 설명 청구 모델
코드 해석기 완전 관리형 코드 인터프리터 세션당(사용량)
사용자 지정 컨테이너 사용자 고유의 컨테이너 가져오기 Container Apps 전용 플랜

코드 해석기

코드 인터프리터 세션을 사용하면 널리 사용되는 라이브러리가 사전 설치된 샌드박스에서 코드를 실행할 수 있습니다. 이는 애플리케이션 사용자가 제공한 코드 또는 LLM(대규모 언어 모델)에서 생성된 코드와 같은 신뢰할 수 없는 코드를 실행하는 데 이상적입니다. 코드 인터프리터 세션에 대해 자세히 알아봅니다.

사용자 지정 컨테이너

사용자 지정 컨테이너 세션을 사용하면 안전하고 격리된 샌드박스에서 자체 컨테이너 이미지를 실행할 수 있습니다. 이를 사용하여 기본적으로 지원되지 않는 언어에 대한 사용자 지정 코드 인터프리터를 실행하거나 강력한 격리가 필요한 워크로드를 실행할 수 있습니다. 사용자 지정 컨테이너 세션에 대해 자세히 알아봅니다.

개념

Azure Container Apps 동적 세션의 주요 개념은 세션 풀과 세션입니다.

세션 풀

1초 미만의 세션 할당 시간을 제공하기 위해 Azure Container Apps는 준비되었지만 할당되지 않은 세션 풀을 유지 관리합니다. 자동 업데이트 — 이전에는 배포 유형 선택의 일부였습니다. 세션이 할당되면 플랫폼은 자동으로 풀을 보충하여 준비된 세션 수를 일정하게 유지합니다.

maxConcurrentSessions 속성을 통해 동시에 할당할 수 있는 최대 세션 수를 설정하도록 풀을 구성할 수 있습니다. 세션이 삭제되기 전 마지막 요청의 대기 시간을 cooldownPeriodInSeconds 속성으로 설정할 수 있습니다. 사용자 지정 컨테이너 세션의 경우 readySessionInstances를 통해 풀에서 준비 상태로 유지할 대상 세션 수를 포함하여 풀의 세션에 사용할 컨테이너 이미지와 설정을 지정할 수도 있습니다.

세션

세션은 코드나 애플리케이션을 실행하는 샌드박스 환경입니다. 각 세션은 Hyper-V 샌드박스를 통해 다른 세션 및 호스트 환경으로부터 격리됩니다. 선택적으로 네트워크 격리를 사용하도록 설정하여 보안을 더욱 강화할 수 있습니다.

HTTP 요청을 전송하여 세션 풀의 세션과 상호 작용합니다. 각 세션 풀에는 고유한 풀 관리 엔드포인트가 있습니다.

코드 인터프리터 세션의 경우 LLM 프레임워크와의 통합을 사용할 수도 있습니다.

세션 식별자

세션에 HTTP 요청을 보내려면 요청에 세션 식별자를 제공해야 합니다. 세션에 요청할 때 URL의 identifier라는 쿼리 매개 변수에 세션 식별자를 전달합니다.

  • 식별자가 있는 세션이 이미 있는 경우 요청이 기존 세션으로 전송됩니다.
  • 식별자가 있는 세션이 없으면 요청이 전송되기 전에 새 세션이 자동으로 할당됩니다.

세션 풀 및 세션 사용의 스크린샷.

식별자 형식

세션 식별자는 자유 형식 문자열이므로 애플리케이션의 요구 사항에 맞는 방식으로 정의할 수 있습니다.

세션 식별자는 세션 풀 내에서 고유하게 정의하는 문자열입니다. 웹 애플리케이션을 빌드하는 경우 사용자의 ID를 세션 식별자로 사용할 수 있습니다. 챗봇을 빌드하는 경우 대화 ID를 사용할 수 있습니다.

식별자는 4~128자 길이의 문자열이어야 하며 다음 목록의 영숫자 및 특수 문자만 포함할 수 있습니다. |, -, &, ^, %, $, #, (, ), {, }, [, ], ;, <>.

세션 식별자 보호

세션 식별자는 안전하게 관리해야 하는 중요한 정보입니다. 애플리케이션은 각 사용자 또는 테넌트가 자신의 세션에만 액세스할 수 있도록 해야 합니다.

세션 식별자의 오용을 방지하는 특정 전략은 앱의 디자인 및 아키텍처에 따라 다릅니다. 그러나 악의적인 사용자가 다른 사용자의 세션에 액세스할 수 없도록 앱은 항상 세션 식별자 만들기 및 사용을 완전히 제어해야 합니다.

예제 전략은 다음과 같습니다.

  • 사용자당 하나의 세션: 앱에서 사용자당 하나의 세션을 사용하는 경우 각 사용자는 안전하게 인증되어야 하며 앱은 로그인한 각 사용자에 대해 고유한 세션 식별자를 사용해야 합니다.
  • 에이전트 대화당 하나의 세션: 앱이 AI 에이전트 대화당 하나의 세션을 사용하는 경우 앱이 최종 사용자가 수정할 수 없는 각 대화에 대해 고유한 세션 식별자를 사용하는지 확인합니다.

Important

세션에 대한 액세스를 보호하지 못하면 사용자의 세션에 저장된 데이터에 대한 오용 또는 무단 액세스가 발생할 수 있습니다.

인증 및 권한 부여

풀 관리 API를 사용하여 세션에 요청을 보내면 Microsoft Entra(이전의 Azure Active Directory) 토큰을 사용하여 인증이 처리됩니다. 세션 풀의 Azure ContainerApps 세션 실행기 역할에 속하는 ID의 Microsoft Entra 토큰만 풀 관리 API를 호출할 수 있는 권한이 부여됩니다.

ID에 역할을 할당하려면 다음 Azure CLI 명령을 사용합니다.

az role assignment create \
    --role "Azure ContainerApps Session Executor" \
    --assignee <PRINCIPAL_ID> \
    --scope <SESSION_POOL_RESOURCE_ID>

LLM 프레임워크 통합을 사용하는 경우 프레임워크가 토큰 생성 및 관리를 자동으로 처리합니다. 세션 풀에서 필요한 역할 할당이 포함된 관리 ID로 애플리케이션이 구성되어 있는지 확인합니다.

풀의 관리 API 엔드포인트를 직접 사용하는 경우 토큰을 생성하고 이를 HTTP 요청의 Authorization 헤더에 포함해야 합니다. 이전에 언급한 역할 할당 외에도 토큰에는 값이 https://dynamicsessions.io인 대상 그룹(aud) 클레임이 포함되어야 합니다.

Azure CLI를 사용하여 토큰을 생성하려면 다음 명령을 실행합니다.

az account get-access-token --resource https://dynamicsessions.io

Important

유효한 토큰을 사용하여 풀의 모든 세션을 만들고 액세스할 수 있습니다. 토큰을 안전하게 유지하고 신뢰할 수 없는 당사자와 공유하지 마세요. 최종 사용자는 직접 액세스하는 것이 아니라 애플리케이션을 통해 세션에 액세스해야 합니다. 세션 풀에 대한 요청을 인증하는 데 사용되는 토큰에 액세스할 수 없어야 합니다.

수명 주기

Container Apps 런타임은 세션 풀의 각 세션에 대한 수명 주기를 자동으로 관리합니다.

  • 보류 중: 세션이 시작되면 보류 상태입니다. 세션이 보류 상태에서 소비하는 시간은 세션 풀에 대해 지정하는 컨테이너 이미지 및 설정에 따라 다릅니다. 보류 중인 세션은 준비된 세션 풀에 추가되지 않습니다.

  • 준비: 세션 시작이 완료되고 준비되면 풀에 추가됩니다. 이 상태에서 세션을 할당할 수 있습니다. 사용자 지정 컨테이너 세션의 경우 풀에 보관할 준비된 세션의 대상 수를 지정할 수 있습니다. 풀이 보충되는 것보다 세션이 더 빨리 할당되는 경우 이 숫자를 늘립니다.

  • 할당됨: 실행되지 않는 세션에 요청을 보내면 풀은 새 세션을 제공하고 이를 할당 상태로 설정합니다. 동일한 세션 식별자를 사용하는 후속 요청은 동일한 세션으로 라우팅됩니다.

  • 삭제: cooldownPeriodInSeconds 설정에 정의된 시간 동안 세션이 요청 수신을 중지하면 세션과 해당 Hyper-V 샌드박스가 완전하고 안전하게 삭제됩니다.

보안

Azure Container Apps 동적 세션은 안전하고 격리된 환경에서 신뢰할 수 없는 코드와 애플리케이션을 실행하도록 빌드되었습니다. 세션은 서로 격리되어 있지만 파일 및 환경 변수를 포함하여 단일 세션 내의 모든 항목은 세션 사용자가 액세스할 수 있습니다. 세션 사용자를 신뢰하는 경우에만 중요한 데이터를 세션에 구성하거나 업로드해야 합니다.

기본적으로 세션은 아웃바운드 네트워크 요청을 수행할 수 없습니다. 세션 풀에서 네트워크 상태 설정을 구성하여 네트워크 액세스를 제어할 수 있습니다.

또한 인증 및 권한 부여 섹션의 지침에 따라 권한 있는 사용자만 세션에 액세스할 수 있는지 확인하고 세션 식별자 보호 섹션에서 세션 식별자가 안전한지 확인합니다.

미리 보기 제한 사항

동적 세션에는 다음과 같은 제한 사항이 적용됩니다.

  • 다음 지역에서만 사용할 수 있습니다.

    지역 코드 해석기 사용자 지정 컨테이너
    오스트레일리아 동부
    미국 중부 EUAP
    미국 동부 2 EUAP
    미국 동부
    동아시아
    독일 중서부
    이탈리아 북부
    미국 중북부 -
    폴란드 중부
    스위스 북부
    미국 중서부
    미국 서부 2

다음 단계