Azure Container Apps 동적 세션은 다른 워크로드로부터 강력한 격리가 필요한 코드 또는 애플리케이션을 실행하는 데 이상적인 안전한 샌드박스 환경에 대한 빠른 액세스를 제공합니다.
세션은 세션의 즉각적인 가용성을 보장하기 위해 콜드 스타트를 완화하는 세션 풀 의 컨텍스트 내에서 작동합니다.
세션을 사용하면 다음을 얻을 수 있습니다.
강력한 격리: 세션이 서로 격리되고 호스트 환경에서도 격리됩니다. 각 세션은 자체 Hyper-V 샌드박스에서 실행되어 엔터프라이즈급 보안 및 격리를 제공합니다. 선택적으로 네트워크 격리를 사용하도록 설정하여 보안을 더욱 강화할 수 있습니다.
간단한 액세스: REST API를 통해 세션에 액세스합니다. 고유 식별자가 각 세션을 표시합니다. 지정된 식별자를 가진 세션이 존재하지 않으면 새 세션이 자동으로 할당됩니다.
완전 관리: Container Apps는 세션의 수명 주기를 완전히 관리합니다. 세션은 더 이상 사용되지 않으면 자동으로 정리됩니다.
빠른 시작: 새 세션이 밀리초 단위로 할당됩니다. 준비되었지만 할당되지 않은 세션 풀을 자동으로 유지함으로써 신속한 시작이 가능합니다.
크기 조정 가능: 세션을 대규모로 실행할 수 있습니다. 수백 또는 수천 개의 세션을 동시에 실행할 수 있습니다.
API 액세스: 세션은 단일 HTTP 엔드포인트를 통해 애플리케이션에 노출됩니다.
세션
세션은 신뢰할 수 없는 코드 또는 애플리케이션을 실행하는 샌드박스 환경입니다.
각 세션은 다른 모든 세션과 Hyper-V 샌드박스가 있는 호스트 환경에서 격리됩니다. Hyper-V 기술은 세션 격리의 기초가 되며, 다양한 세션이 필요한 보안 경계와 독립적으로 작동하도록 보장합니다. 향상된 네트워크 보안을 위해 세션에서 세션 네트워크 격리를 사용하도록 설정할 수 있습니다.
세션에는 두 가지 유형이 있습니다.
세션 유형
Azure Container Apps는 두 가지 형식의 세션을 지원합니다.
| 유형 | 설명 | 청구 모델 |
|---|---|---|
| 코드 인터프리터 세션 | 널리 사용되는 라이브러리가 미리 설치된 샌드박스에서 코드를 실행할 수 있는 완전히 관리되는 코드 인터프리터입니다. 애플리케이션 사용자가 제공한 코드 또는 LLM(대규모 언어 모델)에서 생성된 코드와 같은 신뢰할 수 없는 코드를 실행하는 데 적합합니다. 세션을 기본 제공 또는 언어 모델 프레임워크와 함께 사용할 수 있습니다. |
세션당(사용량) |
| 사용자 지정 컨테이너 세션 | 사용자가 소유한 컨테이너 이미지를 안전하고 격리된 샌드박스에서 실행하는 가져오기 옵션입니다. 이 방법은 기본으로 지원되지 않는 언어 또는 강력한 격리가 필요한 워크로드에 대해 사용자 지정 코드 인터프리터를 실행하려는 경우에 좋은 옵션입니다. |
Container Apps 전용 플랜 |
각 세션은 형식에 관계없이 세션 풀의 컨텍스트에서 실행됩니다.
세션 풀
1초 미만의 세션 할당 시간을 제공하기 위해 Azure Container Apps는 준비되었지만 할당되지 않은 세션 풀을 유지 관리합니다. 애플리케이션이 이전에 사용되지 않은 세션에 대한 요청을 하면 풀에서 자동으로 새 세션을 할당합니다. 세션이 할당되면 풀이 자동으로 보충되어 일정한 수의 준비된 세션을 유지 관리합니다.
각 세션 풀은 고유한 풀 관리 엔드포인트 위치를 통해 앱에서 사용할 수 있습니다.
세션 수명 주기
Container Apps 런타임은 풀의 각 세션에 대한 수명 주기를 자동으로 관리합니다. 세션의 수명은 세션이 시작되고 세션이 사용 중인 동안 계속됨에 따라 시작됩니다. 쿨 다운 시간이 경과한 후 세션에 대한 요청이 없으면 세션이 제거됩니다.
다음 상태는 이 수명 주기를 정의합니다.
보류 중: 세션이 시작되면 보류 상태입니다. 세션이 이 상태에서 소비하는 시간은 세션 풀에 지정된 컨테이너 이미지 및 설정에 따라 달라집니다. 이 상태의 세션은 준비된 세션 풀에 추가되지 않습니다.
할당되지 않음: 세션 시작이 완료되면 풀에 추가되고 할당할 수 있게 됩니다. 사용자 지정 컨테이너 세션의 경우 풀에서 유지 관리할 준비 세션 수를 지정할 수 있습니다. 세션이 보충되는 것보다 더 빠르게 할당되는 경우 이 수를 늘려야 합니다.
할당됨: 실행하지 않는 세션에 요청을 보낼 때 풀은 새 세션을 제공하고 할당된 상태로 배치합니다. 세션 식별자가 동일한 후속 요청은 동일한 세션으로 라우팅되므로 콜드 시작 없이 효율적으로 재사용할 수 있습니다. 할당된 각 세션은 세션 식별자와 연결됩니다.
제거됨: 세션이 설정에 정의된
cooldownPeriodInSeconds기간 동안 요청을 받지 못하면 세션과 해당 Hyper-V 샌드박스가 안전하게 삭제됩니다. 이 자동 정리 설정은 리소스 관리 및 보안을 향상시킵니다.
Container Apps 런타임은 세션 풀의 각 세션에 대한 수명 주기를 자동으로 관리합니다.
지역 가용성
동적 세션은 다음 지역에서 사용할 수 있습니다.
| 지역 | 코드 인터프리터 | 사용자 지정 컨테이너 |
|---|---|---|
| 오스트레일리아 동부 | ✔ | ✔ |
| Australia Southeast | ✔ | ✔ |
| 브라질 남부 | ✔ | ✔ |
| Canada Central | ✔ | ✔ |
| 캐나다 동부 | ✔ | ✔ |
| Central India | ✔ | ✔ |
| Central US | ✔ | ✔ |
| 동아시아 | ✔ | ✔ |
| 미국 동부 | ✔ | ✔ |
| 미국 동부 2 | ✔ | ✔ |
| 프랑스 중부 | ✔ | ✔ |
| 독일 중서부 | ✔ | ✔ |
| 이탈리아 북부 | ✔ | ✔ |
| 일본 동부 | ✔ | ✔ |
| 일본 서부 | ✔ | ✔ |
| 한국 중부 | ✔ | ✔ |
| 미국 중북부 | ✔ | ✔ |
| 북유럽 | ✔ | ✔ |
| 노르웨이 동부 | ✔ | ✔ |
| 폴란드 중부 | ✔ | ✔ |
| 남아프리카 북부 | ✔ | ✔ |
| 인도 남부 | ✔ | ✔ |
| 동남아시아 | ✔ | ✔ |
| 스웨덴 중부 | ✔ | ✔ |
| 스위스 북부 | ✔ | ✔ |
| 스위스 서부 | ✔ | ✔ |
| 아랍에미리트 북부 | ✔ | ✔ |
| 영국 남부 | ✔ | ✔ |
| UK West | ✔ | ✔ |
| 미국 중서부 | ✔ | ✔ |
| 서유럽 | ✔ | ✔ |
| 미국 서부 | ✔ | ✔ |
| 미국 서부 2 | ✔ | ✔ |
| 미국 서부 3 | ✔ | ✔ |
결제
사용자 지정 컨테이너 세션은 세션 풀에서 사용하는 리소스에 따라 요금이 청구됩니다. 자세한 내용은 Azure Container Apps 청구를 참조하세요.
보안
다음 메서드를 사용하여 동적 세션의 보안을 강화합니다.
보안 식별자: 항상 보안 세션 식별자를 사용합니다. 고유하고 예측할 수 없는 값을 보장하기 위해 암호화 메서드를 사용하여 세션 식별자를 생성합니다. 공격자가 추측할 수 있는 순차 ID를 사용하지 않습니다.
HTTPS 사용: 항상 HTTPS를 사용하여 전송 중인 데이터를 암호화합니다. 이렇게 하면 세션 식별자와 클라이언트와 서버 간에 교환된 중요한 데이터가 가로채지 않도록 보호합니다.
세션 수명 제한: 세션에 대한 시간 제한을 구현합니다. 예를 들어 세션이 자동으로 종료되기 전에 최대 15분의 비활성 작업을 허용합니다. 이렇게 하면 분실되거나 무인 디바이스로 인한 위험을 완화할 수 있습니다.
정기적인 감사 및 모니터링: 세션 관리 사례 및 로그를 주기적으로 검토합니다. 반복된 실패한 로그인 시도 또는 비정상적인 세션 길이와 같은 의심스러운 활동을 경고하는 모니터링 도구를 구현합니다.