跳至主要內容
ESC
Study Jam:AI Agent 與 MLOps — 第 9/9 篇

AI Agent 安全:別只叫模型「不要洩密」

AI Agent 安全:別只叫模型「不要洩密」

課程概述

一個只會聊天的模型答錯,通常是品質問題;一個能查客戶資料、寄信或修改訂單的 Agent 答錯,可能直接變成資安事件。Prompt Injection 之所以麻煩,不只是模型被騙,而是被騙之後還握有資料和工具。

傳統安全控制沒有失效,反而更重要:身分、最小權限、網路邊界、資料分類、稽核和事件回應都要保留。生成式系統只是多了新的不可信輸入,包括使用者 Prompt、網頁、文件、Email、搜尋結果和其他 Agent 的回應。

AI Agent 安全威脅與縱深防禦:使用者、文件、檢索與外部來源可能注入惡意指令或污染資料,模型亦面臨資料外洩、竊取與對抗輸入,工具端可能被濫用或提權;各信任邊界以來源隔離、最小權限、工具允許清單、資料遮蔽、私有網路、沙箱與人工核准防護

Agent 把輸入、企業資料和可執行工具串在一起,攻擊面也跟著串起來。每跨過一個信任邊界,都要重新驗證身分、資料範圍和動作,而不是沿用模型上一句話的判斷。

你將學到

  • 建立包含模型、資料、工具、供應鏈和操作環境的威脅模型
  • 分辨直接與間接 Prompt Injection
  • 把安全政策放在模型外部,避免只依賴 System Instruction
  • 正確搭配 Model Armor、Sensitive Data Protection、IAM 與 VPC Service Controls
  • 用紅隊測試、稽核記錄和事件處置持續縮小風險

先把攻擊面畫出來

攻擊面常見問題主要控制
使用者輸入Jailbreak、直接 Prompt Injection、敏感資料輸入驗證、Model Armor、安全分類、速率限制
外部內容與 RAG文件藏指令、資料污染、過期或越權內容來源信任標記、ACL、解析隔離、引用與版本檢查
模型與 PromptSystem Prompt 洩漏、模型竊取、不安全輸出最小揭露、輸出檢查、配額、模型與 Prompt 版控
Tools 與 Agents任意 URL、參數注入、提權、重複執行Allowlist、Schema、專用身分、冪等、沙箱、人工核准
Pipeline 與供應鏈惡意套件、訓練資料污染、映像漏洞簽章、SBOM、弱點掃描、來源驗證、分離職責
操作與稽核沒有告警、無法追查、憑證撤銷太慢Audit Logs、Security Command Center、Runbook、演練

威脅模型要描述「資產、攻擊者、入口、信任邊界、最壞影響和復原方式」,不能只列一串產品名稱。

Prompt Injection 有直接和間接兩種

  • 直接注入:使用者自己要求模型忽略原本規則、洩漏設定或執行越權動作
  • 間接注入:惡意指令藏在 Agent 讀取的網頁、PDF、Email、程式碼或工具回傳裡

只找「忽略先前指令」這幾個字擋不住改寫、編碼、圖片文字或多輪攻擊。更穩的原則是:外部內容一律視為資料,不因為它寫得像命令就取得系統指令權;所有工具動作仍要通過固定政策和後端授權。

Prompt Injection 分層防禦:直接使用者指令與間接網頁文件郵件都先標記來源信任,把外部內容視為資料而非系統指令;工具動作依序檢查原始目標、允許清單、權限參數,高風險另需人工核准,輸出前再掃描敏感資料

模型可能被說服,但 IAM、Tool Allowlist、交易上限和人工核准不能被 Prompt 改寫。真正的安全邊界要由模型外部的程式和雲端政策強制執行。

System Instruction 是提示,不是權限系統

「絕對不要透露機密」值得寫,但它只是其中一層。Agent 的每次讀取和動作還要檢查:

  1. 目前終端使用者是誰,服務帳號能不能代表他操作
  2. 目標資源是不是在 Allowlist,參數是否符合 Schema
  3. 是否只能讀取,還是會造成付款、刪除、寄送或權限變更
  4. 動作是否超過金額、筆數、頻率或資料敏感度上限
  5. 高風險動作是否需要針對這一次計畫重新取得人工核准

