Platform

应该使用 API 密钥还是 OAuth 令牌?如何轮换密钥?

服务使用 API 密钥,授权工具使用 OAuth 令牌;在服务采用替代密钥期间完成轮换。

定时发送程序应在配置它的员工离职后继续运行。而代表该员工操作的工具则需要遵循其权限的访问方式。

根据这一归属关系选择凭据。不要将任何凭据暴露在浏览器代码或日志中,因为持有凭据的任何人都可以尝试发起已认证的请求。

每种凭据能做什么?

API 密钥代表工作区操作。OAuth 令牌让授权工具代表个人操作。

Bird API 密钥以 bk_ 开头。其权限属于工作区,因此移除创建者不会使其失效。仅授予服务所需的作用域,以限制密钥泄露后的影响范围。

密钥无法执行组织级操作,例如管理组织成员或账单。增加更多工作区作用域不会移除这一限制。

当你通过 CLI 或 MCP 服务器登录时,你将授权工具使用你的部分权限。工具会收到一个短期的 bt_ 令牌。令牌续期由工具管理,因此不要将该令牌复制到服务的密钥管理器中。

通过 Profile > Connected apps 吊销已授权的工具。使用身份验证来选择作用域,并区分工作区密钥与个人授权。

如何轮换 API 密钥?

签发替代密钥,并在旧密钥的重叠期结束前完成部署。

你可以从仪表板、通过 bird api-keys rotate 或通过 api_keys_rotate MCP 工具进行轮换。CLI 和 MCP 轮换需要具有 api_keys:write 的个人授权。API 密钥无法持有该权限,也无法轮换其他密钥。

轮换操作仅返回替代密钥的 token 一次。请立即保存,因为之后无法再次获取。替代密钥保留旧的名称和 IP 限制。除非你提供新的 scopes,否则权限也会保留。

设置 grace_period 来控制重叠期。其默认值为 24h,因此请在一天内完成部署。旧密钥上更早的过期时间仍然适用,轮换不会延长它。

当泄露的密钥需要立即吊销时,使用 grace_period: "0"。缓存验证仍可能在短时间内接受该密钥,详见下文。

  1. 请求轮换并保存返回的令牌。
  2. 在重叠期结束前将替代密钥部署到每个服务。
  3. 通过服务日志确认使用替代密钥的请求已成功。
  4. 等旧密钥过期,或在切换完成后将其吊销。

轮换参考涵盖了该命令及其选项。

轮换过程中可能出什么问题?

响应丢失可能导致替代密钥已签发但你从未保存其令牌。

重试轮换请求时使用相同的 Idempotency-Key,以便 Bird 重放其响应。一个密钥只能轮换一次。如果没有使用相同的幂等键,重复轮换将返回 409。对替代密钥执行轮换可用于后续的计划变更。

已吊销的密钥无法轮换。如果原密钥已被吊销,请创建新密钥。

替代密钥没有过期时间,即使原密钥有。你无法在事后添加过期时间。当密钥必须在已知时间停止工作时,请使用 expires_at 创建新密钥。

对于部署时长不确定的情况,创建第二个密钥并自行管理重叠期。在吊销原密钥之前部署新密钥。轮换的宽限期在请求发出后无法延长。

吊销多快生效?

已吊销的密钥在缓存验证过期期间,最多五秒内仍可能被接受。

在该窗口期内,应将泄露的密钥视为仍可使用。吊销是永久性的,已吊销的密钥无法重新激活。Bird 会保留其记录以供审计。

在与支持团队沟通时,使用 key_prefixfingerprint 来标识密钥。切勿包含完整凭据,因为这些标识符足以区分密钥而不会授予访问权限。

应该选择哪种凭据?

根据谁拥有工作负载以及所需的权限来选择。

  1. API 密钥: 需要独立于创建者持续运行的服务。
  2. OAuth 授权: 在个人权限范围内操作的 CLI 或代理。
  3. 轮换: 可在已知重叠期内部署的替代密钥。
  4. 带过期时间的新密钥: 必须在特定时间停止工作的凭据。

简而言之

  1. 服务凭据属于工作区。

    密钥在其创建者离开后仍然有效。使用 OAuth 的工具在授权者的权限范围内操作。

  2. 在轮换重叠期内完成部署。

    旧密钥默认在 24 小时内继续有效,除非其现有过期时间更早。

  3. 在签发时立即保存替代密钥。

    轮换操作仅返回新令牌一次。如果需要重试轮换请求,请使用相同的幂等键。

  4. 吊销存在短暂的传播窗口。

    缓存验证可能在最多五秒内仍接受已吊销的密钥,因此在泄露后需考虑这一延迟。

付诸实践。

继续查阅此主题的文档、指南和示例。资源为英文。

获取实施简报

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

你的下一个创意。
随时连接。