作者分析

為了「先讓它跑起來」,AI 代理拿到了整個資料庫的權限

客服 AI 代理只需要查訂單、更新聯絡資料,開發時卻直接給了一組資料庫管理員帳號,想說「之後再調權限」。上線之後,那個「之後」一直沒有來。這篇講怎麼把代理的權限縮回它真正要做的事。

30 秒看懂
  • AI 代理開發時為了省事直接用資料庫管理員帳號,「之後再調權限」常常一直沒有發生。
  • OWASP 把這類問題稱為「過度代理」,根本原因是功能過多、權限過大、自主性過高,觸發因素包括模型幻覺與提示注入。
  • 用原生功能就能先做:給代理專屬帳號、只開任務需要的權限、在應用層強制限定資料範圍、高風險動作保留人工確認。

那個「之後」一直沒有來

假設有一家四十人的電商公司,做了一個客服 AI 代理,幫客服查訂單、更新客戶資料。開發時為了省事,直接給了一組資料庫管理員帳號,想說「先讓它跑起來,之後再調權限」。上線之後大家都在忙別的事。某天,一位顧客在客服對話裡輸入了一段精心設計的文字,代理照做了,查出不屬於這位顧客的訂單資料。

先說清楚,這是示意情境,不是真實事件,公司與經過都是為了說明而設。事後檢查發現:代理其實只需要「讀取訂單」和「更新聯絡資料」兩個權限,卻擁有刪除資料表的能力。那個「之後」,一直沒有來。

這篇要講的只有一件事:代理的權限要等於它的任務,而且要用程式擋,不能只靠提示詞拜託它。

過度代理,風險在哪裡

OWASP 的 LLM 應用風險清單把這類問題稱為「過度代理」(Excessive Agency),並指出根本原因通常是三者之一或同時存在:功能過多、權限過大、自主性過高;觸發因素包括模型幻覺和提示注入。

放到示意情境裡,第一層是權限遠超任務:管理員帳號能做的事,代理理論上都做得到。第二層是輸入不可信:顧客輸入的內容會影響代理的行為,而任何人都能當顧客。第三層是影響範圍:一次被誘導,影響的是整個資料庫。最後是難以撤銷:共用的管理員帳號,收回會影響其他系統,所以出事時也不敢馬上停。

這篇示意情境裡,代理手上拿的是什麼

這是示意情境,憑證本身沒有外洩;下表列的是代理手上那把權限過大的鑰匙,以及它被誘導時實際被「借用」的範圍。

leaked credentials這次外洩了什麼:服務、用途、存在形式
服務憑證類型用途存在形式放在哪權限範圍狀態
後端資料庫資料庫管理員帳號密碼讓客服 AI 代理查訂單、更新客戶聯絡資料應用程式設定中的連線字串(環境變數)客服代理的執行環境;同一組帳號也被其他系統使用整個資料庫,包含刪除資料表示意情境;仍在使用,因共用而難以單獨收回
同一個資料庫帳號的其他使用者同上其他系統連線不明還有哪些系統在用無法確認同上無法確認
憑證本身已遮蔽或失效;這裡只說明它是哪個服務、拿來做什麼、以什麼形式存放,讓你能對照自己的環境。

憑證沒有被偷,但代理被誘導時,攻擊者等於借用了這把鑰匙的全部權限。

能證明的、只能推論的

這篇是觀點文,情境是示意的,所以能證明的只有官方文件寫明的事;情境裡的經過只能算推論,不知道的就寫成缺口。

不花錢就能做的流程

到這裡,其實已經足夠理解問題在哪。如果你想直接動手,可以跳到「今天就可以來試試」;下面是完整的六步流程。

第一步,列出代理的任務和需要的動作。 例如「讀取訂單」「更新電話與地址」。只開這些權限。

第二步,給代理專屬帳號。 不要和人或其他系統共用,出事時才能單獨停用。

第三步,資料庫層面限制。 只讀帳號、限定資料表或欄位;能用檢視表或預存程序的,就不要開放任意查詢。

第四步,應用層再擋一次。 代理查詢客戶資料時,用程式強制加上「只能查這位顧客」的條件,不要只依賴提示詞。

