共用方式為


Azure 容器應用程式動態工作階段概觀

Azure 容器應用程式動態工作階段可實現快速存取安全沙箱環境,這些沙箱環境非常適合執行需要與其他工作負載隔離的程式碼或應用程式。

工作階段具有下列屬性:

  • 強式隔離:工作階段彼此隔離,並與主機環境隔離。 每個工作階段都會在自己的 Hyper-V 沙箱中執行,這會提供企業級安全性和隔離。 您可以選擇性地啟用網路隔離,以進一步增強安全性。

  • 簡單存取:透過 REST API 存取工作階段。 唯一識別碼會標記每個工作階段。 如果具有指定定識別碼的工作階段不存在,則會自動配置新的工作階段。

  • 完全受控:平台會完全管理工作階段的生命週期。 當工作階段不再使用時,會自動將其清除。

  • 快速啟動:以毫秒為單位配置新的工作階段。 快速啟動可藉由自動維護就緒但未配置的工作階段集區來實現。

  • 可調整:工作階段可以大規模執行。 您可以同時執行數百或數千個工作階段。

注意

Azure 容器應用程式目前處於預覽狀態。

研討會類型

Azure 容器應用程式支援兩種類型的工作階段:

類型 描述 計費模型
程式碼解譯器 完全受控程式碼解譯器 每個工作階段 (使用量)
自訂容器 攜帶自己的容器 容器應用程式專用方案

程式碼解譯器

程式碼解譯器工作階段可讓您在預安裝了熱門程式庫的沙箱中執行程式碼。 其很適合執行不受信任的程式碼,例如應用程式使用者所提供的程式碼,或大型語言模型 (LLM) 所產生的程式碼。 深入了解程式碼解譯器工作階段

自訂容器

自訂容器工作階段可讓您在安全、隔離的沙箱中執行自己的容器映像。 您可以使用這些工作階段,針對現成不支援的語言執行自訂程式碼解譯器,或執行需要強式隔離的工作負載。 深入了解自訂容器工作階段

概念

Azure 容器應用程式動態工作階段中的重要概念是工作階段集區和工作階段。

工作階段集區

為了提供次秒工作階段配置時間,Azure 容器應用程式會維護就緒但未配置的工作階段集區。 當您將要求提交至新的工作階段時,平台會將集區中的工作階段配置給您。 配置工作階段時,平台會自動補充集區,以維持固定數目的就緒工作階段。

您可以設定集區,透過 maxConcurrentSessions 屬性設定可同時配置的工作階段數目上限。 在刪除工作階段之前,您可以透過 cooldownPeriodInSeconds 屬性設定上一個要求的等候持續時間。 針對自訂容器工作階段,您也可以指定要用於集區中工作階段的容器映像和設定,包括要透過 readySessionInstances 在集區中保持就緒狀態的工作階段目標數目。

工作階段

工作階段是執行程式碼或應用程式的沙箱化環境。 每個工作階段都會與其他工作階段隔離,以及與具有 Hyper-V 沙箱的主機環境隔離。 您可以選擇性地啟用網路隔離,以進一步增強安全性。

工作階段識別碼

與集區中的工作階段互動時,您必須定義工作階段識別碼來管理每個工作階段。 工作階段識別碼是自由格式的字串,這表示您可以採取任何符合應用程式需求的方式加以定義。 此識別碼是判斷工作階段行為的重要元素:

  • 重複使用現有的工作階段:如果已有符合識別碼的執行中工作階段,則會重複使用此工作階段。
  • 新工作階段的配置:如果沒有執行中的工作階段符合識別碼,則會自動從集區配置新的工作階段。

工作階段識別碼是您定義的字串,其在工作階段集區內是唯一的。 如果您要建置 Web 應用程式,可以使用使用者的識別碼。 如果您要建置聊天機器人,可以使用交談識別碼。

識別碼必須是長度為 4 到 128 個字元的字串,而且只能包含來自此清單的英數位元和特殊字元:|-&^%$#(){}[];<>

對工作階段提出要求時,您會在 URL 中名為 identifier 的查詢參數中傳遞工作階段識別碼。

針對程式碼解譯器工作階段,您也可以使用與 LLM 架構的整合。 此架構會為您處理權杖產生和管理。 確定應用程式會使用對工作階段集區具有必要角色指派的受控識別進行設定。

