api.orcarouter.ai 上的代理工具允許清單模式:一個 deny
預設裁決,加上一個或多個以
tool_name_glob為鍵的 allow
規則。關於那些規則背後完整的匹配語言,參見
防火牆規則。
允許清單在主控台中於 Security → Firewall 下撰寫,或透過
/api/workspace/firewall/* 管理路由(你的工作階段/存取權杖——而非
中繼 sk-orca-… 金鑰)。只有你代理的 /v1/* 呼叫使用中繼金鑰。
建立或編輯一個政策是一項 Developer+ 動作。1. 為何對代理採用 default-deny
一個封鎖清單(「拒絕shell.exec、拒絕 db.delete、…」)永遠只能和
你想到的最後一個威脅一樣完整。一個允許清單則倒轉了舉證責任:
閘道拒絕政策未明確允許的一切,所以一個未知的工具在構造上就是
關閉的。
預設裁決 = deny
政策的底線。在沒有規則匹配時,每一次工具呼叫都被封鎖。
Allow 規則把工具重新加回
每條
allow 規則指名你實際使用的工具——以精確名稱或以 glob。default_verdict。所以一個允許清單就是:
為你真實工具設的高優先順序 allow 規則,加上一個捕捉其餘一切的
deny 底線。
2. 一個範例:對一個研究代理的工具做允許清單
假設你的代理只需要搜尋網頁並從一個知識庫讀取——名為web.search
與 kb.read 的工具。其餘一切(shell、檔案寫入、資料庫變更、任何
prompt-injection 可能召喚出的工具)都必須被拒絕。
將政策建構為 預設 deny + 兩條 allow 規則:
以一個 deny 預設值建立政策
Security → Firewall → Policies → New policy。為它命名、讓
Enabled 保持開啟,並將預設裁決設為
deny。這是那個關閉的
底線——參見建立政策。為每個工具家族加入一條 allow 規則
在規則編輯器中加入兩條規則,兩者皆
verdict = allow:priority | tool_name_glob | verdict |
|---|---|---|
10 | web.search | allow |
20 | kb.* | allow |
web.search 是一個精確匹配;kb.* 是一個前綴 glob,它允許
kb.read、kb.search 與任何未來的 kb.* 工具,而無需重新編輯
政策。web.search 與 kb.read 通過;一次對 shell.exec 的呼叫不匹配
任何 allow 規則,撞上 deny 底線,並在 inbound 介面上以 HTTP 400、
代碼 firewall_blocked 回來——參見
封鎖的樣子。
3. 一個畫面看懂 glob
tool_name_glob 是一個小而區分大小寫的文法——沒有 regex、線性
時間。對一個允許清單而言重要的形狀:
| 模式 | 允許 |
|---|---|
web.search | 正好那個工具。 |
kb.* | 前綴——kb.read、kb.search(不含光禿禿的 kb)。 |
*.search | 後綴——web.search、kb.search,以及光禿禿的 search。 |
*.tools.* | 中綴——byo.tools.fetch 及類似者。 |
4. 推出而不弄壞你的代理
Default-deny 是最可能封鎖一個你忘了需要的工具的姿態。分階段進行:先影子化它
先影子化它
開啟影子模式。政策會像
在即時下那樣完全相同地評估並記錄,但會將每個 deny 降級為
audit,原因加上前綴 [shadow] would …。跑真實流量,然後讀取
事件動態。找出你實際呼叫的工具
找出你實際呼叫的工具
Discovered tools 列出工作區
看過的每一個工具,標記為 covered 或 gap。影子模式的
「would-deny」事件加上那些缺口,會準確告訴你還需要哪些 allow
規則。
在你強制執行之前測試
在你強制執行之前測試
Test 沙盒會對照一個樣本
工具呼叫乾跑該政策,並傳回裁決、匹配到的規則與原因——不派發、
不持久化任何東西。確認
web.search 允許而 shell.exec 拒絕,然後
關閉影子。一個被拒絕的 inbound 呼叫不耗費任何模型權杖——它在上游模型
執行之前就被封鎖了——而且被標記為 skip-retry,所以一個被封鎖的
工具不會以重複封鎖燒掉一份重試預算。參見
裁決。
5. 接下來去哪裡
封鎖特定工具
反向——保留一個 default-allow 底線並拒絕指名的工具。
驗證引數
允許一個工具,但只在帶有安全引數時(
db.query 但不含
DROP TABLE)。規則優先順序
first-match-wins 如何將你的 allow 規則排在 deny 底線之上。
裁決
allow、audit、deny、sanitize、pending_approval、cap_cost。
