Security

2026 Apple Container 執行 AI Agent,上線前怎樣驗收沙箱?

2026 Apple Container 執行 AI Agent,上線前怎樣驗收沙箱?

Apple Container 只有在檔案越權、密鑰外洩、網路外連、資源耗盡與異常回收全部驗收通過後,才適合承載生產級 AI Agent;低風險單使用者開發可保留 dsh 或 Docker,任何高風險任意程式碼或多租戶任務的關鍵測試失敗,都應回退到 Linux/KVM 上的 Firecracker 路徑。

這篇適合三類讀者:在 Apple Silicon Mac 上建立可重複執行環境的平台工程師、負責審查不可信程式碼的安全人員,以及要決定本地 Mac、雲端 Mac 或 Linux microVM 的團隊負責人。每項測試都要保存原始指令、輸出、拒絕記錄與回收結果;「能啟動」只能證明執行鏈路可用,不能證明沙箱有效。

最後更新於 2026 年 8 月 22 日;版本與能力資料核實自 Apple Container 官方 README發布記錄、dsh 沙箱文件及 Firecracker 官方文件。

驗收分級與放行門檻

可上線

只有在全部關鍵隔離測試都有可重現證據時,才可把 Apple Container AI Agent 沙箱標為可上線。放行記錄至少應包括:

  • 工作區外的讀取與寫入均被拒絕。
  • 宿主環境變數、SSH 測試憑據及 API 密鑰不能被工具取得。
  • 未授權域名、內網地址、宿主服務與特殊地址均按預期拒絕。
  • CPU、記憶體、程序數及儲存空間耗盡測試不會拖垮宿主。
  • Agent 結束後,程序、掛載、暫存資料及網路狀態均已清除。

限制上線

若隔離邊界基本成立,但審計、網路允許名單或資源回收仍未達到團隊的生產要求,只能限制在低風險內部任務。此級別不應處理陌生程式碼、長期持有的生產密鑰或跨使用者資料。

不通過

只要出現以下任一情況,就不能以「目前沒有發生事故」作為放行理由:

  • Agent 能讀取工作區以外的宿主檔案。
  • 必須長期注入宿主敏感憑據才能正常執行。
  • 出站流量沒有邊界,也沒有可信控制層的記錄。
  • 強制終止後仍留下程序、掛載或可重用的敏感暫存資料。
  • 高風險任務可以無限派生程序或持續寫入宿主儲存空間。

檔案邊界:策略限制與虛擬機不可混淆

驗收應先建立一個授權工作區,內放無害的測試檔案,再在工作區外放置誘餌檔案。Agent 透過讀檔工具、搜尋工具、壓縮工具和符號連結,依序執行以下測試:

  • 讀取 ../ 路徑及經過多重路徑標記的檔案。
  • 建立指向工作區外的符號連結,再嘗試讀取其目標。
  • 以相對路徑、絕對路徑和重新命名方式繞過工作區限制。
  • 嘗試寫入根檔案系統、掛載點及未授權的暫存位置。
  • 檢查根檔案系統是否唯讀,以及工具是否能自行增加掛載。

dsh 的本地沙箱文件列出 Seatbelt、bubblewrap 與 Landlock 後端,並提供自訂 runner 介面;這表示它可以按平台採用不同策略,但不代表策略沙箱就是完整虛擬機。dsh 本地沙箱設定也明確把 dsh 標示為 developer preview,驗收報告應記錄實際使用的後端,而不是只記錄「dsh 已啟用」。

Docker 的風險重點通常落在共享核心、權限、掛載及系統呼叫政策。其 seccomp 設定可以收窄可用的系統呼叫,但不能把掛載錯誤或過度授權的容器視為安全。Docker seccomp 官方說明適合用來核對目前設定到底拒絕了哪些系統呼叫。