保護工作階段識別碼

工作階段識別碼是敏感性資訊,當您建立和管理其值時,需要安全流程。 若要保護此值,您的應用程式必須確保每個使用者或租用戶只能存取自己的工作階段。

防止濫用工作階段識別碼的特定策略會有所不同,取決於應用程式的設計和架構。 不過,您的應用程式必須一律完全控制工作階段識別碼的建立和使用,以便惡意使用者無法存取其他使用者的工作階段。

範例策略包括:

  • 每個使用者一個工作階段:如果您的應用程式使用每個使用者一個工作階段,則必須安全地驗證每個使用者,而且您的應用程式必須針對每個登入的使用者使用唯一的工作階段識別碼。
  • 每個代理程式交談一個工作階段:如果您的應用程式針對每個 AI 代理程式交談使用一個工作階段,請確定您的應用程式針對使用者無法修改的每個交談使用唯一工作階段識別碼。

重要

無法保護工作階段的存取,可能會導致濫用或未獲授權存取使用者工作階段中儲存的資料。

驗證

驗證是使用 Microsoft Entra (先前稱為 Azure Active Directory) 權杖來處理。 有效的 Microsoft Entra 權杖是由屬於工作階段集區上「Azure ContainerApps 工作階段執行者」和「參與者」角色的身分識別所產生。

若要將角色指派給身分識別,請使用下列 Azure CLI 命令:

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

az role assignment create \
    --role "Contributor" \
    --assignee <PRINCIPAL_ID> \
    --scope <SESSION_POOL_RESOURCE_ID>

如果您使用 LLM 架構整合,架構會為您處理權杖產生和管理。 確定應用程式會使用對工作階段集區具有必要角色指派的受控識別進行設定。

如果您是直接使用集區的管理 API 端點,則必須產生權杖,並將其包含在 HTTP 要求的 Authorization 標頭中。 除了先前提及的角色指派之外,權杖還需要包含值為 https://dynamicsessions.io 的對象( aud) 宣告。

若要使用 Azure CLI 產生權杖,請執行下列命令:

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

重要

有效的權杖可以用來建立和存取集區中的任何工作階段。 讓您的權杖保持安全狀態,且不會與未受信任的合作對象共用這些權杖。 終端使用者應該透過您的應用程式存取工作階段,而不是直接存取。

生命週期

容器應用程式執行階段會自動管理工作階段集區中每個工作階段的生命週期。

  • 擱置:當工作階段啟動時,其處於擱置狀態。 工作階段花費在擱置狀態的時間量取決於您為工作階段集區指定的容器映像和設定。 擱置工作階段不會新增至就緒工作階段的集區。

  • 就緒:當工作階段完成啟動且就緒時,其會新增至集區。 工作階段可在此狀態進行配置。 針對自訂容器工作階段,您可以指定要保留在集區中的就緒工作階段目標數目。 如果配置工作階段的速度比補充集區的速度快,請增加此數目。

  • 已配置:當您將要求傳送至非執行中的工作階段時,集區會提供新的工作階段,並將其置於已配置狀態。 工作階段識別碼相同的後續要求會路由至相同的工作階段。

  • 刪除中:當工作階段在 cooldownPeriodInSeconds 設定所定義的時間期間停止接收要求時,工作階段及其 Hyper-V 沙箱會完全且安全地刪除。

安全性

Azure 容器應用程式動態工作階段的建置是為了在安全且隔離的環境中,執行未受信任的程式碼和應用程式。 雖然工作階段彼此隔離,但單一工作階段內的任何項目,包括檔案和環境變數,都可由工作階段的使用者存取。 如果您信任工作階段的使用者,則應該只設定或上傳敏感性資料至工作階段。

預覽限制

Azure 容器應用程式目前處於預覽狀態。 適用下列限制:

  • 只能在以下區域中使用:

    區域 程式碼解譯器 自訂容器
    東亞
    美國東部
    德國中西部
    義大利北部
    波蘭中部
    美國中北部 -
    北歐
    美國西部 2
  • 不支援記錄。 您的應用程式可以將要求記錄至工作階段集區管理 API 及其回應。

下一步