gitleaks 核心功能
核心功能
gitleaks 的规则体系用 TOML 描述,一条规则就是一个 [[rules]] 表。理解字段含义就能自己扩规则。
| 字段 | 作用 |
|---|---|
id | 规则唯一标识,报告与统计都按它聚合 |
description | 人类可读的说明,出现在报告里 |
regex | 主匹配正则,决定候选字符串 |
secretGroup | 指定正则里的哪个捕获组才是真正的密钥内容,用于「前缀 + 值」这类结构 |
entropy | 熵值阈值,例如 3.5。低于阈值的候选直接丢弃,是抑制误报的主力 |
keywords | 预过滤关键词。只有文件里出现这些词,规则才会真正跑一遍,用来提速 |
path | 把规则限定在特定路径下生效 |
allowlist | 白名单,含四个常用子项:regexes(内容级排除)、paths(路径级排除)、commits(按提交 SHA 排除)、stopwords(出现这些词就跳过) |
与内置规则并存。自定义配置默认会覆盖内置规则集,想保留内置规则再加自己的,就在配置文件里写 [extend] useDefault = true,然后追加 [[rules]]。这是企业环境里最常见的写法——内置规则覆盖通用场景,自定义规则覆盖公司内部格式。
其他关键能力。基线抑制:--baseline-path 传入一份历史报告,之后只报新增项,适合接进存量很大的老仓库;脱敏输出:--redact 把密钥内容打码,报告里只留可识别的少量字符,避免报告本身成为泄露渠道;报告格式:--report-format sarif|json|csv,SARIF 可直接上传到 GitHub Code Scanning 或 GitLab 的安全面板;摘要开关:GITLEAKS_ENABLE_SUMMARY 等环境变量控制输出摘要的详细程度,具体变量名以官方文档为准。
退出码语义。这一点对门禁最重要:扫描完成且未发现泄露时退出码为 0;发现任何命中即为非零。这意味着不需要任何额外判断,直接把 gitleaks 放进流水线步骤里,它天然就是一个门禁。

