共用方式為


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

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

工作階段具有下列屬性:

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

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

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

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

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

研討會類型

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

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

程式碼解譯器

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

自訂容器

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

概念

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

工作階段集區

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

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

工作階段

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

您可以藉由傳送 HTTP 要求來與工作階段集區中的會話互動。 每個會話集區都有唯一的集區管理端點。

針對程式碼解譯器工作階段,您也可以使用與 LLM 架構的整合。

工作階段識別碼

若要將 HTTP 要求傳送至工作階段,您必須在要求中提供工作階段標識碼。 對工作階段提出要求時,您會在 URL 中名為 identifier 的查詢參數中傳遞工作階段識別碼。

  • 如果標識碼已存在,要求就會傳送至現有的會話。
  • 如果標識碼不存在的會話,則會在要求傳送至該會話之前自動配置新的會話。

會話集區和會話使用量的螢幕快照。

標識碼格式

工作階段識別碼是自由格式的字串,這表示您可以採取任何符合應用程式需求的方式加以定義。

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

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

保護工作階段識別碼

會話標識碼是您必須安全地管理的敏感性資訊。 您的應用程式必須確保每個使用者或租使用者只能存取自己的會話。

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

範例策略包括:

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

重要

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

驗證與授權

當您使用集區管理 API 將要求傳送至工作階段時,會使用 Microsoft Entra (先前稱為 Azure Active Directory) 令牌來處理驗證。 只有來自屬於會話集區上 Azure ContainerApps 會話執行程式角色的身分識別Microsoft Entra 令牌才有權呼叫集區管理 API。

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

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

根據預設,工作階段無法發出輸出網路要求。 您可以在工作階段集區上設定網路狀態設定,以控制網路存取。

此外,請遵循驗證和授權一節中的指引,確保只有授權的使用者才能存取會話,以及在保護會話標識符區段中,確保會話標識符是安全的。

預覽限制

下列限制適用於動態工作階段:

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

    區域 程式碼解譯器 自訂容器
    澳大利亞東部
    美國中部 EUAP
    美國東部 2 EUAP
    美國東部
    東亞
    德國中西部
    義大利北部
    美國中北部 -
    波蘭中部
    瑞士北部
    美國中西部
    美國西部 2

下一步