API 密钥安全指南:防止密钥泄露的 7 个习惯
2026 年,AI API 密钥泄露依然是盗刷重灾区。GitHub 公开仓库里躺着成千上万把还能用的 Key,自动化扫描机器人 24 小时在扒;一把泄露的 Key 平均能在被吊销前造成数千美元的损失。更糟的是,很多泄露根本不是黑客「攻破」了什么,而是开发者自己的习惯问题。这篇文章给出防止密钥泄露的 7 个习惯——全部来自真实事故复盘,照着做,你基本不可能成为下一个受害者。
习惯 1:密钥永远不进前端与客户端
浏览器里跑的 JavaScript、移动 App、桌面客户端,里面的任何字符串用户都能扒出来。规则只有一条:密钥只存在于你的服务端。前端调用时走后端代理接口,由后端持有密钥转发请求。这既是安全要求,也是接入 AI 聊天时的标准架构——把密钥藏进后端,用户只看到你的业务接口。
习惯 2:环境变量与密钥管理服务
密钥不进代码库,进环境变量或专门的密钥管理服务(Vault、云厂商 KMS)。具体操作:
- 本地开发用 .env 文件,且 .env 必须写进 .gitignore;仓库里只提交 .env.example 模板。
- 生产环境用密钥管理服务或 CI 平台的 secrets 功能注入,而不是写死在配置里。
- 部署配置里出现明文密钥的,立即替换并轮换。
习惯 3:最小权限与密钥分组
一把 Key 走天下是最危险的做法。按项目、按环境(开发/测试/生产)、按用途(聊天/批处理/报表)拆成多把 Key:
- 某把泄露时,影响面只限于对应项目,吊销重建 1 分钟搞定。
- 用量报表按 Key 拆分,异常流量一眼可见。
- 只给 Key 它需要的权限和额度,遵循《LLM API 安全指南》里的权限最小化原则。
习惯 4:定期轮换
密钥不是设置一次就完事的。至少每 90 天轮换一次;员工离职、外包项目结束、疑似泄露,立即轮换。轮换流程要提前设计好:新 Key 先上线,观察稳定后吊销旧 Key,避免「轮换即事故」。
轮换频率最好和企业安全策略对齐:有合规要求(SOC 2、等保)的团队,把轮换周期写进制度并保留审计记录;没有强制要求的,至少每季度一次。轮换时要同步检查下游:哪些服务在引用这把 Key,别换完才发现某条流水线静默失败。
习惯 5:限流与用量告警
防不住泄露,就限住损失:
- 每个 Key 设置日/月用量上限与速率限制,被盗刷时损失封顶。
- 设置用量告警:日消耗超过阈值立刻通知。DrAI 控制台的用量统计按小时更新,异常账单几分钟内就能发现——别等到月底对账才发现被刷了几千美元。
- 监控调用来源与模型分布,异常模式(凌晨批量调用、罕见模型)触发人工核查。
在 DrAI 控制台,每个 Key 都有独立的额度与速率设置,还能一键暂停——发现异常的第一反应应该是「先停掉」而不是「先排查」。平台侧的限流与应用侧限流是两道独立的保险,都要有。
习惯 6:git 历史与扫描工具
即使现在代码里没有密钥,git 历史里可能还躺着旧密钥。两个动作:
- 接入密钥扫描工具(如 gitleaks)到 CI,任何提交里出现疑似密钥模式立即拦截。
- 检查历史提交:全文搜 key / secret / token 模式,发现的密钥一律视为已泄露,吊销重建。历史清理(filter-repo)可以做,但记住——已公开过的密钥必须轮换,清理历史只是亡羊补牢。
扫描规则要跟上 Key 格式的演化:除了 sk- 开头的 OpenAI 风格密钥,还要覆盖 Anthropic、Gemini 以及各类聚合平台的 Key 前缀,把你能想到的模式都写进正则。
习惯 7:事件响应预案
假设泄露已经发生,你的操作手册应该长这样:
- 立即吊销泄露 Key,阻断损失。
- 审计该 Key 的用量:调用了什么模型、消耗了多少 token、有没有异常出口。
- 评估数据影响:请求里有没有 PII?日志里有没有泄露更多敏感信息?
- 排查泄露途径:仓库历史、日志文件、客户端代码、第三方服务。
- 复盘改进:补上对应的习惯 1~6 缺口。
预案写下来、演练一次,真出事时你才不会手忙脚乱。
泄露事故的三个典型剧本
- 剧本一:提交进公开仓库——开发者把 .env 提交到 GitHub 公开仓库,几分钟内被扫描机器人扒走,当夜开始盗刷。止损动作:立即吊销、全部 Key 轮换、打开用量告警。
- 剧本二:前端硬编码——网页或小程序把 Key 写死在 JS 里,用户打开开发者工具就能看到。这类泄露往往持续数周才被发现,直到某个爬虫把它送进公开索引。
- 剧本三:日志与截图——调试时把请求头打进日志、截图发到群里或技术社区。日志要脱敏,截图要打码,这是很多人最后才补的课。
三个剧本的共同点:都不是「黑客多厉害」,而是「习惯多松懈」。对照前面的 7 个习惯,每个剧本都有对应的止损按钮。
自查清单
把下面 7 项全部打勾,你的密钥安全就到位了:
- □ 前端 / 客户端代码中无任何密钥
- □ 密钥只存在于环境变量或密钥管理服务
- □ .env 已加入 .gitignore
- □ 密钥按项目 / 环境拆分
- □ 90 天内轮换过
- □ 限流与用量告警已开启
- □ CI 里有密钥扫描
密钥安全是LLM API 安全整体方案的一部分,建议和提示注入防线一起落地。最后提醒:无论用哪家平台,在 DrAI 注册后在控制台创建密钥时,请按项目命名、按环境拆分——这是你 10 秒钟就能完成的第一道保险。
🚀 现在就体验这些模型
注册 DrAI,一个 API Key 即可调用 GPT-5 系列、Claude 4、DeepSeek R1、Gemini 2.5 Pro 等 40+ 模型,Pro 套餐仅 $9.99/月。
免费注册 → 查看定价