安全地管理 API key
API key 应该放在环境变量或 secret manager 里——绝不能放进代码、仓库或 prompt。一旦泄露,唯一重要的事就是立刻吊销。
为什么这很重要
一个 API key 就像一张信用卡:谁拿到它,谁就能拿着你的账单发请求。公开仓库会被自动扫描,找这类 key——攻击者和防护系统都会这么做。
规则一:绝不能放进代码、仓库或 prompt
key 不应该出现在源代码里,不应该进 git 仓库,也不应该出现在 chat prompt 里。本地的标准做法是:把 key 放进一个 .env 文件——再在 .gitignore 里加一条记录,确保它永远不会被提交。Anthropic 明确推荐的正是这套做法。
规则二:环境变量和 secret manager
在本地,你的程序应该从环境变量里读取 key。在生产环境,Anthropic 建议使用加密的 secret 存储(各云厂商提供的 secret manager),而不是 dotenv 文件。
规则三:定期轮换,限制权限
定期轮换 key(Anthropic 举的例子是每 90 天一次),为开发、测试、生产环境分别使用不同的 key,并且只给每个 key 完成任务所需的最小权限——这就是 OWASP 指南里的最小权限原则。
一旦泄露
立刻吊销并更换。只删除那个 commit 是不够的:GitHub 明确指出,泄露的 secret 必须先被吊销或轮换——因为 git 历史记录可能早就已经被克隆或缓存了。
示例
与其在代码里写 `apiKey = "sk-ant-..."`:把 key 放进 .env(.env 已经在 .gitignore 里),代码里读取 `process.env.ANTHROPIC_API_KEY`——生产环境则使用云厂商的 secret manager。
🛠️ 练习——自己动手试试
在一个练习项目里搭建 .env 模式,并确认没有 key 会进入仓库。
- 创建一个带有占位变量的 .env(不要放真实 key),并把 .env 加进 .gitignore。
- 创建一个只有变量名、没有值的 .env.example,只提交这一个文件。
- 用 `git status` 检查 .env 有没有作为新文件出现——并在代码里通过环境变量读取这个值。
✅ 自查清单
- ☐ `git status` 里出现 .env 了吗?(如果出现了:检查一下 .gitignore 里的记录)
- ☐ 代码或 prompt 里有没有哪个地方把 key 写成了明文字符串?
- ☐ 你知道该去哪里立刻吊销你的真实 key 吗(厂商的 console/dashboard)?
小测验
你的 API key 不小心出现在了一个公开仓库里。正确的第一步是什么?
来源
- Anthropic Help Center:API Key Best Practices ↗ support.claude.com
- OWASP Cheat Sheet:Secrets Management ↗ cheatsheetseries.owasp.org
- GitHub Docs:Removing sensitive data from a repository ↗ docs.github.com