AI 代理安全始於把每項操作綁定至所代表的身份、租戶、資源和權限。讓供應商憑證遠離模型情境、在下游服務執行授權、在高影響副作用前要求批准,並記錄決定和結果以供調查。
系統提示可以引導行為,但無法縮小工具程序可以取得的管理員權杖能力。
把身份帶到整個操作流程
一次代理執行可能涉及人員用戶、應用程式租戶、代理部署、工作階段和背景 worker。這些身份應分開保存。
flowchart LR
User[Authenticated user] --> Session[Agent session]
Session --> Policy{Tenant, resource, action}
Policy -->|allow| Tool[Server-side tool]
Tool --> Credential[Scoped provider credential]
Credential --> Backend[Downstream service]
Policy --> Audit[Decision record]
Backend --> Audit
後端應取得足以授權所代表用戶和租戶的情境。如果無法避免共用 worker 憑證,工具 adapter 就必須在使用前補上缺少的資源規則。
代理控制平面指南說明這些決定和憑證參照應放在哪裏。
在憑證和 API 層縮小權限
只授予代理目前工作所需的操作和資源。分開讀取、寫入、佈建、計費和管理憑證,按租戶和環境限制範圍,並在供應商支援時縮短憑證有效期。
當任務層級操作已經足夠時,不要公開廣泛的 primitive。refund_order(order_id, amount) 可以執行擁有權、金額限制、批准和冪等性;通用 SQL 或供應商管理工具則會把這些決定全交給生成的參數。
OWASP 的 Excessive Agency 指南建議縮小工具功能、權限和自主程度。即使模型選擇了有效工具,後端仍要負責授權。
讓密鑰遠離模型路徑
把密鑰放在伺服器端管理系統,並透過應用程式碼傳遞參照。把工作專用憑證注入需要它的最小執行環境,之後撤銷憑證或讓它到期。
密鑰經常從以下地方洩漏:
- 提示和檢索到的情境;
- 工具參數或描述;
- URL 和查詢字串;
- 例外訊息和 stdout;
- 追蹤、重播數據和客戶服務匯出內容;
- sandbox 檔案和繼承的環境變數。
匯出前先遮蔽數據,並刻意測試錯誤。絕不能要求模型重複或轉換密鑰。對 MCP 連線而言,目前的授權規格要求把存取權杖放在 Authorization 標頭,並規定伺服器必須拒絕 URI 中的權杖。
在副作用前加入批准
具破壞性、涉及財務、可從外部看見或範圍異常廣泛的操作都要取得批准。顯示確切的資源、參數和後果,把批准綁定至這些值,並設定到期時間。
執行時重新檢查權限。操作等待期間,用戶角色或資源擁有權可能改變。批准不能授予批准者本身沒有的權限。
Railway 的 2026 年 4 月事故報告記載了一宗代理找到帳戶權杖後呼叫舊版即時刪除 API 的事件。Railway 復原了 volume,並把 API 刪除改為保留 48 小時的軟刪除。結論很具體:權杖範圍、API 行為和可復原性必須一併處理。
把檢索內容視為不受信任的輸入
網頁、電郵、issue 或文件可能包含針對模型的指示。請把數據與可信任的系統政策分開,不能讓檢索文字擴大工具權限。模型提出操作後,應重新檢查政策。
工作流程範圍較窄時,應對網絡目的地和資源類型使用允許清單。在追蹤中標記外部內容來源,讓調查人員看得出哪些內容影響了操作,同時不會把內容本身視為權威。
撰寫能支援限制範圍的審計記錄
記錄執行者、所代表的用戶、租戶、代理和工作階段、工具、資源、操作、政策版本、決定、批准參照、操作 ID、時間戳記和結果。把「允許」和「完成」分成不同事件。
不要在審計日誌中儲存密鑰或大小不受限制的模型內容。需要詳細情境時,應連結至受保護的追蹤。審計路徑應能回答要撤銷哪些憑證、哪些資源可能已改變,而無需依賴發生失敗的代理。
測試撤銷和跨租戶拒絕
在隔離環境中:
- 在工作等待期間撤銷工作階段,確認恢復執行會安全地失敗;
- 透過每一條工具路徑嘗試存取另一租戶的資源 ID;
- 把惡意指示注入檢索內容;
- 觸發供應商和驗證錯誤,再檢查日誌中是否出現密鑰;
- 在未獲批准的情況下要求具破壞性的操作,確認不會發出下游呼叫。
生產環境檢查清單把這些控制措施與重試、追蹤和復原連接起來。
下方提示會從程式碼建立實際權限矩陣。任何執行位置寫著「系統提示」的數據列,都代表安全工作尚未完成。