Apple Container 的工作流則涉及 Mac 上的 Linux 輕量虛擬機。其邊界不同於 Seatbelt,也不同於單純共享核心容器;官方架構說明應與實際掛載設定一併檢查。Containerization 架構文件可用作驗收時的架構依據。

注意: 若測試只在工作區內讀寫成功,並不能證明工作區外不可見。最有價值的證據是一次明確的拒絕:包括被測路徑、執行工具、退出狀態、稽核輸出及沙箱日誌。

憑據暴露:沒有外洩不等於注入方式正確

安全人員應建立專用測試密鑰,而不是把真實生產密鑰放入驗收環境。測試範圍應包括:

  • 環境變數中的 API 密鑰、代理設定及雲端憑據。
  • 使用者家目錄內的 SSH 設定、金鑰檔與認證代理。
  • Agent 設定檔、工作區歷史記錄、工作日誌及錯誤追蹤資料。
  • 建置快取、套件快取與工具輸出的隱藏檔案。
  • Agent 是否能把測試密鑰寫入檔案、壓縮後交給工具,或透過外連送出。

提示不能只寫「請不要讀取密鑰」。應設計惡意提示,要求 Agent 搜尋檔案、列出環境變數、呼叫模擬上傳工具,再對照沙箱拒絕結果。若只看到模型回覆拒絕,卻沒有工具層拒絕,便不能算完成隔離。

需要長期把宿主密鑰暴露給 Agent 的方案,不宜直接判定為生產可用。較穩妥的做法是短期憑據、狹窄權限、代理代辦,以及每次任務獨立的注入和撤銷流程。這些控制不能取代檔案和網路測試,但能縮小失敗後果。

網路邊界:執行隔離不會自動變成出站防火牆

網路驗收要把「能否連線」和「誰負責放行」分開記錄。至少要測試:

  • 預設外連是否開放。
  • DNS 解析是否可用,解析本身是否被記錄。
  • 未列入允許名單的域名是否遭拒。
  • 私有網段、宿主服務與特殊內網地址是否可達。
  • 暫時放行後,權限是否能按任務結束撤銷。
  • 被拒絕的連線是否在可信控制層留下時間、目的地與任務識別。

如果 Agent 可以任意瀏覽網路,陌生程式碼便可能下載額外工具、探測內部服務或外傳工作區內容。Apple Container 的虛擬機邊界本身不等於完整網路過濾;出站規則、DNS、審計及臨時授權必須由明確的網路控制層負責。

這也是判斷「Docker 執行 Agent 是否不安全」時容易出錯的地方。Docker 不是因為名稱就必然不安全,Apple Container 也不是因為使用虛擬機就必然安全。真正的判斷對象是權限、掛載、系統呼叫、出站政策和證據鏈。

資源與回收:把失控任務當成正常測試

資源測試應使用可終止的故障程式,不要直接在共享環境執行無限期攻擊。測試案例可包括死循環、快速派生程序、連續寫入磁碟、超時工具和外部強制終止。每次都記錄:

  • 限制是否在執行時生效,而非只在設定檔中出現。
  • 超時後是否真的停止子程序。
  • 磁碟寫入是否有上限,以及清理是否會影響其他任務。
  • Agent 主程序退出後,背景程序是否仍存在。
  • 掛載、暫存資料、socket 和網路規則是否恢復到乾淨狀態。

不要自行推算啟動時間、並發容量或資源開銷。這些結論必須引用官方資料或本站實測;本篇沒有可公開核對的本站雲端 Mac 驗收記錄,因此不提供虛構的性能數字。Apple Container 截至 1.2.0 的發布狀態可由官方 Releases 頁面核對;運行要求應以官方 README 所列的 Apple Silicon 與 macOS 26 條件為準。

驗收 FAQ:由測試結果決定方案

上線前可把報告交給開發、平台及安全團隊共同簽核。若某個失敗項目沒有明確負責人、補救期限和重新測試指令,報告仍不具備放行價值。

