这里的一切都绑定到你的工作区并从控制台配置。你的应用继续用每个
租户的
sk-orca-... 密钥调用
https://api.orcarouter.ai/v1/chat/completions——只有网关中的策略发生
变化。配置动作需要每个步骤点明的角色;只有 /v1/* 中继调用使用一个
租户密钥。1. 多租户 AI 安全模型
一个多租户网关比一个单一应用有不同的威胁形态。重要的风险随租户数量 扩展:密钥泄露 = 一个租户的爆炸半径
一个泄露的租户密钥不应能耗尽你的账户、调用你从未暴露的模型,或
超出那个租户的预算。
跨租户数据渗漏
一个租户的 PII 落入共享日志,或落入一个路由给另一个租户的响应,会
破坏你的数据隔离承诺。
一个吵闹的租户智能体
一个租户的智能体在一个工具上循环或抓取任意主机,不应让其他所有人的
网关降级。
按租户合规
一个受监管的租户可能需要你其余租户都不需要的 PII 掩码和数据驻留。
2. 基线:一条每个租户都继承的工作区策略
在工作区级别一次性编写你的安全姿态,这样每个租户密钥默认继承它 ——无需按租户复制。一条默认防护栏
在 Guardrails → New guardrail 中,编写一条命名策略(例如
任何没有明确防护栏附加的租户密钥都回退到这个默认值。编写一条
防护栏需要 Developer 角色。
tenant-baseline)并把它标记为工作区默认(is_default)。加一条
PII 规则,stage input,action mask,这样没有租户的请求会
携带原始 PII 到上游:一条默认防火墙策略
如果你的租户运行智能体,在动作平面上做同样的事:在
Firewall → Policies 中编写一条默认策略,或者——更快——打开
Firewall → Posture 并应用
balanced
自治级别。那会审计每个
租户的工具调用并在工作区范围内 flag PII,同时拒绝最具破坏性的动作,
这样你在广泛执行之前先观察真实的租户行为。需 Developer 角色。3. 每租户一个限定范围的密钥
这是租户隔离的核心:绝不跨租户共享一个密钥,也绝不把你账户级别的 密钥交给一个租户。 每租户铸造一个密钥,限定到恰好那个租户可以做的事。 在 API Keys → New key 中,设置:封顶花费(denial-of-wallet 边界)
封顶花费(denial-of-wallet 边界)
将
credit_limit_usd 设为那个租户的上限(0 = 无限)。这是最重要的
单条多租户控制:一个泄露或被滥用的租户密钥永远只能烧掉那个租户的
预算,绝不会烧掉你的账户。参见
denial-of-wallet。钉住模型
钉住模型
打开
model_limits(model_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. 一个具体的两层示例
假设你在一个工作区上运行一个免费层和一个受监管的企业层:- 工作区基线——
tenant-baseline防护栏(输入上 PII mask,卡号/SSN 上 block)作为is_default,加上balanced防火墙自治级别。每个 租户继承这个。 - 免费层租户密钥——没有
guardrail_id(继承基线),model_limits钉到openai/gpt-4o-mini,一个低的credit_limit_usd。 - 企业租户密钥——
guardrail_id设为一条更严格的enterprise-pii防护栏(输入上 PII block 而非 mask;output阶段 secrets block), 一个带更紧工具允许列表的firewall_policy_id,一个更高的额度上限, 以及钉到他们后端的allow_ips。
/v1/chat/completions 端点。网关按密钥
解析正确的策略——你的应用代码对每个租户都相同。
6. 按租户合规与驻留地
一个受监管的租户常常需要一份其余租户不需要的认证。合规作为防护栏和 防火墙的工作区对等物运行:- 浏览框架目录和就绪度对任何 Member 开放且免费——确认一个租户
问到的框架(
soc2、hipaa、gdpr、iso_27001、pci_dss及更多)的 覆盖情况。 - 安装一个包(
POST /api/compliance/packs/:key/install)会把匹配的 防护栏和防火墙策略实例化进你的工作区;它需要工作区 Admin 和一个 付费计划。 - 数据驻留地通过
PUT /api/compliance/residency(Admin)钉住 你的合规报告工件的区域(us/eu/uk/ap/cn/global)。 跨区域读取被拒绝。
这里的驻留地治理的是合规报告工件,而不是推理数据的地理钉定。关于
请求日志的情况:日志默认保留 30 天(硬性封顶 180),而一次用户自删除
运行一个 30 天宽限,然后是一次级联到那个用户的防护栏匹配和请求日志的
PII 擦洗。
7. 从一个工作区观察每一个租户
所有可观测性都是工作区限定的,因此一套信息流覆盖你所有的租户——可向下 过滤到单独一个:- Guardrails → Matches(任何 Member)——跨所有租户触发的每条 规则:类型、动作、stage、细节。匹配的子串仅当该防护栏的 Log raw content 开启时才被记录(默认关闭——隐私保守姿态,这在 多租户中最重要)。标记一个误报以调优(Admin)。
- Firewall → Events / Runs(Developer+)——每一次工具调用,按 智能体运行汇总,因此一个吵闹租户的循环或一个新型 egress 会突出出来。
- Anomaly feed(Member)——对照一个学习到的周内小时基线评分的 速率/成本尖峰,即便每个调用单独都被允许,也能捕捉一个脱离形态地烧钱 的租户。
guardrail_blocked /
firewall_blocked),消耗那个租户无配额,并被标记为 skip-retry
——边界守住了,而不为这次拒绝向租户收费。
8. 去哪里深入
限定密钥、策略、工作区的范围
密钥附加和工作区默认值的完整解析顺序。
防护栏参考
每种规则类型、PII 实体,以及完整的按实体覆盖。
防火墙参考
判定、执行面、自治级别,以及策略平面。
阻止数据外泄
锁定一个租户智能体的出站 egress。
