测试中的密钥管理是什么
测试用的账号、令牌与密钥应通过环境变量或密钥管理注入,不提交进仓库:本地用 .env(列入 .gitignore),CI 用平台密钥变量,测试代码只引用变量名。密钥进仓库的代价是长期的:即使回退提交,历史里仍可能残留,一旦推送到远端就应视为泄露并轮换。
基本信息
| 注入方式 | 环境变量、CI 密钥变量、密钥管理服务 |
|---|---|
| 本地实践 | .env 文件加 .gitignore,样例文件用占位值 |
| CI 实践 | 平台密钥变量注入,日志脱敏 |
| 最小权限 | 测试账号按环境隔离,仅授予用例需要的权限 |
| 泄露处置 | 进入远端历史即轮换密钥,不只是回退提交 |
本地与 CI 思路
本地与 CI 思路
# 本地示例:变量来自 .env 或 shell 环境
export API_TOKEN=... # 不写入仓库
export TEST_ENV=staging
# CI 中由平台密钥变量注入同名变量
# 测试代码只引用变量名:os.environ["API_TOKEN"]典型使用场景
- 接口测试:令牌经环境变量注入,代码里没有字面量。
- 数据库测试:测试库账号独立于生产账号且权限最小。
- CI 流水线:密钥变量与日志脱敏同时配置。
- 报告归档:失败构件上传前检查是否含敏感字段。
- 轮换演练:定期更换测试密钥,验证注入流程可用。
- 新人上手:样例 .env 提供占位值,照做即可本地跑通。
提交进仓库的令牌即使回退提交,历史里仍可能残留;一旦进入远端历史应直接轮换密钥。
密钥扫描工具接入提交钩子与 CI,让问题在提交时被拦住,而不是上线后审计发现。
测试环境也要权限最小化:共用管理员账号会让误操作影响面扩大。
样例配置用占位值并注明获取渠道:新人知道去哪申请,才不会把真实值贴回文件。