密钥管理(secret management) 安全与工程
别名:
密钥 · API key 管理
对 API key、token、密码等敏感配置的处理规范,三条铁律:不进代码、不进 git、不落日志。真实密钥放 .env 且加入 .gitignore,仓库只提交占位模板 .env.example,文件权限收紧到仅当前用户可读。见[第 23 章](/chapters/23-conclusion/)。
三条铁律
密钥管理(secret management)是对 API key、token、密码等敏感配置的处理规范。三条铁律,每条都有具体后果:
| 铁律 | 含义 | 违反的后果 |
|---|---|---|
| 不进代码 | key 不写在源码里,连「默认值」都不写 | key 随代码分发,clone 仓库的人都有 |
| 不进 git | key 放在 .env,并把 .env 加进 .gitignore |
提交历史里永久留下密钥(即便后来删掉,历史里还在) |
| 不落日志 | 打印、报错、trace 里的密钥一律脱敏 | 日志系统一旦被访问,等于全部凭据被拖走 |
落地手段
真实密钥放项目目录下的 .env(KEY=VALUE),程序启动时读取并合并进运行环境;git 里只提交 .env.example(占位模板,值是 sk-live-secret-1234 这种示意),真实 .env 永远在 .gitignore 里;文件权限收紧到 chmod 600 .env——单机部署的机器上,其他登录用户、备份脚本都不该能读到它。合并完成后 apiKey 在进程里是明文(调用 provider 必需),但只能活在内存里,任何输出通道都要走脱敏视图。
在本教程的位置
第 23 章把密钥管理列为 21 个技术点的最后一块(TP21),并与 ch19 的沙箱、ch20 的 trace 一起构成「密钥不落盘、不落网、不落日志」的三不原则。生产差距清单里的下一步是密钥托管与轮换:系统密钥环保管、定期轮换、泄露自动失效——OWASP 的 Secrets Management Cheat Sheet 是权威参考。