SuperAPI AI 工具集

private-secret-scanning

通用与其它

查看项目

更新于 10-15 22:40

技能介绍

用途:GitHub 的推送保护与密钥扫描对公开仓库免费,私有仓库需付费许可。本技能为私有和共享仓库提供确定性的本地替代方案:固定版本的 Gitleaks 二进制、三种扫描范围,以及在本机拦截泄露的 Git 钩子。

主要能力:全部通过随技能提供的 scripts/secret-scan.sh 运行,仅需 Bash 3.2+、git、curl 和 python3。扫描范围包括 staged(仅暂存差异,用于 pre-commit)、push [RANGE](推送即将发送的提交,用于 pre-push,新分支或标签按完整历史扫描)、history(所有引用可达的每个提交,含后来删除的文件)。退出码:0 无泄露,1 发现泄露(逐条输出到 stderr),2 扫描器或配置错误;脚本失败即关闭,缺 Gitleaks、版本不符、配置缺失、报告不可读等情况一律退出 2 而非 0。报告每条仅含 RuleID、File、StartLine、Commit、Fingerprint 五个字段,不含密钥、匹配内容或源码行,以 0600 权限写入。

使用方式:先执行 install 安装固定版本 Gitleaks 8.30.1(安装前校验 SHA-256),再 self-test 验证本机行为,然后在仓库中运行 history --report 做一次性审计,最后 install-hooks 写入 pre-commit 与 pre-push 钩子。脚本自动读取仓库根目录的 .gitleaks.toml 与 .gitleaksignore,钩子仅在其已提交(staged 扫描为已暂存)后生效。可用 SECRET_SCAN_CONFIG 指定外部共享配置。

适用场景与限制:适合私有仓库首次接入扫描、私有转公开前的历史审计,以及在 CI 中做本地 --no-verify 无法跳过的二次检查(需 fetch-depth: 0,且仅在托管运行器或可信分支推送时运行,切勿在自托管运行器上执行不可信 PR 代码)。已提交后删除的密钥仍留在历史中,只有 history 能发现,且只能通过轮换凭据修复,重写历史无法撤销已发生的克隆。接入旧仓库时应先轮换所有有效凭据,再把指纹写入 .gitleaksignore 作为基线;allowlist 应保持狭窄,.gitleaks.toml 必须以 [extend] useDefault = true 开头,否则会关闭全部检测器。升级需同时修改 GITLEAKS_VERSION 与四个哈希并重跑 self-test;GITLEAKS_BIN 可指定自装二进制,但仍须报告固定版本。公开副本中不要加入仓库清单、主机路径、凭据或真实发现,报告应放在被扫描仓库之外或被 gitignore 的路径。