首页/安全/漏洞与攻击面速查/代码仓库与镜像中的凭据泄露管理
暴露面收敛45 条

代码仓库与镜像中的凭据泄露管理

凭据泄露常发生在代码提交与镜像层:开启仓库的密钥扫描与推送保护,镜像构建时不保留凭据层;已经泄露的凭据按『吊销→轮换→清理→验证』处理。

漏洞与攻击面速查安全更新于 2026-10-13

凭据泄露管理是什么

凭据泄露常发生在两处:代码提交(把密钥、口令、Token 写进仓库)与镜像层(构建时把凭据固化进镜像)。管理动作分两层:预防靠仓库密钥扫描、推送保护与提交前钩子;处置按「吊销 → 轮换 → 清理 → 验证」顺序执行。顺序不能颠倒,先删代码不轮换等于什么都没做。

基本信息

预防手段仓库密钥扫描、推送保护、pre-commit 钩子、CI 阶段扫描
重灾区CI 变量、示例配置文件、测试脚本中的真实值
处置顺序吊销 → 轮换 → 清理 → 验证
镜像场景构建使用 --secret 或多阶段构建,避免凭据层留在镜像里

处置顺序

处置顺序
1. 吊销:立即在源端禁用/删除泄露的凭据
2. 轮换:生成新凭据并更新部署(评估影响面与回滚方式)
3. 清理:从代码与镜像中移除;历史提交清理需团队协调
4. 验证:确认旧凭据不可用,调用日志无异常
5. 预防:pre-commit 钩子 + CI 扫描 + 推送保护

仓库侧核查示例

仓库侧核查示例
git log -p --all -- . | grep -nE 'AKIA[0-9A-Z]{16}|BEGIN [A-Z ]*PRIVATE KEY|password\s*=' | head
# 或使用密钥扫描工具对工作区与历史做全量检查,注意输出不要回贴到工单
# 镜像侧:检查是否存在包含凭据的层,发现后重建镜像而不是在原镜像上修改

典型使用场景

  • 收到密钥扫描告警:按处置顺序执行并记录时间线
  • 外包交付验收:检查代码仓库与镜像中是否夹带真实凭据
  • CI/CD 改造:把凭据统一改为平台凭据库注入,去掉明文变量
  • 上线前检查:确认示例配置文件里是占位符而不是真实值
  • 事件响应:评估凭据泄露时间窗内的异常调用记录

泄露渠道与对策

渠道典型表现对策
代码提交配置文件中有真实密钥推送保护 + 提交前扫描
镜像层凭据写死在 Dockerfile构建密钥注入,多阶段构建
日志输出调试日志打印密钥日志脱敏与级别控制
第三方托管外部仓库或文档含密钥统一搜检并纳入供应商要求
把真实凭据写进示例配置是常见的习惯性错误:示例值一律用占位符,由部署环境注入,避免示例成为泄露源。
历史提交重写(强制推送)能清理内容,但缓存副本、派生分支与已克隆的本地仓库不受影响,因此清理动作必须与轮换配合。

易错点

  • 删除了提交中的密钥但未轮换:历史版本与镜像层中仍可找到旧值
  • 只扫描当前代码不扫描历史提交,早期的泄露点被忽略
  • 凭据写在 CI 变量中且对所有流水线可见,任一项目被入侵即全部泄露
  • 扫描告警只在个人邮箱,值班换人后无人跟进处置
  • 把泄露的凭据输出到工单或聊天群,等于二次扩散

数据来源与参考

  • GitHub 文档(密钥扫描与推送保护)
  • Docker 文档(构建密钥 BuildKit --secret)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