第五步,高風險動作要人工確認。 刪除、退款、批次修改,保留人工核准。

第六步,找出多餘權限。 AWS IAM Access Analyzer 可以找出未使用的權限(這類發現需付費);Google Cloud 的 IAM 建議工具可以提出縮小角色的建議。

什麼時候不需要買工具

只有一兩個代理、連接少數系統的話,「專屬帳號加最小權限加應用層檢查」用資料庫和雲端平台的原生功能就能做到。代理數量多、權限要動態調整時,才需要專門的平台。

市面上大致分四類。資料庫與雲端原生權限:資料庫角色、檢視表;AWS IAM、Google Cloud IAM 和其建議工具。開源密鑰管理:OpenBao(Vault 的開源分支)等方案,讓代理在執行時取得憑證,不把帳密寫在程式裡。基礎架構存取平台:例如 Teleport 的 Access Requests(屬於 Enterprise 功能)。商用特權存取:例如 1Password 在 2026/07/28 推出的 Privileged Access(建立在 2026 年 6 月加入的 Apono 技術上),官網說可以依需求配置範圍限定的權限,並在會話結束時移除;CyberArk 等傳統特權存取廠商也有相關產品線。

限制也要一起看:權限要給多少,工具無法替你決定,代理的任務範圍要由開發和業務團隊一起定義;應用層檢查仍然要自己寫。選的時候問三件事:代理數量(少的話用原生權限,多的話才需要集中管理)、連接的系統(確認方案支援你的資料庫和雲端平台)、稽核需求(需要逐次記錄代理的存取時,確認有完整紀錄)。

這篇提到的項目要花多少錢

來源沒有列任何價格,表裡的金額大多是估算或未公開,照實標出來。

cost把 AI 代理權限縮回任務範圍的成本
項目用量單價期間US$NT$舉證
列出代理任務並建立專屬最小權限帳號
估
工程師一人估 2–4 小時/每個代理一次性——本站估算
應用層資料範圍檢查
估
工程師一人估 4–8 小時一次性——本站估算,依系統複雜度而定
AWS IAM Access Analyzer 未使用存取發現依帳號與角色數付費功能,本文未取得價格每月——AWS 官方文件註明需付費
Teleport Access RequestsEnterprise 版本文來源未列價格———官方文件註明為 Enterprise 功能
示意情境中越權查詢造成的損失未知未公開———示意情境;影響範圍要看查詢紀錄
合計(僅可證明列)0.000
匯率假設 1 USD ≈ NT$32。單價為公開牌價或帳單實付,來源:本站估算;AWS、Google Cloud、Teleport 官方文件(2026-10-17 讀取)。「舉證」欄標明每筆損失的證據來源與等級( 可證明 推論 缺口)。

縮權限的工時是一次性的;管理員帳號留在代理手上的每一天,都是一次可能的誘導。

你可以學到什麼

站在攻擊者那一側看,一個拿著管理員帳號、又願意聽任何人說話的客服代理,是一扇對所有人敞開的門。他不需要帳號密碼,也不需要碰你的資料庫,只要在對話框裡把要求包裝得夠像一個正常請求。

lessons本案的 5 個教訓
  1. 01
    OWASP 把 AI 代理權限超過任務的問題稱為過度代理,根本原因是功能過多、權限過大、自主性過高,觸發因素包括模型幻覺與提示注入。
  2. 02
    代理的權限要等於它的任務:先列出要做的動作,只開這些權限,並給它不與人或其他系統共用的專屬帳號。
  3. 03
    資料範圍要在應用層用程式強制限定,例如只能查這位顧客;只靠提示詞約束,擋不住提示注入。
  4. 04
    刪除、退款、批次修改這類高風險動作保留人工核准,代理被誘導時才有最後一道關卡。
  5. 05
    開啟代理的查詢紀錄,出事時才答得出它做過什麼;沒有紀錄,「只有這一次」永遠只是推論。
