Azure Container Apps の動的セッションを使用すると、セキュリティで保護されたサンドボックス環境にすばやくアクセスできます。これは、他のワークロードからの強力な分離を必要とするコードやアプリケーションの実行に最適です。
セッションは セッション プール のコンテキスト内で動作します。これにより、コールド スタートが軽減され、セッションの即時可用性が確保されます。
セッションでは、次の情報が得られます。
強力な分離: セッションは相互に、そしてホスト環境から分離されます。 各セッションは独自の Hyper-V サンドボックス内で実行され、エンタープライズ レベルのセキュリティと分離が提供されます。 必要に応じて、ネットワーク分離を有効にして、セキュリティをさらに強化できます。
簡単なアクセス: セッションは REST API を介してアクセスされます。 一意の識別子によって各セッションがマークされます。 特定の識別子を持つセッションが存在しない場合は、新しいセッションが自動的に割り当てられます。
フル マネージド: Container Apps は、セッションのライフサイクルを完全に管理します。 セッションは、使われなくなると自動的にクリーンアップされます。
高速起動: 新しいセッションはミリ秒単位で割り当てられます。 迅速なスタートアップは、準備はできていても未割り当てのセッションのプールを自動的に維持することで実現されます。
スケーラブル: セッションを大規模に実行できます。 数百または数千のセッションを同時に実行できます。
API アクセス: セッションは、単一の HTTP エンドポイントを介してアプリケーションに公開されます。
セッション
セッションは、信頼されていないコードまたはアプリケーションを実行するサンドボックス環境です。
各セッションは、他のすべてのセッションと、 Hyper-V サンドボックスを使用するホスト環境から分離されます。 Hyper-V テクノロジはセッション分離の基礎であり、必要なセキュリティ境界を設定して異なるセッションが独立して動作することを保証します。 ネットワーク セキュリティを強化するために、セッションでセッション ネットワークの分離を有効にすることができます。
セッションには 2 種類あります。
セッションの種類
Azure Container Apps では、2 種類のセッションがサポートされています。
型 | 説明 | 課金モデル |
---|---|---|
コード インタープリター セッション | フル マネージド コード インタープリターを使用すると、一般的なライブラリがプレインストールされているサンドボックスでコードを実行できます。 アプリケーションのユーザーによって提供されるコードや、大規模言語モデル (LLM) によって生成されたコードなど、信頼されていないコードを実行するのに最適です。 セッションは、すぐに使用することも、 言語モデル フレームワークと共に使用することもできます。 |
セッションごと (従量課金) |
カスタム コンテナー セッション | セキュリティで保護された分離されたサンドボックスで独自のコンテナー イメージを実行するコンテナー持ち込みオプション。 この方法は、すぐにはサポートされていない言語や、強力な分離を必要とするワークロードに対してカスタム コード インタープリターを実行する場合に適したオプションです。 |
Container Apps 専用プラン |
各セッションは、種類に関係なく、セッション プールのコンテキストで実行されます。
セッション プール
1 秒未満のセッション割り当て時間を提供するために、Azure Container Apps は準備が整っているが割り当てられていないセッションのプールを維持します。 アプリケーションが、まだ使用されていないセッションに対して要求を行うと、プールによって自動的に新しいセッションが割り当てられます。 セッションが割り当てられるとプールは自動的に補充され、一定数の準備済みセッションが維持されます。
各セッション プールは、 一意のプール管理エンドポイントの場所を通じてアプリで使用できます。
セッションのライフサイクル
Container Apps ランタイムは、プール内の各セッションのライフサイクルを自動的に管理します。 セッションの有効期間は、セッションの開始時に開始され、セッションの使用中に続行されます。 クール ダウン時間が経過した後にセッションへの要求がない場合、セッションは破棄されます。
このライフサイクルは、次の状態によって定義されます。
保留中: 開始中のセッションは、保留中状態になります。 セッションがこの状態で費やす時間は、セッション プールに指定されたコンテナー イメージと設定によって異なります。 この状態のセッションは、準備完了セッションのプールには追加されません。
未割り当て: セッションの開始が完了すると、そのセッションがプールに追加され、割り当て可能になります。 カスタム コンテナー セッションの場合は、プール内で保持する準備完了セッションの数を指定できます。 セッションが補充されるよりも速く割り当てられる場合は、この数を増やす必要があります。
割り当て済み: 実行されていないセッションに要求を送信すると、プールは新しいセッションを提供し、割り当てられた状態に配置します。 同じセッション識別子を持つ後続の要求は同じセッションにルーティングされるため、コールド スタートなしで効率的に再利用できます。 割り当てられた各セッションは、 セッション識別子に関連付けられます。
破棄済み:
cooldownPeriodInSeconds
設定で定義された期間、セッションが要求を受け取らない場合、セッションとその Hyper-V サンドボックスは安全に削除されます。 この自動クリーンアップセットアップにより、リソース管理とセキュリティが強化されます。
Container Apps ランタイムは、セッション プール内の各セッションのライフサイクルを自動的に管理します。
利用可能なリージョン
動的セッションが利用できるのは、以下のリージョンです。
リージョン | コード インタープリター | カスタム コンテナー |
---|---|---|
オーストラリア東部 | ✔ | ✔ |
ブラジル南部 | - | ✔ |
カナダ東部 | - | ✔ |
東アジア | ✔ | ✔ |
米国東部 | ✔ | ✔ |
米国東部 2 | ✔ | ✔ |
フランス中部 | - | ✔ |
ドイツ中西部 | ✔ | ✔ |
イタリア北部 | ✔ | ✔ |
東日本 | ✔ | - |
韓国中部 | - | ✔ |
米国中北部 | ✔ | ✔ |
北ヨーロッパ | ✔ | ✔ |
ノルウェー東部 | ✔ | ✔ |
ポーランド中部 | ✔ | ✔ |
南アフリカ北部 | - | ✔ |
インド南部 | - | ✔ |
スウェーデン中部 | ✔ | ✔ |
スイス北部 | ✔ | ✔ |
アラブ首長国連邦の北部地域 | - | ✔ |
英国南部 | ✔ | ✔ |
米国中西部 | ✔ | ✔ |
西ヨーロッパ | ✔ | ✔ |
米国西部 | ✔ | ✔ |
米国西部 2 | ✔ | ✔ |
米国西部 3 | ✔ | ✔ |
請求書
カスタム コンテナー セッションは、セッション プールが使用したリソースに基づいて請求されます。 詳しくは、「Azure Container Apps の請求」をご覧ください。
セキュリティ
動的セッションのセキュリティを強化するには、次の方法を使用します。
セキュリティで保護された識別子: セキュリティで保護された セッション識別子を 常に使用します。 暗号化方法を使用してセッション識別子を生成し、一意で予測できない値を確保します。 攻撃者が推測できるシーケンシャル ID の使用は避けてください。
HTTPS を使用する: 転送中のデータを暗号化するには、常に HTTPS を使用します。 これにより、セッション識別子と、クライアントとサーバーの間で交換された機密データがインターセプトされないように保護されます。
セッションの有効期間を制限する: セッションのタイムアウトを実装します。 たとえば、セッションが自動的に終了する前に、最大 15 分間の非アクティブ状態を許可します。 これにより、デバイスの紛失や無人化によるリスクの軽減に役立ちます。
定期的な監査と監視: セッション管理のプラクティスとログを定期的に確認します。 ログイン試行の失敗やセッションの異常な長さの繰り返しなど、疑わしいアクティビティを警告する監視ツールを実装します。