如何让 GitHub PR 中的 GitGuardian 忽略测试密钥?
结论
先确认 PR 检查由哪种集成触发,再按对应方式处理:
- 如果是 GitGuardian GitHub App 提供的服务端检查,应在 GitGuardian dashboard 中处理对应的 incident。仅在
.gitguardian.yaml中忽略 secret,不会让 dashboard 同步忽略它。 - 如果是 GitHub Actions 工作流运行
ggshield,可以使用.gitguardian.yaml,但需要修正问题中的 YAML 缩进。
ggshield 的本地忽略规则不会同步到 dashboard,本地忽略的 secret 仍可能在 dashboard 中产生 incident。官方忽略命令说明
先确认失败的是哪一个检查
打开 PR 中失败检查的详情,查看检查提供方和运行日志。如果链接指向 GitGuardian 的 incident 页面,按服务端检查处理;如果指向 GitHub Actions,查看工作流是否执行了 ggshield 或使用了 GitGuardian/ggshield-action。官方 Action 是在 GitHub Actions 中运行 ggshield 的方式。官方 Action 仓库
同一个仓库可能同时启用这两种检查。修复一个检查的配置后,另一个检查仍可能报告相同的值。
GitGuardian GitHub App:在 dashboard 中忽略测试凭据
确认这个值确实只是没有实际访问能力的测试数据后,可以这样处理:
- 从 PR 检查详情进入对应的 GitGuardian incident。
- 将 incident 标记为
Ignored,选择测试凭据对应的原因。 - 重新运行相关检查,确认是否还有其他未处理的 incident。
GitGuardian 将 Ignored 归为关闭状态。对于已忽略的 incident,后续发现相同 secret 的新 occurrence 不会重新打开该 incident 或触发告警。Incident 状态说明
Dashboard 中已关闭的 secret incident 不再由 GitHub check runs 报出。如果工作区启用了跳过操作,也可以在检查详情中使用 Skip: test credential;管理员可以禁用这些按钮。跳过检查和在 dashboard 中维护 incident 状态是不同的操作,不能仅凭跳过成功就判断 incident 已永久忽略。GitHub PR 检查说明
ggshield:修正 YAML 层级
如果实际运行的是 ggshield,配置应写成:
version: 2
secret:
ignored_matches:
- match: "kQH5HW/8p1uGOVjbgWA7FunAmGO8lsSUXNsu3eow76sz84Q18fWxnyRzBHCd3pd5nE9qa99HAZtuZuj6F1huXg=="
name: signature test key
原配置有两个层级问题:
ignored_matches应位于secret下。name应与match属于同一个列表项。
原来的写法可能仍能被 YAML 解析,但得到的结构不符合 ggshield 的配置要求。给字符串加引号不能修复层级问题。
match 支持填写 secret 原值,也支持使用扫描输出提供的 SHA256 标识。上面的示例使用了问题中给出的测试值。ggshield 配置说明
如何确认 ggshield 读取了配置
在已安装并完成认证的 ggshield 环境中,从仓库根目录执行:
ggshield --config-path .gitguardian.yaml secret scan path aaa.txt
显式指定配置文件路径,可以排除因当前工作目录不同而读取其他配置的情况。使用 --config-path 指定文件后,ggshield 不再同时读取默认的本地和全局配置。配置文件选择规则
该命令用于检查当前 aaa.txt 的扫描结果,不能据此认定 GitHub App 的 PR 检查也会通过。文件扫描命令说明
为什么添加注释或修改最新文件仍可能无效
问题中尝试的 gitguardian: ignore 和 ggshield: ignore 没有相应文档依据,不能据此认为 PR 检查会跳过该行。针对当前问题,建议优先使用上述有文档支持的 incident 操作或配置文件规则。
GitGuardian GitHub App 会扫描 PR 中的各个 commit,而不只是最终文件状态。即使在后续 commit 中删除了测试值,较早的 commit 仍可能包含它。排查时应查看检查详情中的 commit SHA 和文件路径,确认告警指向哪次提交。PR 扫描范围说明
备注:内容仅供参考。
