已合并
feat: 新增gitleaks敏感信息检测 #5416
thickhair创建于 7月8日
feat: 新增gitleaks敏感信息检测 #5416
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 thickhair 的贡献)atomgit-bot
7月8日 评论:
7月8日 评论:
变更摘要
此次 PR 为项目引入 Gitleaks 敏感信息检测能力,通过 pre-commit 钩子的 local 类型 hook 集成 Gitleaks 本地二进制扫描,在代码提交前自动检测硬编码的密钥、凭证、令牌等敏感信息,防止机密泄露。同时新增了自定义配置文件 pre-commit/.gitleaks.toml,继承内置默认规则并预留了自定义规则、白名单、行内屏蔽等扩展接口。
主要改动
- 新增 pre-commit 本地钩子
gitleaks-offline-scan:在.pre-commit-config.yaml末尾新增一个local类型的 hook,入口为./gitleaks二进制,使用system语言运行,通过pass_filenames: true传递待检测文件,并传入protect、--verbose、--redact及自定义配置路径--config=pre-commit/.gitleaks.toml等参数 - 新增 Gitleaks 自定义配置文件:创建
pre-commit/.gitleaks.toml,通过[extend]段设置useDefault = true继承工具内置的全部密钥检测规则(如 AWS、Git、SSH、OBS 等),并配置全局扫描参数minEntropy = 3.0、redact = true、maxMatchLength = 2048、scanGitHistory = false - 预留规则扩展与屏蔽接口:配置文件中以注释形式提供了全局批量禁用内置规则(
disabledRules数组)、新增自定义业务检测规则([[rules]]格式)、全局白名单([[allowlists]])、代码行内局部屏蔽(# gitleaks:allow)以及全文件屏蔽(# gitleaks:skip-file)等用法的示例,当前均未启用 - 白名单语法占位:为满足 Gitleaks 新版语法要求,添加
[[allowlists]]段包含占位空正则paths = ["^$"]以通过配置加载校验,实际不放开任何文件


ascend-robot
7月8日 评论:
7月8日 评论:
atomgit-bot
7月8日 评论:
7月8日 评论:
代码审查
经过对两个变更文件的全面审查,现在做最终总结。
审查总结
已审查文件:
.pre-commit-config.yaml— 发现 1 个问题 (P1)pre-commit/.gitleaks.toml— 无问题
问题分布:
- P0: 0
- P1: 1
- P2: 0
- P3: 0
总体风险评估: 中高风险。核心问题是 entry: ./gitleaks 指向一个仓库中不存在的二进制文件,且无安装机制提供该文件,这将导致所有已配置 pre-commit 的开发者无法正常提交代码。建议在合入前解决此问题:要么改为 entry: gitleaks 依赖系统 PATH,要么提供二进制获取机制。TOML 配置文件本身结构正确、语法有效,无问题。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 0 |
⛔ 需要修改


pre-commit/.gitleaks.toml
@@ -0,0 +71,2 @@
71+# 方式1:仅屏蔽当前单行密钥告警(推荐)
72+# access_key = "AKXXXXXXXXXXXXXXXXXXXX" # gitleaks:allow
73+#
【openlibing.ci】识别到代码检查告警抑制注释,匹配工具:gitleaks,请Committer检视其合理性。


此处折叠了86条消息 查看更多
Jingwei Huang
7月10日 评论:
7月10日 评论:
/lgtm


7月10日 添加了label:lgtm
7月10日 关闭了关联的issue
7月10日 合入了pull request
ascend-robot
7月10日 评论:
7月10日 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


【合入来源】
【修改方案】
引入gitleaks二进制离线扫描工具
新增pre-commit/.gitleaks.toml配置,继承官方全部检测规则
配置pre-commit钩子,提交前自动扫描密钥硬编码风险。
【资料变更】
【接口变更】
【功能验证】
【CheckList】