不要讓一個擁有廣泛權限的共用服務帳號替所有使用者執行動作。若無法傳遞使用者身分,也要用更窄的專用身分、受限 View 和政策閘道縮小爆炸半徑。

資料外洩不只發生在訓練資料

敏感資料可能出現在 Prompt、RAG 文件、Tool 參數、Session、Trace、錯誤訊息和最終回答。保護措施應涵蓋整條路徑:

  • 收集前確認用途與資料最小化,不需要的欄位不要送進模型
  • 使用 Sensitive Data Protection 偵測、分類、遮蔽或 Tokenize PII
  • RAG 依終端使用者身分套用文件 ACL,不能只靠 Agent 自己判斷
  • Log 與 Trace 預設不記 Secret 和完整敏感內容,必要時存摘要或雜湊
  • 設定保存期限、刪除流程、CMEK 需求與跨區資料政策

教材若仍寫 Cloud DLP 或 DLP API,現在產品名稱是 Sensitive Data Protection;部分 API 與角色名稱仍保留 dlp 字樣。

Google Cloud 上各層做的事不一樣

控制主要用途不能取代什麼
IAM控制人、服務帳號與 Agent 能操作哪些資源不會理解 Prompt 是否惡意
VPC Service Controls對支援服務建立 Context-based perimeter,降低資料外流不是防火牆,也不能取代 IAM
Model Armor檢查 Prompt/Response 的注入、Jailbreak、敏感資料、惡意 URL 與內容安全不能替 Tool 做業務授權或交易核准
Sensitive Data Protection發現、分類與去識別敏感資料不會判斷整個 Agent 動作是否合法
CMEK讓組織控制支援資源的加密金鑰不會阻止已授權身分讀取明文
Audit Logs/SCC留下操作證據、彙整設定問題和部分 Model Armor findings需要告警、Owner 和處置 Runbook 才能真的回應

Model Armor 可以先用 Inspect only 觀察命中與誤判,再調整門檻後切到 Inspect and block,並確認呼叫端或整合服務真的依 Verdict 執行阻擋。輸入和輸出的風險不同,最好使用不同 Template。若 Model Armor 放在 VPC Service Controls 內,區域端點還需要依文件設定 Private Service Connect,不能只把服務加進 perimeter 就假設連線會正常。

AI Agent 資料外洩防線:輸入先做 Model Armor 與敏感資料遮蔽,讀企業資料受 IAM 和列欄權限限制,工具受允許清單及最小權限控制,跨 VPC Service Controls 邊界需通過 Egress Policy,輸出前檢查敏感資料與引用並留下 Audit Logs

身分決定能讀什麼,網路邊界限制能送到哪裡,內容檢查攔敏感資料和惡意指令,稽核則保留事件證據。這些控制互相補位,沒有任何一項能單獨包辦 Agent 安全。

模型只能提出動作,不能決定自己有沒有權限。每次執行都要重新通過身分、資源、參數、風險與輸出檢查;高風險核准只對當下這一筆有效。

實作重點

  • 為每個 Tool 建立獨立服務帳號和最小權限;不要用 roles/editor,也不要預設 roles/aiplatform.user 就一定夠窄
  • URL Fetcher、Email、SQL、Shell 和檔案工具都要有 Allowlist、逾時、輸入 Schema、輸出上限與稽核
  • Model Armor 先用 Inspect only 蒐集誤判,再依風險選門檻;啟用 Block 後要提供安全且不洩漏規則的錯誤回應
  • 紅隊案例要包含直接/間接注入、編碼文字、多輪誘導、工具結果注入、資料越權和核准重播
  • Log 不記完整 System Prompt、Token、Cookie、資料庫密碼或未遮蔽的客戶資料
  • 演練憑證撤銷、Tool 停用、Session 隔離、流量切斷與通知流程,並為事件指定明確 Owner

Lab 導讀

Lab 連結Introduction to Security in the World of AI — Google Cloud Skills Boost

Lab 會碰到 IAM、VPC Service Controls、敏感資料檢查和 Prompt Injection。除了照步驟成功擋下一個範例,也要換不同說法、把惡意指令放進文件,並測試被擋時有沒有留下足夠稽核資料。能擋住單一句範例,不代表整條 Agent 路徑已經安全。

延伸學習

Study Jam:AI Agent 與 MLOps — 9/9 完成 查看系列全覽 →

留言討論

徽章解鎖!