ggshield 提交前阻断密钥泄露
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/block-secret-leaks-before-commit-or-push-with-ggshield。
技能介绍
密钥泄露的拦截窗口已经前移
当你在本地敲下 git commit,或者在 CI 流水线里执行推送时,泄露的密钥往往已经离开了你能控制的边界。等到平台端告警再回头翻历史提交,成本通常已经发生在日志、镜像层或备份快照里。这个技能要解决的问题很直接:在工位或 CI 作业离开之前,用 ggshield 扫描暂存更改、提交或代码库中的机密,而不是依赖后续平台端的捕获。
技能如何工作
- 暂存更改扫描:聚焦
git diff --staged范围内的新增内容,避免无关改动放大噪音。 - 提交级校验:在
git commit前检查即将写入对象库的内容,拦截误提交的 API key、私钥片段或云凭证。 - 代码库扫描:可选对当前工作副本或历史文件进行更广范围探测,适合作为推送前的兜底检查。
- 可选增强:如果配置了 GitGuardian API 密钥,检测器覆盖更完整;未配置时仍可执行本地规则检测。
关键步骤通常包括:识别变更对象、对变更内容执行扫描、根据结果选择修正或确认继续。它不改变你的 Git 工作流,只是把判断点放在离开之前。
适用边界与注意点
- 本地扫描能显著降低泄露面,但不等于零泄露:凭据可能早已进入 shell 历史、构建日志或第三方工具缓存。
- 安装无法自动提取基于源码的安装或使用说明。在敏感工作流中运行此技能之前,请审查上游项目。
- 若团队使用不同 Git 客户端或 CI Runner,建议先在测试分支验证触发时机,避免误阻断正常变更。
- GitGuardian API 密钥属于可选能力,不应为了完整覆盖而把密钥放入明文环境变量或日志输出。
使用场景
- 本地开发提交代码前,扫描暂存区新增内容,拦截误粘贴进 diff 的 API key
- CI 流水线在推送前扫描变更文件,防止数据库密码明文写入提交历史
- 推送共享仓库前,对工作副本做一次代码库扫描,排查是否残留云凭证
- 配置了 GitGuardian API 密钥后,在敏感项目提交前运行更完整的检测器覆盖
适合人员
- 频繁在本地提交代码的后端工程师,希望密钥不随提交记录泄露到远端
- 负责 CI 流水线的 DevOps 工程师,想在推送步骤前自动拦截明文凭证
- 维护含历史密钥仓库的安全工程师,需要定期排查提交历史里的残留凭据
- 使用 GitGuardian 的团队管理员,希望在提交前获得更完整的检测覆盖