跳轉到主要內容
一把沒有來源限制的金鑰是一張純粹的持有者憑證:誰 持有那串字串,誰就能從任何地方出示它。allow_ips 欄位會把 一把金鑰變成一把 IP 白名單 API 金鑰——它只有在從你 列出的某個來源位址出示時才運作。一把從攻擊者機器、 一個住宅代理,或一個被入侵的 CI 執行器上重放的外洩金鑰,會在它 觸及模型之前就被拒絕。 這是最小自主的來源綁定那一半: model_limits 界定一把金鑰可 觸及哪些模型,而 allow_ips 界定金鑰可從何處被出示

1. allow_ips 做什麼

allow_ips 持有一份來源位址或 CIDR 範圍的清單。在每個 請求上,OrcaRouter 會把呼叫者的來源 IP 對照那份清單比對:
  • 匹配 → 請求進入模型限制、配額與政策檢查。
  • 不匹配 → 請求在驗證層HTTP 403access_denied)被拒絕,於任何上游模型呼叫之前。
  • 空清單 → 無限制;金鑰可被任何位址接受。
這個檢查是金鑰通過的第一道閘門,與金鑰有效性並列——它 在防護欄之前、在防火牆之前、在計量之前執行。一個未列出的來源 永遠不會觸及你的政策或你的餘額。
一個空的 allow_ips 意味著所有 IP 都被允許,而非。把它留白 是不受限的預設值——固定金鑰才能讓這個欄位起任何作用。

2. 接受的格式

每個項目是一個單一 IP 一個 CIDR 範圍。兩者可自由混用; 每行列出一個項目。

單一位址

203.0.113.7——恰好一台主機。最適合固定 IP 伺服器或一個 有穩定 egress 位址的 NAT 閘道。

CIDR 範圍

203.0.113.0/24——一整個區塊。最適合雲端子網、一個 VPN 池, 或一個位於單一 egress CIDR 之後的自動擴展群組。
一個裸 IP 匹配那一個位址;一個 CIDR 匹配該區塊中的每個 位址。IPv4 與 IPv6 字面值皆可解析。
固定到仍涵蓋每個合法呼叫者的最狹窄範圍。 單一主機(/32)比 /24 緊;一個 /24 比「任何地方」緊。 你每丟掉一個位元,就會擴大外洩金鑰仍可運作的地點集合。

3. 在主控台中設定它

/console/token 的金鑰編輯器中設定 allow_ips。建立或編輯一把 金鑰需要 Developer 角色或以上。
  1. 開啟 Console → API Keys 並建立或編輯一把金鑰。
  2. 在金鑰編輯器中,於 IP allow-list 欄位輸入你受信任的位址 ——每行一個 IP 或 CIDR。
  3. 儲存。限制會在那把金鑰發出的下一個請求上套用—— 無需重新部署、無需修改代理程式碼。
在你鎖定一把金鑰之前,先驗證閘道所看見的真實來源位址。 如果你的代理位於 NAT、負載平衡器,或一個 egress 代理之後,OrcaRouter 所觀察到的位址是那個 egress 躍點——而非代理的 私有 IP。把 egress 位址加入允許清單,並在你出貨之前從已部署的 環境測試。

4. 一個具體範例:一個排程代理

一個只從單一雲端子網執行、摘要工單的排程工作。把 它的金鑰固定到那個子網,使該憑證在其他任何地方都毫無用處。
欄位效果
allow_ips203.0.113.0/24只有排程器的 egress 區塊能出示這把金鑰
model_limits一個摘要模型無法升級到前沿模型
credit_limit_usd每週上限失控的迴圈無法耗盡餘額
中繼呼叫本身不變——它仍把 sk-orca-… 金鑰當作 持有者權杖使用:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "Summarize this ticket..."}]
  }'
203.0.113.0/24 內部出示時,呼叫進行。從任何其他位址重放 完全相同的請求,閘道就會傳回:
{
  "error": {
    "message": "您的 IP 不在令牌允许访问的列表中 (request id: ...)",
    "type": "orcarouter_api_error",
    "code": "access_denied"
  }
}
模型從未被呼叫,沒有配額被花費,而該拒絕會被記錄。
allow_ips 完全透過主控台金鑰編輯器設定——這是你工作區 工作階段上的一個 Developer 或以上的動作。它沒有中繼金鑰 自助服務:一把金鑰無法擴大它自己的來源允許清單。

5. 一份 IP 允許清單收束什麼、不收束什麼

一把 IP 白名單 API 金鑰界定一把金鑰在何處運作——波及 範圍的一個切片。它與其他範圍欄位組合,而非取代它們。
一張從日誌、一次 git commit,或一台被攻破的筆電中外洩的 憑證,是死重量——除非攻擊者也能從你 允許清單的範圍發起流量。這是這個欄位的核心工作——參見 外洩金鑰了解完整的事故回應。
如果入侵就是一台被允許清單的主機——一個在你自己伺服器上 執行的被下毒依賴項——來源 IP 檢查會通過。把 allow_ipsmodel_limits、一個 花費上限,以及一份 防火牆政策配對,使一個受信任來源的入侵 仍然被界定。
一個 IP 固定不會讓一把金鑰變得短命。把它與一個 絕對到期與一份 輪替排程結合,使一把金鑰既停止從新地點 運作,最終停止運作。

6. 操作筆記

如果你的呼叫者沒有穩定的來源位址(egress 會輪替的 serverless、行動客戶端、寬泛的辦公網路),IP 固定是 錯誤的控制——你要麼鎖住真實流量,要麼擴大 範圍直到它變得毫無意義。改為仰賴 model_limits、花費上限、到期,以及 政策附掛
編輯 allow_ips 會在下一個請求時生效——沒有 傳播延遲需要等候。當你新增一個區域或遷移一個 子網時,先更新金鑰、確認新範圍可運作,然後再丟掉 舊的那個。
allow_ips 存在於個別金鑰上,所以每個代理都能有它自己的 來源綁定。一把排程器金鑰可以固定到一個批次子網,而一把 互動金鑰允許一個更寬的辦公範圍——兩者都在同一個 工作區。

7. 下一步

權杖物件

一把金鑰上的每個欄位,包括 allow_ips,彙整於一份參考。

模型限制

界定一把金鑰可觸及哪些模型——來源 + 範圍綁定的 另一半。

外洩金鑰

一把金鑰一旦暴露的當下該怎麼做。

最小自主檢查清單

讓每把金鑰都走過同一道硬化流程。
一份 IP 允許清單是你能做的最便宜的波及範圍削減:一個欄位、 無需修改程式碼,而一把外洩金鑰就會從所有它本不該執行的地方 停止運作。把它與範圍限定金鑰 模型的其餘部分配對, 以達到縱深防禦。