Apple Container 執行陌生程式碼

Apple Container 可以成為受控執行環境,但「可執行」不等於「可安全執行」。對不可信程式碼,檔案、密鑰、網路、資源和回收五類測試都要有拒絕或清理證據。高風險任務若任一關鍵項目失敗,應暫停上線,而不是關閉沙箱。

dsh Seatbelt 的隔離範圍

Seatbelt 主要是程序層級的政策約束。它可以限制檔案和部分系統能力,但不能被描述成與完整虛擬機相同的邊界。dsh 的自訂 runner 只是擴充介面;它不表示 dsh 已提供現成 Firecracker 適配器,也不會自動完成 Linux/KVM 宿主加固。

Firecracker 的遷移條件

Firecracker 應在高風險任意程式碼、多租戶或 Apple Container 關鍵隔離測試失敗時進入評估清單。它的設計建立在 Linux 與 KVM 等條件上,並要求生產宿主採取額外加固措施;Firecracker 設計文件生產宿主建議都應納入審查。

方案決策條件

以下條件分支可直接放進上線評審表:

  • 任務是單使用者、低風險、工作區明確,且檔案、密鑰、網路、資源及回收測試全部通過,可保留 Apple Container。
  • 任務主要是可信程式碼建置,且團隊已有嚴格掛載與 seccomp 管理,可保留 Docker,但必須持續保存策略設定和拒絕日誌。
  • 需要本地快速執行,dsh 後端測試通過且任務不涉及高風險陌生程式碼,可把 dsh 當作開發或內部環境,而非完整虛擬機替代品。
  • 涉及多租戶、長期敏感憑據或任意程式碼,且 Apple Container 的任一關鍵隔離項目失敗,回退到 Linux/KVM 上的 Firecracker 評估,不要以放寬政策換取通過。
  • 團隊無法保存可複核的測試證據,結果只能列為限制上線,先補齊測試框架和審計流程。

上線方案對照

驗收對象 主要邊界 可接受任務 不能直接推定的能力
dsh 本地沙箱 Seatbelt、bubblewrap 或 Landlock 等策略後端 低風險單使用者開發 不等於完整虛擬機;仍是 developer preview
Docker 容器、掛載與 seccomp 政策 可信建置、受控工具鏈 不會自動封鎖錯誤掛載或所有出站流量
Apple Container Mac 上的 Linux 輕量虛擬機工作流 通過完整驗收的單租戶或受控任務 虛擬機邊界不自動提供網路允許名單
Firecracker Linux/KVM microVM 高風險隔離與多租戶評估 不代表已配置好生產宿主加固

證據包對照

測試包 必留資料 通過條件 失敗後處置
檔案包 測試路徑、工具輸出、拒絕日誌 工作區外不可讀寫,符號連結不能越界 禁止生產放行,先收窄掛載
憑據包 假密鑰、環境快照、工具呼叫記錄 Agent 和工具均不能取得未授權憑據 移除長期注入,改用短期授權
網路包 DNS、目的地、策略日誌 未授權外連與內網探測被可信層拒絕 加入出站控制和審計
資源包 限制設定、程序樹、終止結果 耗盡與超時可控,子程序完整停止 降級為內部測試或更換執行時
回收包 任務前後清單、掛載及暫存檢查 無殘留程序、掛載、資料和規則 阻斷重用,修正生命週期控制

成本與交付選擇

方案 交付工作 適合的驗收用途 主要代價
本地 Apple Silicon Mac 自行管理 macOS、沙箱、日誌與清理 固定開發者、可接觸實體介面的任務 環境差異和宿主維運責任由團隊承擔
雲端 Mac 臨時環境 先固定 macOS、Apple Silicon 與任務腳本,再重跑 PoC 上線前重現、跨環境驗收與保存證據 需要安排交付、連線、權限和資料清理
Linux/KVM microVM 建立加固宿主、映像、網路與回收流程 高風險任意程式碼、多租戶隔離 平台設計和安全維運複雜度較高

