Gitleaks扫描:如何避免显示历史提交中的失败记录?
解决Jenkins中Gitleaks扫描显示历史失败记录的问题
Gitleaks默认会扫描整个仓库的历史提交,所以即便你修复了问题,旧的漏洞记录还是会被检测出来。试试这几种方法来只关注新的或当前的问题:
仅扫描增量提交(推荐)
不要执行全量扫描,只针对最新的提交或本次变更的内容扫描。在Jenkins的Gitleaks执行命令里添加参数:- 扫描当前提交:
gitleaks detect --commit=$GIT_COMMIT - 扫描上一次到当前的提交差异:
gitleaks detect --diff=HEAD~1..HEAD
Jenkins会自动提供$GIT_COMMIT、$GIT_PREVIOUS_COMMIT这类环境变量,直接用来指定扫描范围即可。
- 扫描当前提交:
生成基线文件忽略已修复漏洞
先跑一次全量扫描导出基线文件,把已有的漏洞记录存进去,后续扫描就会自动忽略这些旧问题:- 生成基线:
gitleaks detect --report-format json --output baseline.json - 后续扫描指定基线:
gitleaks detect --baseline baseline.json
注意:每次修复完一批漏洞后,最好重新生成基线,避免漏掉新出现的问题。
- 生成基线:
配置规则排除特定历史漏洞
如果只是少数特定的历史提交漏洞需要排除,可以修改.gitleaks.toml配置文件,添加排除规则:[[rules]] id = "exclude-historical-secrets" description = "忽略已修复的历史秘密" regex = '''匹配你要排除的秘密正则''' exclude-commits = ["abc123def456", "789ghi012jkl"]把需要排除的提交哈希填到
exclude-commits里,就能跳过对应提交的漏洞检测。仅扫描变更的文件
在Jenkins流水线里,先获取本次构建变更的文件列表,再让Gitleaks只扫描这些文件:CHANGED_FILES=$(git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT) gitleaks detect --files $CHANGED_FILES这种方式适合只关心本次修改带来的问题,完全跳过历史未变更的文件。
内容的提问来源于stack exchange,提问作者Samyutha Rj
相关产品推荐
相关产品推荐

