標籤: AI Agent 安全

  • 讓 Claude 幫你用 1Password,自動登入全流程

    讓 Claude 幫你用 1Password,自動登入全流程

    📌 本文重點

    • 透過 1Password,Claude 能在看不到密碼下替你登入網站
    • 可自動處理多步驟線上任務,從登入到操作一條龍
    • 以 Vault 與授權控制,將 Claude 的帳號使用權限切得很細

    只要先把帳號密碼放進 1Password,Claude 就能在不看見你的密碼的前提下,幫你自動登入網站、改訂單、管理帳戶。

    工具連結:
    – 1Password 官網:https://1password.com
    – Claude(含瀏覽器版):https://claude.ai
    – 1Password x Claude 新功能報導(The Verge):https://www.theverge.com/tech/966442/1password-anthropic-claude-browser-integration


    核心功能:它到底會幫你做什麼?

    1. 零暴露:Claude 幫你登入,但看不到密碼

    解決問題: 平常你要把帳密貼給 AI,它才能幫你操作網站;現在改成「由 1Password 代打密碼」,Claude 只負責指揮瀏覽器怎麼點。

    實際上發生的是:

    1. 你在 Claude 裡啟用 1Password 整合。
    2. Claude 想登入某網站時,會向 1Password 要「代登入」權限。
    3. 1Password 在你的瀏覽器側,直接把帳號密碼填進表單,不把憑證傳給 Claude 的模型

    💡 關鍵: 所有帳密只在 1Password 通道流動,Claude 只看到「已登入狀態」,看不到也拿不到你的憑證。

    你可以立刻做的事:
    – 把常用帳號(SaaS、訂票網站、銀行以外的服務)都先存進 1Password。
    – 在 Claude 啟用 1Password,選一個低風險帳號測試(例如某 SaaS 試用帳號)。

    安全關鍵字:「零暴露安全架構」。意思是密碼只在 1Password 的通道裡流動,不會進入 Anthropic 的模型或訓練資料庫。


    2. 多步驟線上任務:從登入到操作全包

    能做到的具體事(The Verge 報導提到的典型場景):

    • 訂機票 / 行程:登入航空公司或 OTA,選日期、比價、下單。
    • 改訂單:登入後台,修改時間、座位、取消或改期。
    • 管理帳戶:調整訂閱方案、更新信用卡資訊、下載發票。

    你可以這樣用:

    • 對 Claude 說:「幫我登入 Acme Analytics,下載本月的營收報表。」
    • 或:「幫我登入 Netflix,把方案改成基本方案,取消 4K。」

    Claude 會做的事:

    1. 要 1Password 幫忙填入對應帳密。
    2. 在網站上導航(點選、填表、切換頁面)。
    3. 完成你描述的任務,例如找到報表並下載。

    你可以立刻做的事:

    • 列一張「我每月重複做」的線上任務清單,挑 1–2 個交給 Claude 試跑。

    3. 權限邊界:限定 Vault、限定帳號

    1Password 並不是把你全部密碼丟給 Claude,而是讓你逐步授權:

    • 可以只開某個 Vault(例如「工作用」Vault)給 Claude,用於工作任務。
    • 個別帳號也可以撤銷授權,Claude 之後就不能再用那組憑證。

    搭配近期企業對 AI Agent 安全的研究(例如 VentureBeat 談到「多數企業仍讓 Agent 共用憑證」的風險),這個設計的重點是:

    • 每個「AI 助理」有自己的可用帳號清單。
    • 高風險帳號(銀行、主郵箱)可以完全不開給 Claude。

    你可以立刻做的事:

    • 建立一個新 Vault 專門放「可以讓 Claude 用的帳號」。
    • 把敏感帳號留在另一個 Vault,不授權給 Claude。

    💡 關鍵: 透過拆分 Vault 和選擇性授權,你可以精準控制 Claude 能動哪些帳號,降低企業與個人帳戶被誤用的風險。


    適合誰用?三種典型場景

    1. SaaS 使用重度者:每週要登入十幾個系統的人

    場景例子:

    • 你要常進 CRM、專案管理、分析工具,下載報表或調整設定。
    • 帳號多、密碼長,常常忘記或要一直自訂一次性驗證碼。

    可採取行動:

    • 把這些 SaaS 通通存進 1Password 的「工作 Vault」。
    • 寫一個固定提示給 Claude,例如:「登入 X 工具,拉出上週報表,存成 PDF。」

    2. 常訂票、改行程的自由工作者 / PM

    場景例子:

    • 要幫自己或團隊訂機票、車票、住宿,還要常改。

    可採取行動:

    • 把常用的航空公司、旅行平台帳號存進「個人旅行」Vault。
    • 讓 Claude 幫你:搜尋指定日期航班 → 比價 → 下訂(或至少幫你選好候選方案)。

    3. 想用 Agent,但怕安全風險的企業團隊

    呼應 Towards AI 提到的「要有回滾策略」:

    • 你可以先把 Claude 當成半自動助理:讓它登入、幫你走流程,但最後一步由人類按下確認。

    可採取行動:

    • 將測試帳號放進專用 Vault,開給 Claude。
    • 在內部建立標準操作:先由 Claude 操作 staging / 測試環境,再複製流程到正式環境。

    怎麼開始:開通、授權、實際操作

    以下分成三步驟,照做完,你就可以跑第一個自動登入 workflow。

    步驟一:準備 Claude 與 1Password

    1. 註冊 / 登入 1Password
    2. 前往:https://1password.com
    3. 個人版可先用試用方案,企業可用 Business Plan。
    4. 安裝 1Password 瀏覽器擴充
    5. 在 Chrome / Edge / Firefox 擴充商店搜尋「1Password」,安裝並登入。
    6. 準備 Claude 帳號
    7. 前往:https://claude.ai
    8. 建議在桌面瀏覽器使用(方便讓 1Password 插件配合)。

    行動檢查點:

    • 你已經可以在瀏覽器上,點 1Password icon 自動填表。

    步驟二:在 1Password 裡設定可用 Vault / 帳號

    1. 打開 1Password App 或 Web 版。
    2. 建立一個新的 Vault,例如:Claude-可用帳號
    3. 把你願意交給 Claude 操作的帳號移到這個 Vault:
    4. 某 SaaS 報表系統
    5. 一個訂票平台
    6. 其他低風險服務
    7. 將高風險帳號(銀行、電子郵件主帳號、雲端主控台)留在其他 Vault,不要放進這個 Vault。

    行動檢查點:

    • 你清楚「哪些帳號 Claude 可以碰」、「哪些完全不開放」。

    步驟三:在 Claude 裡啟用 1Password 授權

    1. 在瀏覽器打開 Claude,登入你的帳號。
    2. 首次使用相關功能時,Claude 會提示你連結 1Password:
    3. 點選授權按鈕,會跳出 1Password 的授權畫面。
    4. 選擇要讓 Claude 使用的 Vault(建議只選 Claude-可用帳號)。
    5. 確認授權後,Claude 就能透過 1Password 在你的瀏覽器中自動填表。

    注意:授權是可以之後收回的,下文會說如何撤銷。


    三個可以立刻上手的 Workflow

    Workflow 1:自動登入 SaaS 並下載報表

    目標: 每週固定下載一份分析報表,由 Claude 代勞。

    操作步驟:

    1. 確認該 SaaS 帳號已在 Claude-可用帳號 Vault 內。
    2. 對 Claude 說:

      幫我登入 Acme Analytics,打開「月度營收報表」,下載最新一份為 PDF,存到我的下載資料夾。

    3. 觀察 Claude:
    4. 透過 1Password 自動登入。
    5. 在儀表板找報表 → 點選下載。

    可以持續優化的地方:

    • 修改提示,讓它在執行前先重述步驟,例如「先說明你打算點哪幾個頁面再開始」。

    Workflow 2:修改訂閱方案(降級 / 升級)

    目標: 讓 Claude 幫你調整某服務的訂閱等級。

    操作步驟:

    1. 把該服務帳號存進 Claude-可用帳號 Vault。
    2. 對 Claude 說:

      幫我登入 Example Streaming,確認我現在的方案,如果是最高級就幫我改成中階方案,變更前先跟我確認一次。

    3. Claude 會:
    4. 登入 → 進帳戶設定。
    5. 找訂閱方案頁面。
    6. 在變更前,照你的要求先詢問你。

    安全小技巧:

    • 對涉及金流的操作,一律要求「行前說明 + 執行前確認」。

    Workflow 3:旅遊行程改期(半自動)

    目標: 航班改期先由 Claude 幫你找到可改選項,再由你按下最後確認。

    操作步驟:

    1. 旅行平台帳號放進 Claude-可用帳號 Vault。
    2. 對 Claude 說:

      幫我登入 TripExample,找到 8 月 20 號從台北飛東京的訂單,看能不能改到 8 月 22 號,如果有選項,把費用和條件整理給我,不要幫我按確認。

    3. Claude 會:
    4. 登入 → 找到訂單。
    5. 查看改期規則與價格。
    6. 把方案整理給你,停在「確認頁」。

    你的動作:

    • 人眼檢查資訊 → 自己決定是否按下確認。

    安全實務:如何收回權限與限制範圍

    1. 隨時收回 Claude 的 1Password 授權

    如果你不想讓 Claude 再用任何帳號:

    1. 打開 1Password → 設定 / Integrations(實際名稱可能略有不同,依正式版本為準)。
    2. 找到「Claude」或「瀏覽器整合」項目。
    3. 點選「撤銷授權」或移除整合。

    之後 Claude 再試圖登入時,就會失敗,需要你重新授權。


    2. 只讓它用部分帳號

    • 把所有「可給 Claude 用的帳號」集中在一個 Vault。
    • 授權時只選這個 Vault,其餘 Vault 不勾選。
    • 若某帳號不再要給 Claude 用,移出那個 Vault 即可。

    這樣即便 Claude 被濫用,它也只能碰到你明確標記「可用」的帳號。


    3. 為自己設一個「回滾策略」

    呼應 Towards AI 提到的回滾概念,建議:

    • 把「重要設定」或「帳單資訊」修改前的狀態截圖 / 匯出。
    • 對高風險操作(刪除資料、關閉帳號)一律由你親自點最後的確認按鈕。

    💡 關鍵: 把高風險操作的最後一步保留給人類,可以在享受自動化便利的同時,保有「一鍵回頭」的安全緩衝。


    小結:先讓 Claude 當你的「登入助理」

    如果你還不放心讓 AI 完全自動跑流程,可以先把 Claude 當作「幫你登入 + 找到頁面」的助手:

    • 由它負責記住哪個帳號在哪個網站。
    • 你負責看結果、按最後一步。

    等你熟悉它的操作風格,再慢慢把更多重複任務交給它,就能在不暴露密碼的情況下,讓 AI 真正幫你「用」網站,而不是只會給建議。

    🚀 你現在可以做的事

    • 前往 1Password 與 Claude 註冊帳號,安裝好 1Password 瀏覽器擴充並完成登入
    • 建立一個 Claude-可用帳號 Vault,將 1–3 組低風險帳號移入並在 Claude 中授權此 Vault
    • 挑一個文中提到的 Workflow(例如下載報表),照步驟實際讓 Claude 幫你跑完一次流程
  • GitHub Agent 洩密:開發安全默契徹底破局

    GitHub Agent 洩密:開發安全默契徹底破局

    📌 本文重點

    • 傳統權限模型在 AI Agent 上已失效
    • OAuth/RBAC 只管存取,不管行為與意圖
    • 開源安全工具與隔離框架是新必備防線
    • 企業需改用「授權行為」與可審計 Agent 模型

    這次 GitHub Agent 的「GitLost」漏洞,不是單一產品事故,而是整個「Agent 時代」安全默契的破局。對工程師與企業安全負責人而言,關鍵問題已經不是「要不要用 Copilot」,而是:我們真的理解「代理型 AI」打開了哪些新攻擊面嗎?

    GitLost 把一件事講得很直接:當你把 IDE 接到雲端 Agent,再讓它拿著 OAuth token 亂跑,傳統的「信任平台 + 信任權限」模型在 Agent 上已經失效,而產業的安全設計還停留在「這只是聰明一點的 autocomplete」的錯覺裡。

    💡 關鍵: Agent 擁有 OAuth 權限時,不只是「能看到什麼」,而是「會怎麼重組與輸出這些資料」——這是傳統模型完全沒描述的新風險。


    一、GitLost 暴露的是「權限觀念」的落後,而不是單一 bug

    根據 Noma Security 的分析,GitHub 的新 Agent 在特定誘導下,竟能回傳本不應暴露的私有 repo 內容。更致命的是:研究員不是靠 0-day,而是靠「騙 AI 把它看得到的東西說出來」。這對安全人來說有三重震撼:

    1. OAuth + RBAC 在 Agent 上只保證「能不能讀」,不保證「會怎麼用」。
    2. 企業早就習慣:只要 repo 設成 private、權限縮到 team 最小範圍,再配上一套 RBAC,就算合規過關。
    3. 但在 Agent 模式下,LLM 被賦予「解讀 +重組 + 回傳」的自由度,它不是 API proxy,而是會重寫資訊邊界的解釋層。

    4. LLM 無法區分「正常指令」與「惡意提示」,Prompt Injection 直接打穿邏輯層防線。

    5. Ars Technica 指出:LLM 本質上無法在語義層穩定畫出「可信內容 / 不可信內容」界線,因此被注入的提示只要語法合理、上下文一致,就能被當作 legit 指令。
    6. GitLost 的本質,就是把「請你幫忙比對」這種看似 innocuous 的任務,變成跨 repo 的資料抽取行為。

    7. 平台巨頭預設「Agent 是功能」,而不是「Agent 是帶工具欄位的行動主體」。

    8. 在把 Agent 推進 VS Code、企業 workflow 前,GitHub、OpenAI 這些公司優先考慮的是「能做多少事」,而不是「誰為行為後果負責」。
    9. 結果就是:權限設計停在 OAuth,審計停在可編輯 log,防誤用停在幾條 system prompt。

    從 JADEPUFFER 這類 agentic ransomware 案例看得更清楚:當一個語言模型被綁上自動化工具鏈,它不只是在輸出文字,而是能夠以機器速度暴露舊安全債。GitLost 則讓我們看到另一面:即便沒有惡意程式,純靠「聰明助理」也能變成資料外洩管道。

    💡 關鍵: Agentic 攻擊可以在沒有 0-day、沒有惡意程式的情況下僅靠提示與工具編排達成關鍵資料外洩。


    二、為什麼「傳統安全組合拳」在 Agent 面前形同虛設?

    企業過去的預設公式是:OAuth + RBAC + 合規稽核 = 足夠安全。在 Agent 時代,這三件事分別崩壞在不同層級。

    1. OAuth:授權的是管道,不是行為

    OAuth token 告訴 GitHub Agent:「你有權看這幾個 repo」。但它完全沒描述「你可以對這些內容做什麼」。當 Agent 同時被接到 chat 介面與工具 API:

    • 使用者一句「幫我比較所有專案裡類似的訂閱方案」,就可能觸發跨 repo 搜索、摘要、重組。
    • 現有 OAuth 無法表達「可查詢、不可重述原文」、「可計算統計、不可提供原始記錄」。

    授權模型停在『資料存取』層,而 Agent 在『行為編排』層運作,兩者語言完全不對焦。

    2. RBAC:角色管的是「人」,不是「代理」

    RBAC 的角色通常綁在使用者帳號或服務帳號上,假設行為可被預測——工程師不會每天自己跑 script 掃全部 production DB。Agent 打破了這個假設:

    • 一個「開發者用 Copilot」的場景,忽然變成「LLM 代替開發者呼叫一連串 API」。
    • 對系統來說,所有操作都來自同一個 user / service account,看起來「合理」,但實際上是高頻率、高廣度的機器編排行為

    這也是為什麼 Sysdig 在分析 JADEPUFFER 時會強調:攻擊鏈大部分是由 agent 自行串接完成,人體只提供初始憑證與目標。RBAC 看不到「誰在決定下一步」,只看到「哪個帳號在執行」。

    3. 傳統審計與合規:記錄得了 log,描述不了意圖

    Halo 這類開源工具開始做的是:把 Agent 的所有工具調用、模型請求、資料存取記錄到防竄改的 append-only 日誌裡,並用 hash 鏈確保證據完整性。這暴露了一個現實:

    • 既有的 audit log 多半是「平台自己提供的 dashboard」,既可編輯又有立場,對 SOC2 / ISO 27001 這類合規來說幾乎沒可驗證性
    • 在 Agent 世界,同一個 prompt 可以導致 50 種略為不同的行動序列,所以不能只審查「設定好的控制」,而是要審查「每一次實際發生的行為」。

    傳統安全假設 system 是 deterministic,Agent 卻是 stochastic;安全控制如果不變成針對「實際運行軌跡」,就只是過去式的安心劑。

    💡 關鍵: 在 stochastic 的 Agent 行為模式下,只有針對「每一次實際行動序列」的審計,才有合規與鑑識上的實際價值。


    三、開源安全工具與隔離框架:可以補哪些洞?

    好消息是,GitLost 事件之後,社群已經開始補平台沒做好的功課,但企業要理解:這些工具不是「加分題」,而是做完才算及格

    1. 能力掃描:先弄清楚你的 Agent「到底能做多可怕的事」

    MakerChecker 這類「Scan your AI agents for dangerous capabilities」的工具,本質上是在幫你:

    • 系統性枚舉 Agent 可以呼叫的工具、API 和它們的組合效果;
    • 模擬提示攻擊,測試會不會被誘導去刪檔、外洩、對外呼叫未知 endpoint。

    對安全團隊而言,這應該變成導入任何 Agent 前的必備安全測試,而不是 demo 完覺得好酷就上線。

    2. 守門審計:把「Agent 真正做了什麼」變成不可抵賴的事實

    Halo 提供的是一種「runtime evidence」思路:

    • 所有 Agent 行為都進入不可修改的 log,安全團隊可以事後回溯「哪個 prompt 導致哪次資料存取」。
    • 為未來的內控、合規、甚至事故鑑識提供客觀證據,而不是靠 vendor 說明文件。

    如果企業把 Agent 當成關鍵生產工具,沒有這種第三方、可驗證的運行紀錄,基本上等於把事故調查外包給同一個肇事方。

    3. 隔離環境:把「Agent 的 OS」從「你的真實 OS」拆開

    OpenComputer 代表的是另一條路:為 Agent 建一台專屬的「開源電腦」,讓它在隔離 VM 中拿到 OS 級權限、裝軟體、操控 UI——但這一切都不直接碰到你的生產環境

    這種設計對企業的啟示是:

    • 不要讓 Copilot 或 ChatGPT Work 直接在 production cluster 裡有腳;
    • 先給它一個「緩衝層」——不論是 sandbox repo、隔離 VM、還是只讀鏡像——讓所有高風險操作只能在這裡發生。

    Agent UX 要順暢,沒錯;但安全上,真正成熟的做法是「讓 Agent 有完整 OS 體驗,但那台 OS 不是真實世界」。


    四、導入 Copilot / ChatGPT Work 前,企業必須改變的三件事

    最後回到實務:未來 AI Agent 一定會變成開發流程的基礎設施,問題只是誰有資格當那個基礎設施。從現在開始,工程團隊和 CISO 至少要同步完成這三件轉變:

    1. 從「授權帳號」轉向「授權行為」
    2. 為 Agent 定義的不是「它看得到哪個 repo」,而是「它可以執行哪種任務類型」。例如:
      • 允許 read + summarize,但禁止 read + copy exact code
      • 允許 search logs for patterns,但禁止 export raw logs.
    3. 在 IAM / policy 層明確標記出「AI agent service accounts」,為它們套上更嚴格的行為白名單。

    4. 把 Prompt Injection、Agent 誤用納入正式威脅模型,而不是「研究議題」

    5. 事件回顧流程(postmortem)要開始問:「這次事故是不是由 Agent 觸發?如果是,prompt 形狀是什麼?」
    6. 威脅建模文件裡要多出兩類 scenario:
      • 「外部內容(mail、issue、code)注入惡意指令,Agent 被利用」;
      • 「員工在不理解 Agent 能力的情況下,給出過寬指令導致資料外洩」。
    7. 這不是紅隊玩具,而是必須進入正式風險評估、控制設計與演練。

    8. 建立新的「安全默契」文化:Agent 行為要被預期、可追蹤、能被質疑

    9. 對開發者:
      • 把「我可以叫 Agent 做什麼」當作安全決策,而不是個人效率選項;
      • 學會基本的 Prompt Hygiene,例如避免「跨專案全量比較」、「把所有客戶紀錄拿出來算統計」這種模糊指令。
    10. 對企業:
      • 引入像 MakerChecker、Halo 這類工具,把 Agent 行為可觀測性變成合約條款,而不是 demo slide。
      • 要求平台供應商提供「不可編輯的活動證據」與「清楚的誤用責任界線」。

    總結得直接一點:AI Agent 會變成下一代 IDE 與企業工作流的標配,但只要安全默契沒建立,每一次 Agent 漏洞就是對整個生態信任的一次透支。平臺巨頭若繼續把安全當附註條款,開源社群與企業內部安全團隊就應該用政策與採購決策,把資源轉向那些願意把「安全與功能同等優先」的平台——在 Agent 時代,能被信任的才配當基礎設施。

    🚀 你現在可以做的事

    • 在內部 PoC 任一 Agent 前,先用 MakerChecker 類工具掃描其可呼叫能力與潛在誤用路徑
    • 將 Halo 類不可竄改審計機制納入 Copilot/ChatGPT Work 導入計畫與供應商評估標準
    • 於開發與安全團隊內啟動一次「Agent 行為授權與 Prompt Injection」威脅建模工作坊
  • Claude 私有化:自托管沙箱與 MCP 隧道實戰

    Claude 私有化:自托管沙箱與 MCP 隧道實戰

    📌 本文重點

    • 模型與編排托管在 Anthropic,工具與資料留在你 VPC
    • 透過 self‑hosted sandbox 把程式執行權收回內網
    • 用 MCP tunnel 只開安全出站連線打通內網工具
    • 權限設計與審計要靠嚴格的 tools schema 與網路邊界

    典型企業場景:你想讓 Claude Managed Agent 幫你跑 CI/CD、讀內網 Git、打內部 REST / Postgres API,但 不能開公網入站、不能把 Git 暴露出去。這次的 self‑hosted sandboxes + MCP tunnels 更新,基本上就是:

    模型與編排留在 Anthropic,工具執行與資料存取拉回你自己的 VPC,且只用安全出站連線。

    實務上等於多了一種選擇:不用把模型拉進內網自建 inference,也能在嚴格邊界內讓 Agent 控制 CI、讀 repo、查 DB。


    重點說明:架構與安全邊界怎麼畫

    1. Orchestrator vs Tools:誰在外面、誰在裡面?

    Claude Managed Agents 大致拆成兩層:

    1. Orchestrator(Anthropic 端托管)
    2. 理解使用者意圖、規劃步驟、決定要叫哪些工具。
    3. 透過 MCP 協定 呼叫你定義的 tools(MCP server)。

    4. Tools / MCP servers(你自己控制)

    5. 例如:git、CI/CD runner、Postgres、內部 REST API
    6. 可以跑在 self‑hosted sandbox 裡(受控容器/VM),或直接在你內網 VPC。

    💡 關鍵: Orchestrator 永遠只看得到你暴露出的 MCP tools 與其 I/O,真正的 Git / DB 資料面與執行權都留在你 VPC。

    關鍵:Orchestrator 看不到你的 Git/DB,只能透過你暴露出的 MCP tools 操作,權限由你決定。


    2. MCP 協定與 server:最小必須心智模型

    MCP server 就是一個會講 JSON‑RPC over stdio / WebSocket 的後端,向 Agent 宣告自己有哪些工具。概念類似「強 typing 的 function calling」。

    一個簡化版的 MCP server schema(YAML)可能長這樣:

    name: corp-dev-tools
    version: 0.1.0
    
    tools:
      - name: git_read_file
        description: 讀取內部 Git repo 某個檔案內容
        input_schema:
          type: object
          required: [repo, path, ref]
          properties:
            repo: { type: string }
            path: { type: string }
            ref:  { type: string }
    
      - name: ci_trigger_pipeline
        description: 觸發 CI pipeline,只能在 allowlist 專案上執行
        input_schema:
          type: object
          required: [project, branch]
          properties:
            project: { type: string }
            branch:  { type: string }
    

    Agent 端會看到 明確的工具清單與參數結構,再決定何時呼叫。


    3. Self‑hosted sandbox:把「程式執行權」留在自己這邊

    self‑hosted sandbox 解決的是:「我不想讓 Anthropic 直接在他們 infra 上跑 shell / Python,請改在我 VPC 裡跑」。

    實作上可以是:

    • 一個專用 k8s namespaceFargate / VM,跑 Anthropic 提供的 sandbox runtime。
    • Agent 要執行程式碼(例如跑單元測試、lint、git 操作),會透過安全通道把 code / 指令丟到這個 sandbox。

    典型邊界設計:

    • sandbox 只能出站連到:
    • 你的 Git / CI / DB / 內部 API
    • Anthropic 的 MCP tunnel endpoint
    • 不能直連其他敏感系統(或至少預設 deny)。

    實際好處: Agent 可以幫你跑 pytest、打 CI webhook、改 Git branch,
    但所有「可以執行程式碼的環境」都在你的控制下,方便做防火牆、資安掃描、審計。


    4. MCP tunnels:如何在不開洞的情況下連到內網

    MCP tunnel 解決:「我的 MCP server 在 VPC 裡,如何讓 Anthropic 托管的 Agent 打到它,但我不願意開入站 443?」

    典型拓撲:

    [Anthropic Orchestrator]
            ^
            | (MCP over tunnel)
            v
    [MCP Tunnel Client in VPC] ----> [MCP Server + Sandbox]
              (outbound TLS)
    

    關鍵特性:

    • 只有 VPC → Anthropic 的出站連線(類似反向隧道)。
    • 隧道建立後,Anthropic 端像是在打本地 MCP server,但實際流量是經由你建立的 mutual TLS / token 隧道轉回來。
    • 容易套用零信任思路:每條隧道都視為一個 identity,綁定最小權限的一組 tools。

    💡 關鍵: 只用出站隧道與 mTLS,就能在不開任何入站 port 的前提下,把內網工具安全地接給 Managed Agent 用。


    實作範例:VPC 內最小可行架構

    場景:

    • VPC 內:
    • 一台 MCP server + sandbox Pod/VM。
    • 連得上 GitLab、Postgres、內部 https://api.intra
    • 出站:允許打到 Anthropic 的 MCP tunnel endpoint

    1. MCP server:Git + Postgres + REST API

    以 Node.js 為例(pseudo‑code):

    import { MCPServer } from "@anthropic-ai/mcp-sdk";
    import { execSync } from "node:child_process";
    import { Client } from "pg";
    import fetch from "node-fetch";
    
    const gitAllowlist = ["service-a", "service-b"];
    
    const server = new MCPServer({ name: "corp-dev-tools" });
    
    server.tool("git_read_file", async ({ repo, path, ref }) => {
      if (!gitAllowlist.includes(repo)) {
        throw new Error("repo not allowed");
      }
      const base = "/srv/git/" + repo;
      const content = execSync(`git --git-dir=${base} show ${ref}:${path}`, {
        encoding: "utf8",
      });
      return { content };
    });
    
    server.tool("db_read_customer", async ({ id }) => {
      const client = new Client({
        host: process.env.PG_HOST,
        user: "readonly_agent",
        password: process.env.PG_PWD,
        database: "app",
        ssl: true,
      });
      await client.connect();
      const res = await client.query("SELECT id, name, status FROM customers WHERE id=$1", [id]);
      await client.end();
      return { rows: res.rows };
    });
    
    server.tool("call_internal_api", async ({ path, method, body }) => {
      if (!path.startsWith("/public-agent/") || method !== "POST") {
        throw new Error("not allowed");
      }
      const resp = await fetch(`https://api.intra${path}`, {
        method,
        headers: { "Authorization": `Bearer ${process.env.AGENT_TOKEN}` },
        body: JSON.stringify(body ?? {}),
      });
      const json = await resp.json();
      return { status: resp.status, data: json };
    });
    
    server.listen();
    

    重點:

    • gitAllowlist:避免 Agent 任意讀所有 repo。
    • Postgres 使用 readonly_agent 帳號,限制只讀特定 schema。
    • 內部 API 降到 /public-agent/ 子路徑 + 專用 token。

    2. MCP tunnel client:出站連上 Anthropic

    實際指令會以官方 CLI / container 為主,概念配置類似:

    anthropic-mcp-tunnel \
      --mcp-url=http://localhost:8000 \
      --agent-id=corp-ci-agent \
      --tls-cert=/etc/mcp/cert.pem \
      --tls-key=/etc/mcp/key.pem \
      --anthropic-endpoint=https://mcp-tunnel.anthropic.com \
      --tags=env:prod,scope:ci
    

    在 Anthropic 控制台,你會:

    • 建立一個 Managed Agent:corp-ci-agent
    • 只綁定這條 tunnel 曝露的 corp-dev-tools MCP server。
    • 開啟前人工審閱 / 部分工具 auto‑approve(視風險)。

    3. ACL 與工具權限設計

    簡單的 policy‑as‑code 思路:

    agent: corp-ci-agent
    allowed_tools:
      - git_read_file
      - ci_trigger_pipeline
      - db_read_customer
      - call_internal_api
    
    constraints:
      git_read_file:
        repos: ["service-a", "service-b"]
        max_file_size_kb: 256
    
      db_read_customer:
        max_rows: 1
    
      call_internal_api:
        allowed_paths:
          - "/public-agent/deploy"
          - "/public-agent/status"
    

    你可以在 MCP server 裡讀這個 YAML,做額外校驗。不要把 ACL 寫死在 prompt 裡,防禦提示注入要靠程式碼與網路邊界。


    建議與注意事項:安全坑與實務整合

    1. 工具權限過大 = Agent RCE 風險

    OWASP Agent Top 10 已經把 工具濫用 / 權限濫用 列為前幾名風險。常見錯誤:

    • 一個 tool 可以執行任意 shell、對任何 DB 下任意 query。
    • Agent 可以打到整個內網,而不是只打 CI / Git / API Gateway。

    建議:

    • 一個 tool 做一件小事,強 schema,避免 free‑form SQL / shell。
    • DB 使用 只讀 + row‑level / column‑level policy
    • 網路上用 安全群組 / SG 把 sandbox 能打的 IP 段鎖死。

    2. 審計 / Logging:要記「自然語言意圖 + 工具調用」

    很多企業只有 infra log,缺少「Agent 為什麼要做這件事」的上下文。

    建議最低標準:

    • 針對每次工具呼叫記錄:
    • user_id / session_id
    • Agent 看到的 自然語言任務描述(可脫敏)
    • 工具名稱 + input 參數(敏感欄位做 partial redaction)
    • 執行結果摘要 / status code

    這樣在事後對齊 OWASP 事件分析時,才能把「提示注入 → 工具濫用 → 資料外洩」串成一條 timeline。


    3. 網路與認證:守住 MCP 隧道與 secrets

    重點:把隧道視為一個高價值通道,跟 VPN 一樣認真看待。

    具體建議:

    • 隧道一律走 mTLS,cert 由內部 CA 或雲端 CA 管理。
    • 隧道 client 的 API token / cert 放在 Vault / KMS,sandbox 上只拿短期 lease。
    • 工具裡 不要回傳 secrets(例如整個 JWT 與 DB 密碼)到 Agent,必要時只在 server 端使用。
    • 若擔心 API key 滲透,在 sandbox 層加 egress proxy,對外送出的 HTTP header 做檢查 / scrub。

    4. 與 SOAR/服務目錄/Secrets 管理整合的實務問題

    實務上會遇到:

    • SOAR / ticket 系統
    • 建議把「開 ticket / 查告警 / 執行 playbook」封裝成 MCP tools,權限沿用既有 RBAC。

    • 服務目錄(例如 Backstage)

    • MCP tools 可以讀服務目錄 API,讓 Agent 知道 repo 屬於哪個團隊、能不能改 config。

    • Secrets 管理(Vault/KMS)

    • 不要給 Agent 直接讀 Vault 的能力;改由 MCP tool 在 server 端解密,對 Agent 只暴露結果(或再加工)。

    5. 和「模型拉進內網自建 inference」的取捨

    Managed Agent + self‑hosted sandbox + MCP tunnel:

    • 優點:
    • 不用自己跑 LLM cluster,只負責工具、網路、權限
    • 快速接雲端最新模型(含之後像 Mythos 這種安全模型的企業版)。
    • 合規上:資料只經由 tools 進出,你可以精準監控。

    • 缺點:

    • Orchestrator 還是在 Anthropic,那邊仍會看到 工具 I/O 摘要
    • 對極端資料主權(完全不能出域)的場景不適合。

    自建 inference:

    • 優點:
    • 完整掌控模型與權限,所有 token 在你網段內。

    • 缺點:

    • 要自己做 Agent orchestration、tooling、guardrail、OWASP Top 10 風險防護。
    • 成本與維運門檻高。

    如果你目前已在雲上、允許「模型在外、資料在內」,這次的 Claude Managed Agents 私有化能力 是一個相對平衡的折衷:

    把最麻煩的 LLM 與 Agent orchestration 交給 Anthropic,把最敏感的程式執行與資料權限留在 VPC,用 MCP + sandbox 畫清楚邊界。

    🚀 你現在可以做的事

    • 在現有 VPC 內起一個簡單 corp-dev-tools MCP server(照文中 Node.js 範例改成你公司的 Git / DB / API)
    • 部署 anthropic-mcp-tunnel 類似的隧道 client,實測只用出站連線即可讓 Managed Agent 操作內網工具
    • 寫一份 YAML ACL(如文中 policy‑as‑code 範例),把 repo / DB / API 權限具體收斂後再開放給 Agent 使用