已合并
feat: 新增gitleaks敏感信息检测 #5416
feat: 新增gitleaks敏感信息检测 #5416
已合并
thickhair创建于 7月8日
thickhair
thickhair成员
7月8日

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

引入gitleaks二进制离线扫描工具
新增pre-commit/.gitleaks.toml配置,继承官方全部检测规则
配置pre-commit钩子,提交前自动扫描密钥硬编码风险。

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

【功能验证】

image.png

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 thickhair 的贡献)
thickhairthickhair成员
7月8日 创建了 pull request,commit eb104a2a
atomgit-bot
atomgit-bot
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.0redact = truemaxMatchLength = 2048scanGitHistory = false
  • 预留规则扩展与屏蔽接口:配置文件中以注释形式提供了全局批量禁用内置规则(disabledRules 数组)、新增自定义业务检测规则([[rules]] 格式)、全局白名单([[allowlists]])、代码行内局部屏蔽(# gitleaks:allow)以及全文件屏蔽(# gitleaks:skip-file)等用法的示例,当前均未启用
  • 白名单语法占位:为满足 Gitleaks 新版语法要求,添加 [[allowlists]] 段包含占位空正则 paths = ["^$"] 以通过配置加载校验,实际不放开任何文件
likedislike
atomgit-bot
atomgit-bot
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

⛔ 需要修改

likedislike
ascend-robot
ascend-robot成员7月8日进行代码检视2
pre-commit/.gitleaks.toml
@@ -0,0 +71,2 @@
71+# 方式1:仅屏蔽当前单行密钥告警(推荐)
72+# access_key = "AKXXXXXXXXXXXXXXXXXXXX" # gitleaks:allow
73+#
ascend-robot
ascend-robot7月8日评论:

此条代码评论区间+71+73

【openlibing.ci】识别到代码检查告警抑制注释,匹配工具:gitleaks,请Committer检视其合理性。

likedislike
thickhair
thickhair成员
7月8日 评论:

屏蔽方式说明

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

/lgtm

likedislike
ascend-robotascend-robot成员
7月10日 添加了label:lgtm
ascend-robotascend-robot成员
7月10日 关闭了关联的issue
ascend-robotascend-robot成员
7月10日 合入了pull request
ascend-robot
ascend-robot成员
7月10日 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike