2026年 OpenClaw Gateway 出站治理與安全護欄實戰:網域白名單、Sandbox、稽核日誌與人在回路在遠端實體 Mac 上的可複現 Runbook(openclaw.json 片段 + FAQ)
當 OpenClaw Gateway 跑在 ZoneMac 遠端實體 Mac 上對接公網模型與工具鏈時,真正的風險往往不在「進站的 TLS」,而在出站任意存取、工具執行越權與不可稽核的自動操作。本文給出一套可落地的出站網域白名單、Sandbox、JSONL 稽核與人在回路(HITL)組合拳;含決策矩陣、可貼上的 openclaw.json 結構示意、七步 Runbook、可引用閾值與 FAQ。
1. 導語與適用邊界
出站治理的目標,是把「模型能發起的網路與系統動作」收斂到顯式策略:哪些網域允許解析、哪些 IP 段永遠不可達、工具呼叫在何種檔案系統視圖下執行、誰在什麼逾時視窗內核准高風險步驟——從而把安全從「靠同事自覺」變成可複現、可稽核的機讀設定。
本文預設閘道行程已能以最小權限執行,且入站側已依生產習慣綁定 127.0.0.1 或經反向代理;若你仍在搭建遠端 Mac 上的目錄與 SSH 基線,可先對照
2026年遠程開發 Mac mini 從 0 到 1 完成 iOS 打包與發佈。
需要把稽核落盤與備份視窗對齊時,可與
Gateway 定時備份與 JSONL 可觀測性 Runbook
交叉對照,避免日誌卷與 openclaw backup 爭搶 I/O。若你在升級 Node 或 SecretsRef 時遇到權限邊界問題,亦可一併參考
OpenClaw v2026.3 部署排錯:macOS Tahoe 與 Node.js 22。
2. 痛點拆解
- 出站無邊界等於隱式 SSRF。模型或工具若可向任意 Host 發起 HTTPS,就可能探測內網、抓取雲端 metadata、或把租戶資料外傳到未備案網域;「事後封 IP」往往已經洩露。
- 沒有 Sandbox 的工具執行是裸奔。在遠端實體 Mac 上直接跑 shell/腳本時,一次路徑穿越或環境變數注入就可能讀寫使用者目錄;沙箱把可讀寫的根縮到工作區,並把網路與出站策略綁定。
- 缺少稽核與 HITL 時,合規與排錯同時失靈。沒有結構化稽核,你無法證明「當時是誰核准了刪除」;沒有人在回路,破壞性動作會在無人值守視窗自動執行——兩者疊加是 SOC2/內部紅隊最常說的「不可舉證」。
3. 決策矩陣:護欄維度 × 基線
用下表做一次「上線前簽字」:左列為湊合方案,右列為建議基線。
| 維度 | 湊合方案(高風險) | 建議基線 |
|---|---|---|
| 出站策略 | 僅依賴系統 Proxy 或防火牆手工維護 | 應用層 allowlist + 阻斷私網段與 metadata 常見入口 |
| Sandbox | 與閘道同使用者、全盤可寫 | 工作區唯讀或受限寫、網路跟隨出站策略 |
| 稽核 | 僅 stdout 滾動日誌 | JSONL,含 request_id、工具名、出站 Host、策略命中與 HITL 決策 |
| 人在回路 | 口頭約定「危險指令先問人」 | 可程式化規則 + 核准管道 + 逾時預設 abort |
| 7×24 節點 | 策略與值班表只存在聊天裡 | Runbook 與 2026 OpenClaw 實戰教程:在 ZoneMac 物理節點部署 24/7 AI 智能體業務流的完整指南 對齊 on-call 與升級路徑 |
4. openclaw.json 可複現片段
以下為結構示意:鍵名與巢狀路徑請以你目前 OpenClaw 版本文件為準;合併前務必備份生產檔案,並與團隊既有 gateway.router、憑證引用等段落手工合併,避免覆寫未版本化的金鑰路徑。
4.1 出站、沙箱、稽核與人在回路
{
"gateway": {
"security": {
"outbound": {
"mode": "allowlist",
"allowedHosts": [
"api.openai.com",
"api.anthropic.com",
"generativelanguage.googleapis.com"
],
"denyPrivateRanges": true,
"blockMetadataEndpoints": true,
"denyHosts": ["169.254.169.254"]
},
"sandbox": {
"enabled": true,
"toolExecution": "subprocess",
"filesystem": "workspace-readonly",
"network": "outbound-policy-only"
},
"audit": {
"sink": "jsonl",
"path": "/var/log/openclaw/audit.jsonl",
"retentionDays": 90,
"emitFields": [
"request_id",
"profile",
"tool_call",
"outbound_host",
"policy_decision",
"hitl_status"
]
},
"humanInTheLoop": {
"channels": ["slack_approvals", "email"],
"rules": [
{
"match": { "tool": "shell", "risk": "destructive" },
"requireApproval": true
},
{
"match": { "outboundHostNotInAllowlist": true },
"requireApproval": false,
"action": "deny"
}
],
"timeoutSeconds": 900,
"onTimeout": "abort"
}
}
}
}
denyPrivateRanges 與 blockMetadataEndpoints 解決「模型以為在測公網 API,實際在打內網」的經典 SSRF 形狀;humanInTheLoop.rules 裡對「非白名單出站」用 deny 而非核准,避免核准佇列被海量探測淹沒。
5. 七步落地 Runbook(遠端實體 Mac)
- 凍結出站清單。拉取過去 7 天閘道存取日誌與上游帳單中的 Host,去重後對應到供應商文件;區分「模型 API」「登入 OAuth」「CDN 下載」三類。
- 備份 JSON 與日誌路徑。
cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M);確認/var/log/openclaw掛載獨立卷或有 logrotate。 - 先合 outbound,再開 sandbox。避免先縮檔案系統權限導致工具初始化失敗卻誤判為「模型問題」。
- 接通稽核欄位。保證每筆記錄能串聯
request_id與上游回應標頭中的追蹤 ID,便於供應商工單。 - 設定 HITL 管道。在 Slack/郵件裡用固定討論串範本,包含「核准/拒絕/延期」與過期語意;逾時一律
abort。 - 負向與正向用例。負向:對私網與 metadata 位址應出現策略拒絕且稽核為
deny;正向:白名單網域完整走通一次工具鏈。 - 歸檔與演練。每季做一次「核准人全員不可用」演練,確認不會靜默執行高危指令。
6. 出站拒絕與 HITL 分診表
| 現象 | 優先解釋 | 建議動作 |
|---|---|---|
| 連線 RFC1918 位址成功 | 出站策略未生效或 DNS 被劫持到內網 | 立刻回滾並檢查是否走了系統 Proxy 旁路;稽核應顯示 denyPrivateRanges 命中 |
| 合法供應商網域被拒 | 重新導向到新 Host(常見於 OAuth)未入白名單 | 抓包 Host 鏈,依供應商文件補齊;臨時可走工單擴容而非全域關閉白名單 |
| 工具回報 EPERM/EACCES | Sandbox 檔案系統視圖過緊 | 把建置快取與 artifact 明確掛載進允許寫路徑;不要把全盤放寬為可寫 |
| 核准佇列堆積 | 規則過寬,把可自動拒絕的流量送進 HITL | 對明確非法出站使用 deny;縮小 destructive 定義 |
| 逾時後任務「自己跑完」 | onTimeout 誤設為 continue |
改為 abort 並加告警;複核稽核是否記錄逾時事件 |
7. 可引用資訊(寫進 Runbook 的數字與清單)
- 稽核保留:
retentionDays: 90常與季度覆盤節奏對齊;若受合規約束 1 年+,改為冷歸檔到物件儲存並更新 DLP 流程。 - HITL 視窗:
timeoutSeconds: 900(15 分鐘)適合跨時區 on-call;更短適合純互動情境,避免佇列占用。 - 私網防護:除 RFC1918 外,務必單列
169.254.169.254等鏈路本機與 metadata 入口——雲與混合 Mac 節點上尤其常見。
8. FAQ
問:出站白名單會不會卡死第三方 SDK 的跳轉網域?
會。上線前用一週期的真實流量樣本抓 Host 直方圖,把供應商文件列出的 API、OAuth、CDN 與重新導向網域一併納入;對偶發長尾網域可設工單擴容流程,而不是臨時關閉白名單。
問:Sandbox 能防住「模型誘導」的破壞性 shell 嗎?
沙箱降低檔案系統與網路越權面,但不能取代策略:對 rm/curl 到內網/metadata 等高風險工具仍應設定人在回路或靜態拒絕清單,並把每次嘗試寫入稽核。
問:稽核 JSONL 磁碟滿了怎麼辦?
為日誌卷單獨 quota;用按日滾動與 retentionDays 對齊備份策略;與 Cron 備份 Runbook 聯動,避免與 openclaw backup 爭用同一視窗造成寫放大。
問:人在回路逾時應預設放行還是中止?
預設建議 abort:放行會把高風險操作推遲到無人值守時段,違背核准語意;若業務必須自動繼續,應降級為唯讀動作並顯式告警,而不是靜默執行原指令。
9. 總結與節點選型
出站治理、沙箱、稽核與 HITL 四件事,本質是同一命題:把「能做什麼」寫成策略,並能用日誌證明。把它們落在 ZoneMac 遠端實體 Mac 上,你能獲得長期穩定的 Unix 語意與 launchd 級行程託管,減少「為了繞過權限而關沙箱」的誘惑。
與同等價位的通用 x86 小主機相比,Mac mini M4 在 Apple Silicon 統一記憶體頻寬、待機約 4W 量級的靜音執行與 macOS 原生安全堆疊(Gatekeeper、SIP、FileVault)上更契合長期線上閘道角色:當機率低、修補路徑清晰,也更適合與 Xcode/簽章/公證類工具同機共存。若你希望把本文的護欄與 Runbook 跑在可預期、低維運摩擦的硬體上,Mac mini M4 是目前高性價比的起點;現在即可透過 ZoneMac 取得遠端實體 Mac,把出站策略與稽核閉環落在真機環境上。
需要一台可跑 OpenClaw 出站治理的遠端實體 Mac?
ZoneMac 提供高效能 Mac mini 雲端租賃,閘道、稽核卷與工具鏈同機落地,便於複現 openclaw.json 與 7×24 值守。