網誌
架構

發佈日期 更新日期

Arag 及 Shouryamaan

如何設計代理控制平面

以 Markdown 閱讀

代理控制平面負責執行前後的決策,包括身份、授權、憑證範圍、批准、限制、操作狀態、資源所有權和審計紀錄。數據平面則執行獲准的數據庫查詢、瀏覽器操作、部署或 API 呼叫。

如果每項工具都以不同方式作出這些決策,系統就沒有真正的控制平面,只有一套會隨工具增加而逐漸偏離的慣例。

將決策與執行分開

flowchart LR
    Agent[Agent request] --> Identity[Resolve identity and tenant]
    Identity --> Policy{Policy and approval}
    Policy -->|deny| Audit[Audit decision]
    Policy -->|allow| Broker[Issue scoped credential]
    Broker --> Operation[Create or resume operation]
    Operation --> Tool[Execute tool in data plane]
    Tool --> Resource[(Database, API, browser, compute)]
    Tool --> Operation
    Operation --> Audit

控制平面應回答由誰執行、對方擁有哪些資源、允許哪項操作、是否需要同意、可執行多少工作,以及如何停止操作。數據平面則應接收範圍明確的指示,以及完成工作所需的適量權限。

這道邊界是完整 AI 代理架構的組成部分。初期不必把它拆成獨立服務,但其合約應在程式碼中清楚可見。

在選擇工具前確認身份

執行工具前,先確認已驗證的用戶、租戶、代理和工作階段。當伺服器能從憑證綁定租戶識別碼時,不要接受模型輸出的租戶 ID。

NIST 的零信任架構把信任視為每次請求都要評估的事項,而不是因為呼叫方位於內部網絡便直接授予。對代理而言,即使請求來自內部工具,下游服務仍要授權其代表的身份。

控制平面、代理工作階段和應用程式執行環境應使用不同憑證。能佈建資源的管理憑證不應提供給一般應用程式呼叫。

讓政策傳回具體決策

實用的政策決策會記錄:

  • 主體、租戶、資源和操作;
  • 政策版本與相符的規則;
  • 是否需要用戶批准;
  • 支出、呼叫、時間或數據量限制;
  • 允許或拒絕結果,以及穩定的原因。

工具描述可以告訴模型何時要求批准,但限制必須在提示之外執行。OWASP 的 Excessive Agency 指引建議盡量縮小工具功能、權限和自主程度,並由下游系統執行授權。

以最小實用範圍代理憑證

供應商支援時,數據平面 worker 應取得只供已批准資源和操作使用的短效憑證。如果供應商不支援,則把供應商憑證留在伺服器端工具內,並由包裝層執行相同限制。

切勿透過模型情境、工具描述、URL 或模型可見的錯誤傳送密鑰。追蹤數據應記錄憑證參照,而不是憑證值。

代理安全指引說明完整的身份和密鑰路徑。

將操作與對話分開追蹤

一個對話回合不是操作紀錄。會寫入、等待、重試,或可能超過請求生命週期的工作,都應建立操作 ID。儲存狀態、遮蔽後的輸入、冪等鍵、批准狀態、嘗試次數、輸出或其參照,以及最終結果。

這樣代理便可查詢部署是否仍在執行,而不用重播部署請求;用戶也會有一個穩定物件可供取消、繼續或調查。

在同一平面管理清單與所有權

控制平面應知道每個數據庫、bucket、部署、瀏覽器工作階段和代理憑證屬於哪個租戶。資源清單令撤銷和刪除變得可控,也可避免模型按顯示名稱選到另一租戶的同名資源。

配額應套用到已驗證的租戶和操作,而不是模型提供的租戶欄位。超過限制時要傳回穩定結果,讓代理能解釋原因而不會盲目重試。

同時審計決策與結果

審計紀錄需要包含政策決策和觀察到的結果。「允許刪除」與「刪除完成」是兩個不同事件。應保存操作 ID、執行者、租戶、資源、操作、政策版本、批准參照、時間戳和結果類別。

預設不要把原始提示、密鑰或完整工具結果放進審計日誌。如果必須保留確切內容,應在另一套存取政策下儲存雜湊或參照。

從現有應用程式內部開始

小型系統可以使用中介軟件、政策模組、憑證配接器、操作數據表和只可附加的審計數據表實作。規模或所有權有需要時,再拆分成服務。初期目標是建立一條一致的決策路徑。

下方提示會追蹤現有工作流程,並找出藏在個別工具處理程式內的控制。這些重複項目就是第一批應移到共用合約後方的候選項目。