跳轉到主要內容
你正在構建一個 SaaS,其中許多客戶租戶共享一個程式碼庫與 一個 OrcaRouter 工作區。每個租戶透過你的閘道送出提示並運行代理, 而困難的問題是爆炸半徑:一把外洩的 租戶金鑰、一個失控的租戶代理,或一個租戶的 PII 落入 另一個的日誌——都不能被允許跨越邊界外溢。本配方 串接起讓一個共享閘道租戶安全的三個控制——一把 每租戶範圍限定金鑰、每個租戶繼承的工作區層級政策,以及 某個租戶需要更多時的逐租戶覆寫——全部 從主控台完成,且對你的應用程式碼零更動。
這裡的一切都綁定到你的工作區,並從 主控台設定。你的應用持續以每個租戶的 sk-orca-... 金鑰呼叫 https://api.orcarouter.ai/v1/chat/completions——只有閘道中的政策改變。設定 動作需要每個步驟標明的角色;只有 /v1/* 中繼呼叫使用 一把租戶金鑰。

1. 多租戶 AI 安全模型

一個多租戶閘道有著與一個單一應用不同的威脅形狀。 重要的風險隨租戶數量擴大:

金鑰外洩 = 一個租戶的爆炸半徑

一把外洩的租戶金鑰不該能夠耗盡你的帳號、呼叫 你從未曝露的模型,或觸及該租戶預算之外的地方。

跨租戶資料滲漏

一個租戶的 PII 落入共享日誌,或落入一個路由到 另一個租戶的回應,破壞了你的資料隔離承諾。

一個吵雜的租戶代理

一個租戶的代理在一個工具上迴圈或擷取任意主機, 不該為其他所有人劣化閘道。

逐租戶合規

一個受監管的租戶可能需要你其餘租戶不需要的 PII 遮罩與資料駐留地。
下方的模型是兩個層次:每個租戶金鑰繼承的工作區基準, 加上在不觸及其他租戶的情況下收緊某個租戶的逐金鑰範圍與覆寫。關於完整的解析規則,參見 範圍金鑰、政策、工作區

2. 基準:每個租戶繼承的一條工作區政策

在工作區層級一次撰寫你的安全姿態,這樣每個 租戶金鑰都預設繼承它——無需逐租戶複製。
1

一條預設防護欄

Guardrails → New guardrail 中,撰寫一條命名的政策(例如 tenant-baseline)並把它標記為工作區預設值is_default)。 加入一條 PII 規則,stage input,動作 mask,這樣沒有任何租戶的 請求會把原始 PII 帶往上游:
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "credit_card", "ssn", "ip"],
  "entity_actions": { "credit_card": "block", "ssn": "block" }
}
任何沒有明確防護欄附加的租戶金鑰都會回退到 這個預設值。撰寫一條防護欄需要 Developer 角色。
2

一條預設防火牆政策

如果你的租戶運行代理,在動作平面上做同樣的事:在 Firewall → Policies 中,撰寫一條預設政策,或——更快——開啟 Firewall → Posture 並套用 balanced 自主等級。那會稽核 每個租戶的工具呼叫並在工作區範圍標記 PII,同時拒絕 最具破壞性的動作,所以你在廣泛強制執行之前觀察真實的租戶行為。Developer 角色。
observe → shadow → enforce 的順序上線基準,這樣一條新規則 就無法在中途弄壞一個租戶。一條防火牆政策支援一個逐政策的 shadow_mode 旗標(強制執行的裁決記錄為 [shadow] would …);從 flag 動作開始你的防護欄規則。參見 強制執行模式

3. 每租戶一把範圍限定金鑰

這是租戶隔離的核心:絕不跨租戶共享一把金鑰, 也絕不把你帳號層級的金鑰交給一個租戶。 每租戶鑄造一把金鑰, 範圍限定到那個租戶恰好可以做的事。在 API Keys → New key 中,設定:
credit_limit_usd 設為那個租戶的上限(0 = 無限制)。這 是單一最重要的多租戶控制:一把外洩或被濫用的 租戶金鑰只能燒掉那個租戶的預算,絕不能燒你的帳號。 參見 denial-of-wallet
開啟 model_limitsmodel_limits_enabled)並只列出那個租戶的 方案所包含的模型——這樣一把外洩的金鑰就無法運行一個 租戶從未付費的昂貴模型。
設定 environment(一個自由格式的部署標籤,例如 prod / staging),這樣一個租戶的流量在你的日誌中就可歸因,且你 可以一眼分辨生產金鑰與測試金鑰。
如果一個租戶從固定伺服器呼叫,把 allow_ips 設為那個租戶的後端外送 IP,並為試用或限時的租戶設 expired_time-1 = 永不過期)。
每個租戶金鑰都自動繼承工作區 tenant-baseline 防護欄與 預設防火牆政策——你鑄造了一把範圍限定金鑰,而它 已經受治理。金鑰在建立後顯示時會被遮罩,所以在你佈建租戶時複製 它一次。

