环境与配置管理60 条

gitleaks 用法

开源密钥扫描工具:支持全历史检测、规则可扩展、输出脱敏;常用于 CI 流水线与本地 pre-commit。

CI/CD 与发布速查开发更新于 2026-10-13

gitleaks 是什么

gitleaks 是开源的密钥扫描工具:从 git 历史、目录或暂存区检测疑似凭据(API Key、Token、私钥等),规则可自定义、命中可脱敏,输出 JSON 或 SARIF 便于接入报告与门禁。常见组合是「pre-commit 本地拦截 + CI 全历史扫描」双保险:前者拦住新泄漏,后者兜底存量问题。

基本信息

适用平台本地开发机与 CI(GitLab、GitHub Actions 均可集成)
命令gitleaks detect(历史与目录)、gitleaks protect(暂存区)
配置.gitleaks.toml 自定义规则与 allowlist(抑制误报)
输出JSON/SARIF,便于接入报告与门禁

典型使用场景

  • pre-commit 拦截:提交前扫描暂存区,把误提交挡在本地
  • CI 门禁:MR 与主干流水线扫描,命中即失败
  • 历史体检:存量仓库做一次性全历史扫描,制定清理计划
  • 修复验证:凭据轮换与历史清理后扫描确认
  • 合规留痕:留存扫描报告,证明流程内有密钥管控
  • 平台侧推送保护联动:托管平台自带密钥拦截与本地扫描互补,降低漏报

CI 与本地用法

CI 与本地用法
gitleaks detect --source . --report-format sarif \
  --report-path gitleaks.sarif --redact  # 全量扫描,报告脱敏
gitleaks protect --staged --redact  # 提交前只扫暂存内容
# 命中时退出码非零,可直接作为流水线门禁条件
历史扫描的命中要区分「真实凭据」与「示例占位符」:allowlist 精确到路径与规则,别用宽泛忽略换清净。
扫描命中不等于凭据有效:确认是否真实后按「轮换 → 清历史 → 加规则」的顺序处置,顺序颠倒等于先修门后抓贼。

命中后的处置顺序

步骤动作验证方式
一、确认判断是否真实有效查该凭据的使用与访问日志
二、轮换在源头系统吊销并重发旧值确认失效
三、清理重写历史或加说明全历史复扫通过
四、复盘补规则与流程例会跟进改进项
清理历史要协调全团队:改写后所有人本地仓库需要重置,把通知与操作步骤写成预案,避免有人旧克隆把历史推回来。

易错点

  • allowlist 写太宽(整目录忽略):真问题被一起忽略,应精确到规则与文件
  • 只跑增量不跑历史:存量泄漏永远查不到,一次性历史扫描补齐后并入常态
  • 只清理不轮换:泄露过的凭据必须视为已泄露,先轮换再谈清理
  • 规则库长期不更新:新格式令牌漏检,工具版本与规则要跟随升级
  • 误报多到无人看:规则精确到正则与路径,别让团队养成因误报而习惯性忽略扫描结论

数据来源与参考

  • gitleaks 文档(GitHub)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