1. 三個範圍
三個概念相互嵌套:- 工作區——租戶邊界。工作區的每個成員共享相同的防護欄和防火牆政策目錄。 沒有東西跨越工作區邊界——在工作區 A 撰寫的政策對工作區 B 不可見。
- 政策——一個命名的、工作區範圍的規則集(防護欄或防火牆政策)。 編輯政策會在下次請求時對附加到它的每個金鑰生效,無需重新部署。
- 金鑰——身份加上附加。金鑰攜帶自己的限制並指向治理它的政策。
2. 金鑰攜帶什麼
每個 API 金鑰是一捆限制和附加。在金鑰編輯器(/console/token)中設定這些——
建立或編輯金鑰需要 Developer 角色或更高。
| 欄位 | 它限制什麼 | 設定所需的最低角色 |
|---|---|---|
model_limits | 將金鑰限制為特定的模型清單——任何在該清單之外的呼叫都會在離開閘道之前被拒絕。 | Developer |
allow_ips | IP 允許清單。來自任何未列出地址的請求在驗證層被拒絕。空意味著允許所有 IP。 | Developer |
credit_limit_usd | 以美元計的支出上限。0 意味著無限制。閘道針對金鑰的終生支出強制執行這一點。 | Developer |
expired_time | 絕對到期時間戳。-1 意味著金鑰永不過期。 | Developer |
environment | 一個自由格式的標籤(例如 prod、staging、dev),用於組織金鑰和過濾日誌。 | Developer |
guardrail_id | 將特定防護欄附加到此金鑰。該金鑰發出的每次呼叫都由該防護欄篩查。 | Developer |
firewall_policy_id | 將特定防火牆政策附加到此金鑰。該金鑰發出的每次工具呼叫都由該政策評估。 | Developer |
is_firewall_gateway | 將金鑰標記為閘道範圍的權杖——呼叫 MCP 派發和評估鉤子路由所需。普通金鑰在這些路由上會得到 403。讀取閘道金鑰的明文需要 Admin。 | Admin(啟用和讀取明文都需要) |
3. 政策解析順序
對於任何請求,OrcaRouter 獨立解析作用中的防護欄和防火牆政策:- 金鑰附加——如果金鑰有明確的
guardrail_id(或firewall_policy_id) 且該政策存在且已啟用,則它適用。 - 工作區預設值——如果金鑰沒有附加,則套用工作區已啟用的
is_default防護欄(或政策)。 - 不強制執行——如果兩者都未設定,請求在沒有內容篩查或工具呼叫強制執行的情況下通過。
兩個平面在附加政策被_停用_時有所不同:
- 停用或刪除的防護欄附加意味著金鑰沒有防護欄——停用它是關閉開關;它不回退到工作區預設值。
- 停用的防火牆附加回退到工作區預設防火牆政策——所以停用防火牆附加將金鑰恢復到工作區預設值,它不會關閉強制執行。
0/未設定)附加總是回退到工作區預設值;兩者都未設定意味著不強制執行。4. 最小代理權限金鑰——每個代理一個金鑰
最安全的設定是給每個代理自己的窄範圍金鑰,而不是在所有呼叫者之間共享一個工作區金鑰。 只呼叫一個模型並執行排程任務的代理的精心範圍化金鑰可能看起來像:model_limits:["openai/gpt-4o-mini"]——代理不能切換到更昂貴或更有能力的模型。allow_ips: 排程器的外向 CIDR——沒有其他來源可以提供此金鑰。credit_limit_usd: 每週預算上限——失控的迴圈無法耗盡你的工作區餘額。expired_time: sprint 或部署生命週期的結束——金鑰自動過期,無需手動清理。guardrail_id: 特定於此代理資料敏感度的防護欄——比工作區預設值更嚴格。firewall_policy_id: 只允許此代理合法需要的工具的政策。
只為 MCP 派發或評估鉤子表面建立閘道範圍的金鑰(
is_firewall_gateway)——
永遠不要為一般推理流量使用。推理路徑上的閘道金鑰給呼叫者提供了對
/api/v1/firewall/* 路由的存取,這比它需要的能力更廣。一個金鑰,一個用途。5. 政策在哪裡撰寫
防護欄和防火牆政策都是工作區範圍的,在所有成員之間共享,但更改需要正確的角色:- 讀取任何防護欄、政策或金鑰——任何工作區成員。
- 建立或更改防護欄、防火牆政策、MCP 伺服器、自主等級、審批動作和普通 API 金鑰——Developer+。
- 在金鑰上啟用
is_firewall_gateway;讀取閘道金鑰的明文——Admin+。
6. 下一步
安全代理基準
推薦的起始姿態——一個自主等級開關,然後從真實流量調整。
取得 API 金鑰
建立你的第一個金鑰並在主控台中附加防護欄或防火牆政策。