4. 逐租戶覆寫——收緊一個而不觸及其餘

大多數租戶搭乘基準。當某個需要更多時——一個受監管的租戶、 一個企業層級、一個在察看名單上的租戶——把一條更嚴格的命名 政策僅附加到那把金鑰
設定在金鑰上對那一個租戶的效果
guardrail_id換入一條更嚴格的命名防護欄(例如 PII 一律 block)。
firewall_policy_id換入一條更緊的防火牆政策(例如預設拒絕工具)。
兩個平面之間的解析不同——了解差異:
一個明確的 guardrail_id(當它存在且啟用時)總是 套用且永不靜默回退。如果那個附加的防護欄被 停用,金鑰就會得到沒有防護欄——它不會掉到 工作區預設值。讓 guardrail_id 保持未設定(0/null)以繼承 tenant-baseline 預設值。
一個附加的 firewall_policy_id 在它存在且啟用時套用; 如果那個政策被停用,金鑰就會回退到工作區 預設防火牆政策。(這與防護欄 關閉開關行為相反——刻意設計。)
編輯一條命名政策會在下次呼叫時轉移附加到它的每把金鑰。 如果多個租戶共享一條更嚴格的政策,一次編輯會一次命中它們 全部。當租戶需要真正不同的規則時,每個隔離類別 使用一條不同的命名政策,而不是一條巨大的共享政策。

5. 一個具體的雙層級範例

假設你在一個工作區上運行一個免費層級與一個受監管的企業層級:
  1. 工作區基準——tenant-baseline 防護欄(輸入 PII 遮罩, 卡號/SSN 一律 block)作為 is_default,加上 balanced 防火牆 自主等級。每個租戶都繼承這個。
  2. 免費層級租戶金鑰——沒有 guardrail_id(繼承基準)、 model_limits 固定到 openai/gpt-4o-mini、一個低的 credit_limit_usd
  3. 企業租戶金鑰——guardrail_id 設為一條更嚴格的 enterprise-pii 防護欄(輸入 PII block,而非 mask; output 階段 secrets block)、一個帶更緊工具允許清單的 firewall_policy_id、一個更高的額度上限,以及 allow_ips 固定到他們的 後端。
兩個層級都用各自的金鑰呼叫同一個 /v1/chat/completions 端點。 閘道為每把金鑰解析正確的政策——你的應用程式碼 對每個租戶都是相同的。

6. 逐租戶合規與駐留地

一個受監管的租戶常常需要其餘租戶不需要的一份證明。合規 作為防護欄與防火牆的工作區同儕運行:
  • 瀏覽框架目錄與就緒度對任何 Member 開放 且免費——為一個租戶詢問的框架確認涵蓋範圍 (soc2hipaagdpriso_27001pci_dss 等等)。
  • 安裝一個包(POST /api/compliance/packs/:key/install) 會把匹配的防護欄與防火牆政策具現化進你的 工作區;它需要工作區 Admin 與一個付費方案
  • 資料駐留地透過 PUT /api/compliance/residencyAdmin)固定你合規報告產物的區域us / eu / uk / ap / cn / global)。跨區讀取會被 扣留。
這裡的駐留地治理合規報告產物,而非 推論資料的地理固定。關於 request-log 的部分:日誌保留 預設為 30 天(硬性上限 180),而一次使用者自我刪除會運行一個 30 天寬限然後一次 PII 洗刷,級聯到那個使用者的 guardrail matches 與 request log。
關於一次完整的受稽核證據運行,參見 產生 SOC 2 證據為 HIPAA 部署

7. 從一個工作區觀察每個租戶

所有可觀測性都是工作區範圍的,所以一組動態涵蓋你所有的 租戶——可以篩選到單一一個:
  • Guardrails → Matches(任何 Member)——跨所有租戶觸發的 每條規則:型別、動作、階段、細節。匹配到的子字串只有在那條 防護欄的 Log raw content 開啟時才會被記錄(預設 關閉——隱私保守的姿態,這在多租戶中最重要)。標記一個誤判以調校(Admin)。
  • Firewall → Events / RunsDeveloper+)——每個工具呼叫,按每個 代理 run 彙整,這樣一個吵雜租戶的迴圈或一個新穎的 egress 就會突出。
  • Anomaly feedMember)——對照一個習得的週小時基準評分的 速率/成本飆升,即使每個呼叫個別都被允許,也能捕捉一個租戶燒出常態。
一個被封鎖的請求回傳 HTTP 400guardrail_blocked / firewall_blocked),消耗那個租戶零配額,並被標記為 skip-retry——邊界守住了,卻沒有為那次拒絕向租戶 收費。

8. 往哪裡深入

範圍金鑰、政策、工作區

金鑰附加與工作區預設值的完整解析順序。

防護欄參考

完整的每種規則型別、PII 實體與逐實體覆寫。

防火牆參考

裁決、介面、自主等級,以及政策平面。

停止資料外洩

鎖定一個租戶代理的外送 egress。