把 AI 安全寫進程式碼,而不是寫進 Prompt
AI Agent 逐漸深入我們的數位生活,但其安全性卻常被寄託在「善意提醒」的 Prompt 上。這種對自然語言指令的依賴,本質上是一種脆弱的「祈禱式安全」。本文將深入探討為何成熟的 AI 系統,必須將權限控管與驗證邏輯硬編碼到執行層,用可驗證的程式碼,而非不可靠的文字,來建構真正的安全屏障。
當我們授權 AI Agent 執行寫入任務時,許多團隊的安全機制仍停留在「用 prompt 善意提醒」的階段。這種依賴自然語言指令的作法,本質上是一種脆弱的社會協議,而非可靠的技術屏障。我認為,成熟的 AI 系統必須將安全邊界從提示詞(prompt)下沉到執行層(execution layer)。這意味著將權限控管、政策檢查與驗證邏輯硬編碼(hard-code)到軟體結構中,用可驗證的程式碼取代不可靠的「祈禱式安全」,這才是建構可信任 AI 的務實路徑。
為什麼單靠 Prompt 無法保障 AI 安全?
目前許多 AI Agent 的安全設計,是透過系統提示詞(System Prompt)來實現的。開發者會在 prompt 中鉅細靡遺地寫下規則,例如「你是一個客服助理,絕對不允許刪除客戶資料」、「你只能在用戶明確授權後,才能修改訂單狀態」。這種方式看似直觀,卻極其脆弱。我們等於是把系統的安全性,建立在大型語言模型(LLM)對自然語言指令的「理解」與「服從」上。
然而,LLM 的行為並非總是穩定且可預測的。它可能會因為模型版本的微小更新而改變行為,也可能被精心設計的惡意 prompt injection 所欺騙,繞過原有的指令限制。事實上,OWASP 基金會發布的 《LLM 應用程式十大安全風險》中,「提示詞注入(Prompt Injection)」就名列第一。把安全寄託於 prompt,就像是與一個語言能力極強、但沒有穩定價值觀的實習生簽訂一份口頭君子協定,然後期望他在 24/7 的高壓工作中永遠不會犯錯或被誤導。
如何建立真正的技術屏障?定義層與執行層的分離
一個更穩固、更符合軟體工程原則的作法,是將 AI 的「決策」與系統的「執行」徹底分離。我們可以將系統架構拆分為兩個層次:定義層(Definition Layer)與執行層(Execution Layer)。
- 定義層:這是 LLM 主要活動的場域。它負責理解用戶意圖、拆解任務、並生成結構化的指令參數。例如,當用戶說「幫我把 A 專案的截止日期延後一週」,LLM 的任務不是直接去操作資料庫,而是生成一段 JSON 或 YAML,內容可能是:
{ "action": "update_project", "params": { "project_id": "A", "field": "due_date", "value": "+7d" } }。 - 執行層:這是一段確定性的、由人類工程師編寫和維護的程式碼(例如一個
runtime.ts檔案)。它接收來自定義層的結構化指令,並在執行前進行嚴格的驗證。這層程式碼才是唯一擁有資料庫寫入、API 呼叫等權限的角色。
在這個架構下,執行層會扮演守門員的角色。它會檢查傳入的 action 是否存在、params 的格式與數值是否合法、當前用戶是否有權限執行此操作等。例如,它會驗證 project_id 是否為有效格式、用戶是否為該專案的成員、以及延後日期是否超過系統允許的上限(例如 30 天)。只有當所有檢查都通過後,真正的操作才會被執行。
簡單來說,AI 的工作是「決定做什麼」,而程式碼的工作是「驗證並執行」。
為什麼這種分離設計更可靠?
將安全邏輯從 prompt 移至執行層,帶來的好處是顯而易見的。首先,它將非確定性的 AI 推理與確定性的業務邏輯分開。我們的安全策略不再依賴模型的「心情」或對文字的詮釋,而是建立在可被測試、可被審計的程式碼之上。這讓系統的行為變得可預測且可靠。
其次,這種設計大幅縮小了攻擊面。攻擊者即使成功透過 prompt injection 讓 LLM 產生惡意指令,例如 { "action": "delete_all_projects", "params": {} },這個指令在執行層也會因為權限不足或 action 不存在而被直接擋下。AI 能「說」什麼,跟系統「允許」做什麼,是兩件完全不同的事。這也符合軟體安全中的最小權限原則(Principle of Least Privilege)。
當然,這並非否定 prompt engineering 或 Constitutional AI 這類方法的價值。良好的 prompt 設計對於引導 AI 產生高品質、符合期望的輸出至關重要。然而,它應該被視為提升 AI「效能」與「對齊」的工具,而非保障系統「安全」的唯一防線。當涉及關鍵的寫入操作與權限管控時,我們需要的是硬編碼的規則,而不是善意的提醒。
最終,打造可信任的 AI Agent 系統,需要我們借鏡數十年來軟體工程發展的智慧。將權限邊界、政策檢查與驗證邏輯下沉到執行層,用軟體結構取代祈禱式的安全,才是讓 AI 從一個聰明的「聊天機器人」轉變為一個可靠的「自動化工作夥伴」的關鍵一步。
延伸閱讀
- OWASP Top 10 for Large Language Model Applications
- A Guide to Prompt Injection Attacks
- What Are AI Agents... and How Will They Change the World? by Andreessen Horowitz
我是江中喬,專注於 AI Agent Architecture、Memory Governance 與 Cognitive Diversity,持續研究如何打造能夠長期協作、可信任且可治理的 AI 系統。