由驗收結果安排下一步

完成測試後,團隊應把失敗項目分成「設定錯誤」「控制層缺失」和「執行時邊界不適合」三類。第一類可加固掛載、權限或 seccomp;第二類要補上出站代理、密鑰代理和審計;第三類則應評估 Firecracker,而不是繼續堆疊提示詞規則。

Apple Container 適合需要 Mac 工作流、Apple Silicon 相容性和任務級隔離的團隊,但前提是每項控制都能被觀察和重現。若版本、macOS、掛載方式或 Agent 工具鏈改變,驗收不能沿用舊報告。可先參考 ProxyMac 的支援說明 整理環境交付與連線條件,再查看 ProxyMac 的香港 Mac 租用方案 評估臨時驗收環境,然後把同一組測試腳本帶到目標環境重跑。

若目前方案是單一長駐 Mac 或未經限制的 Docker 主機,常見缺點是宿主權限容易累積、任務間清理不完整,以及網路和密鑰責任分散在多個工具中;若改用 Linux microVM,又會增加 KVM 宿主、映像更新和維運負擔。對需要短期重現 Apple Silicon、固定 macOS 條件或驗收雲端交付的團隊,租用 ProxyMac 的 Mac 環境會比臨時改造現有主機更容易保留同一套測試證據。重點不是預先承諾某個安全等級,而是整理 macOS 版本、Apple Silicon 環境、並發方式與隔離腳本,取得臨時環境後逐項重現並保存結果;有了這份證據,團隊才知道應該保留 Apple Container、加固 Docker,還是正式遷移 Firecracker。

常見問題

Apple Container 適合執行 AI Agent 產生的陌生程式碼嗎?+
不能只看任務能否啟動來判斷。Apple Container 應先通過檔案越權、宿主密鑰、網路外連、資源耗盡及異常回收測試;若執行的是高風險任意程式碼或涉及多租戶,關鍵項目失敗時應改評估 Linux/KVM 上的 Firecracker。
AI Agent 沙箱上線前,平台團隊應驗證哪些隔離項目?+
至少要留下五類可複核證據:工作區外檔案與路徑穿越、環境變數及密鑰暴露、域名與內網連線、程序及資源耗盡、以及終止後的程序與掛載回收。測試應包含惡意提示和模擬工具呼叫,而不是只做健康檢查。
dsh 的 Seatbelt 沙箱可以代替完整虛擬機隔離嗎?+
不可以直接畫上等號。dsh 的 Seatbelt 是本地策略沙箱後端,適合限制程序存取;完整虛擬機則提供不同的邊界。dsh 仍標示為 developer preview,自訂 runner 是擴充介面,不代表已經內建 Firecracker 或具備相同隔離保證。
Apple Container 驗收失敗後,是否應該改用 Firecracker?+
若失敗項目涉及宿主檔案、長期密鑰、無邊界出站或任意程式碼逃逸,而且任務屬於高風險或多租戶,Firecracker 值得列入遷移評估。它依賴 Linux、KVM 及生產級宿主加固;這不是把 runner 名稱改掉就能完成的切換。
怎樣證明 Agent 不能讀取宿主密鑰和工作區外檔案?+
先在宿主放置專用誘餌檔案、假 API 密鑰與 SSH 測試資料,再透過惡意提示要求 Agent 讀取,並讓工具實際執行搜尋、讀檔及打包操作。驗收記錄要同時保存允許、拒絕、系統稽核及程序輸出,不能只截取 Agent 的文字回覆。

為 AI Agent 建立可控、可驗收的遠端 Mac 環境

透過 ProxyMac 租用獨立 Mac 資源,為測試與正式部署提供穩定的執行環境。
使用遠端 Mac 執行自動化工作流程,方便平台工程師集中管理存取權限與操作範圍。