先止血,再复盘。发现 Key 泄露时,第一动作是停用或切换,而不是先找是谁提交的。

一、什么算可疑

  • Key 出现在公开仓库、截图、日志或第三方工具里。
  • 来自不认识的 IP。
  • 请求模式与业务正常曲线不符。
  • 存在大量 401 / 403 / 429。
  • 单 key 消耗突然暴涨 3 倍以上。

二、标准处置流程

紧急步骤
1. 立即停用或编辑该 Key
2. 生成新 Key
3. 业务侧更新新 Key
4. 检查近 7 天日志,确认异常调用范围
5. 撤销可能被泄露的部署凭据
6. 记录时间线和影响金额
7. 复盘根因并改进

三、如何安全轮换

  • 先创建新 Key,不要直接删除旧 Key。
  • 业务里按 Key 名称或环境变量切换。
  • 旧 Key 设为只读或提高限流,观察 24 小时。
  • 确认没有再消耗后,再停用。
  • 同时更新 CI/CD、客户端和服务器上的所有配置。

四、常见泄露点

  • 前端代码。
  • 公开 Git 仓库。
  • 上传到对象存储的截图或日志。
  • 桌面工具的配置文件。
  • 把生产 Key 交到临时第三方工具里测试。

五、事后复盘模板

  • 什么时候开始异常?
  • 谁先发现?通过什么告警?
  • 影响多少请求和金额?
  • 是否影响用户业务?
  • 根因是什么?
  • 如何避免再次发生?

六、轮换自动化

大团队里不要靠人记住,建议每个 Key 都有到期时间:

示例
key_rotation_policy:
  default_days: 90
  warn_before_days: 14
  emergency_rotate_hours: 1
  warn_channels: [email, slack]
  grace_period_hours: 24

到期前 14 天提醒,到期前 1 天开始双 Key 并行,到期后统一停用旧 Key。

七、泄露快速判断表

现象优先级动作
公开仓库里发现 KeyP0立即停用并复盘
陌生 IP 出现少量请求P1提高监控并确认来源
生产 Key 放入前端代码P0立即换 Key,不再复用
供应商临时测试使用 KeyP1单独发临时 Key,到期自动停
Key 出现在共享文档P1缩短权限,通知相关人

八、预防措施

  • 生产 Key 存在密钥管理器。
  • 测试 Key 与生产 Key 分开。
  • 所有 Key 有过期时间。
  • 仓库里加 secret scanning。
  • 所有临时测试用一次性 Key。

九、交接文案

出现事故后,先给团队发一段标准文案:

示例
各位,
[时间] 发现 [key_name] 疑似泄露。
已停用旧 Key,业务已切到新 Key。
影响范围正在核对。
预计 [时间] 更新复盘通知。

先通知,再补细节,避免大家在等待完整复盘时继续被动暴露。

十、关键心态

Key 泄露不是丢脸的事,真正的问题是发现后是否处理得快。复盘重点不是惩罚人,而是让下一次不会再因为同一个动作把 Key 暴露出去。

参考:OpenAI API key safety