keywords重點學習:最需要學習的 10 個關鍵字10 個
  1. 01
    過度代理(Excessive Agency)
    這篇的主角:OWASP 對 AI 代理權限、功能、自主性超過任務的命名。
  2. 02
    最小權限
    代理的權限等於任務,決定被誘導時能造成多大損害。
  3. 03
    提示注入(Prompt Injection)
    顧客輸入能改變代理行為的原因,也是示意情境的觸發點。
  4. 04
    專屬服務帳號
    不與人或其他系統共用,出事時才能單獨停用。
  5. 05
    應用層資料範圍檢查
    用程式強制「只能查這位顧客」,不依賴模型守規矩。
  6. 06
    檢視表(View)/預存程序
    把代理能碰的資料限縮在固定形狀,不開放任意查詢。
  7. 07
    人工核准(Human-in-the-loop)
    高風險動作的最後一道關卡。
  8. 08
    IAM Access Analyzer
    找出雲端上未使用權限的 AWS 工具,注意這類發現需付費。
  9. 09
    IAM 角色建議
    Google Cloud 依實際使用建議縮小角色。
  10. 10
    查詢紀錄(Query Log)
    唯一能回答代理做過什麼的證據,沒有它就只剩推論。
try today今天就可以來試試約 15 分鐘

全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。

  1. 列出每個 AI 代理的任務,以及每個任務需要的資料庫動作(不用指令)
    看到什麼代表什麼:寫出來的動作通常只有兩三個;拿去和下一步看到的權限比,差距就是要收回的部分。
  2. 用代理的連線設定登入資料庫,確認它實際用的是哪個帳號(唯讀)
    SELECT current_user;
    看到什麼代表什麼:看到的是管理員或共用帳號,就是示意情境裡那一把。拆出來的專屬帳號取名像「agent_support_ro_s4」,下一步 SHOW GRANTS 時一眼就知道它該只有 SELECT 和 UPDATE。
  3. MySQL:列出這個帳號的權限(唯讀;PostgreSQL 可在 psql 用 \du 查看角色)
    SHOW GRANTS FOR CURRENT_USER;
    看到什麼代表什麼:出現 ALL PRIVILEGES、DROP、DELETE 這類代理任務用不到的權限,就是過度代理。
  4. 確認同一個帳號是否也被其他系統或人共用(問負責人或看連線設定,不用指令)
    看到什麼代表什麼:有共用,代表出事時無法單獨停用,要先拆出專屬帳號。
  5. 確認代理的查詢有沒有被記錄、記錄留多久(唯讀)
    看到什麼代表什麼:沒有記錄,出事時就答不出代理做過什麼。

揭露:本文未受任何廠商贊助,提及的產品僅為舉例。

來源

分享
精選拆解直送信箱

每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。

延伸閱讀

作者分析

代理說它要讀資料,實際上卻在改資料

交給 AI 代理的任務是整理報表,它卻把客戶備註裡夾帶的一句話當成指令,改了訂單狀態。這篇講間接提示注入怎麼讓代理偏離意圖,以及為什麼最小權限是第一道、也是最便宜的一道防線。

  • 2026/08/31
  • 每日拆解
作者分析

AI 寫程式助手需要金鑰,但模型不該看到它

讓 AI 編程工具直接跑指令、部署、呼叫 API,最直接的方法就是把金鑰貼進對話。工作完成了,那把金鑰也進了對話紀錄、工具的上下文,甚至某個你沒看過的記錄檔。這篇講怎麼讓工具用得到金鑰,模型卻看不到。

  • 2026/08/03
  • 每日拆解
作者分析

銀行在客戶帳戶裡抓到未授權的 AI 代理

摩根士丹利、摩根大通、美國銀行、富國銀行與花旗等華爾街大型銀行,發現第三方 AI 代理在客戶帳戶中運作,部分代理似乎在沒有使用者指令的情況下嘗試採取行動,甚至聯繫客服中心。銀行高層形容情況「令人恐懼」,正在緊急限制代理存取權限並改寫服務條款。這是使用者親手把銀行帳密交給 AI 代理之後的真實場景:銀行的風控系統根本分不清對面是人類的手指,還是一段開始漂移的推理程式碼。Eric Lin 的作者分析提醒:當行動能力與推理能力結合,百年金融法理第一次遇到「代理人自己擅自做決定」的困境。

  • 2026/10/22
  • 每日拆解