跳转到主要内容
你正在构建一个 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,action 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 自治级别。那会审计每个 租户的工具调用并在工作区范围内 flag 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换入一条更严格的命名防护栏(例如 block-on-PII)。
firewall_policy_id换入一条更紧的防火墙策略(例如默认拒绝工具)。
两个平面之间解析不同——了解这个差别:
一个明确的 guardrail_id(当它存在且已启用时)总是适用,永远不会 静默回退。如果那个附加的防护栏被禁用,密钥就得到没有防护栏 ——它不会降到工作区默认值。让 guardrail_id 保持不设置(0/null) 以继承 tenant-baseline 默认值。
一个附加的 firewall_policy_id 在它存在且已启用时适用;如果那条策略 被禁用,密钥回退到工作区默认防火墙策略。(这与防护栏的关闭 开关行为相反——按设计如此。)
编辑一条命名策略会在下一次调用时切换附加到它的每一个密钥。如果 多个租户共享一条更严格的策略,一次编辑会同时命中所有它们。当租户需要 真正不同的规则时,每个隔离类用一条独立的命名策略,而不是一条庞大的 共享策略。

5. 一个具体的两层示例

假设你在一个工作区上运行一个免费层和一个受监管的企业层:
  1. 工作区基线——tenant-baseline 防护栏(输入上 PII mask,卡号/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)。 跨区域读取被拒绝。
这里的驻留地治理的是合规报告工件,而不是推理数据的地理钉定。关于 请求日志的情况:日志默认保留 30 天(硬性封顶 180),而一次用户自删除 运行一个 30 天宽限,然后是一次级联到那个用户的防护栏匹配和请求日志的 PII 擦洗。
要做一次完整的受审计证据运行,参见 生成 SOC 2 证据为 HIPAA 部署

7. 从一个工作区观察每一个租户

所有可观测性都是工作区限定的,因此一套信息流覆盖你所有的租户——可向下 过滤到单独一个:
  • Guardrails → Matches(任何 Member)——跨所有租户触发的每条 规则:类型、动作、stage、细节。匹配的子串仅当该防护栏的 Log raw content 开启时才被记录(默认关闭——隐私保守姿态,这在 多租户中最重要)。标记一个误报以调优(Admin)。
  • Firewall → Events / RunsDeveloper+)——每一次工具调用,按 智能体运行汇总,因此一个吵闹租户的循环或一个新型 egress 会突出出来。
  • Anomaly feedMember)——对照一个学习到的周内小时基线评分的 速率/成本尖峰,即便每个调用单独都被允许,也能捕捉一个脱离形态地烧钱 的租户。
一个被拦截的请求返回 HTTP 400guardrail_blocked / firewall_blocked),消耗那个租户无配额,并被标记为 skip-retry ——边界守住了,而不为这次拒绝向租户收费。

8. 去哪里深入

限定密钥、策略、工作区的范围

密钥附加和工作区默认值的完整解析顺序。

防护栏参考

每种规则类型、PII 实体,以及完整的按实体覆盖。

防火墙参考

判定、执行面、自治级别,以及策略平面。

阻止数据外泄

锁定一个租户智能体的出站 egress。