Skip to content
ProductOctober 19, 2026

我们如何保护你的供应商 Key

AnyRouter 如何保存和使用你添加的供应商 Key(BYOK)以及捐给 Pool 的 Key:静态加密、谁能读取、Key 能发往哪里、哪些内容不进日志,以及如何撤销。

简短版本

你添加的供应商 Key 在写入数据库之前就已加密。Dashboard 和 API 只显示打码的预览,不会显示 Key 本身。只有在需要向你添加该 Key 的供应商发请求时,Key 才会在内存中解密,并且只发往该供应商的地址。

AnyRouter 需要替你使用 Key 来发请求,所以我们的服务器在那一刻能解密它。本文说明有哪些限制,以及我们不做哪些承诺。

Key 如何保存

  • 每个 Key 都用 AES-256-GCM 加密,每个 Key 有自己的随机盐和随机 nonce。
  • 加密密钥由主密钥通过 HKDF-SHA-256 和该盐派生。主密钥不在数据库里,而是存放在 Cloudflare Secrets Store,由需要它的后端服务读取。
  • 以当前格式写入的 Key,其密文与你的工作区绑定。从一个工作区的行里复制出来的密文,无法作为另一个工作区的 Key 解密。
  • 在我们加入更强的密钥派生之前写入的行仍可解密,但在重新加密之前不与工作区绑定。维护脚本可以把所有已存 Key 重新加密为当前格式,或换成新的主密钥。

由于主密钥与数据库分开,单独拿到数据库副本只得到密文。

谁能读取

  • 你能看到打码预览:前四个和后三个字符。保存 Key 之后,没有任何页面或 API 会返回完整值。
  • 管理工具显示同样的预览,不会返回已存密文或 Key。
  • 其他成员永远拿不到 Key。使用捐赠 Key 的请求由我们的网关发出,调用方只会得到模型的回答。

Key 能发往哪里

Key 只会发往它所属的供应商。大多数供应商通过我们登记的固定地址访问,对这些供应商,添加 Key 时自定义 base URL 会被拒绝。

对于由你提供端点的供应商(例如自建服务器),URL 必须使用 HTTPS,不能是 IP 地址或本地地址,并且有登记主机时必须在该供应商的登记主机上。Azure AI Foundry 端点必须在 Azure 主机上,Bedrock 和 Vertex 上的 Claude Key 会检查其预期的主机和区域。这些检查在每次请求时都会重新执行,而不只是在你保存 Key 时。

Pool 请求会忽略捐赠者 Key 上的任何自定义 base URL,捐赠的 Key 只会发往其供应商的登记地址。

哪些内容不进日志

我们不会把 Key 写入日志。Key 唯一可能回到我们这里的地方是供应商自己的错误信息,因为有些供应商在拒绝请求时会把你发送的 Key 原样回显。在存储、记录或转发上游错误内容之前,我们会删除该请求所用的确切 Key,包括原文、URL 编码和 JSON 转义三种形式。这对任何 Key 格式都有效,而不只是我们能按前缀识别的那些。

撤销 Key

  • 在 Dashboard 或 API 中删除 Key。加密的行会被删除,由该 Key 支撑的 Pool 捐赠也随之结束。
  • 如果该 Key 已捐赠,Pool 的选择缓存会在同一次请求里刷新,所以被删除的 Key 会立刻停止为其他成员服务。
  • 也可以原地替换 Key,而不是删除。新 Key 会先向供应商验证,旧 Key 在被替换后会立刻从 Pool 缓存中移除。

在这里删除 Key 不会在供应商处取消它。如果你认为 Key 已泄露,请同时在供应商控制台撤销。

如果你把 Key 捐给 Pool

捐赠的 Key 就是你在 BYOK 下添加的那一行加密数据,我们不会再复制一份。控制权仍在你手里:

  • 随时暂停、恢复或撤回。
  • 限制每分钟请求数。
  • 选择仅免费覆盖,或按模型自定价格的付费覆盖。
  • 持续失败或触及供应商限额的 Key 会被自动暂停。

Pool 的用量会出现在你的供应商账号上,你需要遵守供应商的条款。能打开整个云账号的 Key,例如 Bedrock、Vertex 或 Foundry 上的 Claude,不能捐赠。

我们不做哪些承诺

主密钥由我们持有,所以后端在运行期间被攻破时,正在使用的 Key 可能暴露。因此我们让持有它的服务数量保持很少,并备好轮换所需的重新加密工具。

如果供应商提供,请为 Key 设置消费上限,只授予所需的权限,不再使用时在供应商处撤销。

两分钟发第一笔请求

用自己的 key 免费开始,或充值按 token 计费。Go 每月 $4 额度 — $2/月,或捐一把 provider key 免费开通。

开始使用