把代码分享出去前,值得先确认有没有把服务密码或访问令牌写进文件。这些用来证明访问权限的值,统称为"凭据"。先别拿真实密码测试,用一份无效假数据把流程练通,才容易知道工具到底在检查什么。
我们用开源工具 Trivy v0.76.1 做了一个小练习:一份假样例命中1项,替换成另一份样例后复扫0项。这个结果只验证自定义练习规则与操作流程,没有验证识别所有真实凭据的准确率。

环境先说清楚
本期实际运行环境是 macOS Apple Silicon。CPU就够,不用GPU、Docker、模型API或服务账号。下文命令针对macOS的终端;其他系统请从官方发行版选择对应架构,我们整理的Windows/Linux入口未实测。
首次从GitHub下载程序需要网络。本次只用文件内凭据扫描,不做漏洞检查,不需要漏洞数据库;这不代表Trivy全部功能都不需要数据库或联网。
1. 从固定官方下载并核对文件
先新建一个只放练习内容的文件夹,进入它。不要把真实密钥放进去。以下下载地址固定为macOS Apple Silicon的v0.76.1,其他架构不能照用。
bash
mkdir -p repogo-trivy-practice
cd repogo-trivy-practice
curl --fail --location \
https://github.com/aquasecurity/trivy/releases/download/v0.76.1/trivy_0.76.1_macOS-ARM64.tar.gz \
-o trivy_0.76.1_macOS-ARM64.tar.gz
shasum -a 256 trivy_0.76.1_macOS-ARM64.tar.gz
输出的SHA-256应为下面这一串。SHA-256可以理解为文件内容的指纹,用来确认拿到的文件与预期一致;它不等于软件安全审计。
text
11a9b6cd2752011b54f01ea4bd0dbfa9f0c41dc6538d5a3f9d23955f471bf4e5
与固定release的官方trivy_0.76.1_checksums.txt一并核对。一致后再执行:
bash
tar -xzf trivy_0.76.1_macOS-ARM64.tar.gz -O trivy > trivy
chmod 700 trivy
./trivy --version
成功标志是Version: 0.76.1。不一致就停止,重新从固定官方release取得文件;不要改掉校验值凑成功,也不要关闭系统防护。
2. 创建两份完全无效的样例
bash
mkdir -p practice reports
cat > practice/demo.txt <<'EOF'
REPOGO_DEMO_TOKEN=REPOGO_PRACTICE_ONLY_1234567890
EOF
cat > practice-secret.yaml <<'EOF'
rules:
- id: repogo-demo-only
category: Custom
title: RepoGo fake practice marker
severity: HIGH
regex: 'REPOGO_PRACTICE_ONLY_[0-9]{10}'
keywords:
- REPOGO_PRACTICE_ONLY_
EOF
YAML是带缩进的配置文件格式,这里它告诉工具:找出特定前缀后接十位数字的文本。缩进用空格,保持示例层级。这个特意设计的标记不是真实供应商令牌;不要用它推断内置规则能否识别你的真实凭据。
3. 扫描,再修改,再扫描
在同一个终端中定义一个便于重复的命令:
bash
scan_demo() {
TRIVY_CONFIG="$PWD/no-default-config.yaml" ./trivy \
--cache-dir "$PWD/cache" fs \
--scanners secret --skip-version-check --disable-telemetry --offline-scan \
--secret-config "$PWD/practice-secret.yaml" \
--format json --exit-code 1 --output "$PWD/reports/$1.json" "$PWD/practice"
}
scan_demo before
echo "本次扫描退出码:$?"
我们设置了--exit-code 1:命中时返回1。它在这一步是预期结果,不是安装失败。打开reports/before.json,确认Secrets中有一项,RuleID为repogo-demo-only。如果报告没有生成,先看终端真实错误,不能把任意退出码1都理解为成功。
再改掉假标记:
bash
cat > practice/demo.txt <<'EOF'
REPOGO_DEMO_TOKEN=READ_FROM_ENV_AT_RUNTIME
EOF
scan_demo after
echo "本次扫描退出码:$?"
成功标志是退出码0,reports/after.json里没有凭据发现。占位文字只是演示"别把值直接写进文件",并未实际实现读取环境变量。

几个容易误会的地方
- 发现0项不等于安全。 文件跳过规则、允许规则、供应商格式和扫描范围都会影响结果。这次只证明一条假数据规则与复扫流程。
- 只扫描指定练习目录。 命令最后的
practice就是扫描范围,别擅自改成家目录或整个磁盘。真实报告可能含本地路径与内容,分享前脱敏。 - 下载网络失败和扫描报错分开看。 官方发行包下载失败先处理网络;本练习不用漏洞库,遇到漏洞库下载说明命令或配置范围可能变了。
- 删了字符串,不代表撤销了凭据。 如果真实值曾经公开,应先在对应服务撤销/轮换,核查使用记录,再按团队流程清理Git历史和副本。

上图对应公开的 RepoGo 练习包,不是上文手工步骤。包里的 start.sh、start.cmd 是一键练习入口,报告在 .runtime/reports/;本文手工操作的报告在 reports/,两种入口选一种即可。Windows/Linux 入口尚未实测。
这不是常驻服务,没有浏览器端口;扫描结束进程就退出,中途可Ctrl+C。保留需要的规则、样例和报告;更新版本时重新核对release和校验值,不直接替换版本号绕过验证。
来源与交付
原项目由Aqua Security维护,Apache-2.0许可:github.com/aquasecurit... 。固定版本:github.com/aquasecurit... 。规则说明:trivy.dev/docs/v0.76/... 。
RepoGo知识星球已整理本期中文手册、固定版本下载校验入口、假样例、排错和三系统说明。前述公开练习包包含 RepoGo 原创的中文启动入口、假样例与手册;Trivy 程序仍从原作者官方发行页下载。上面的公开步骤也可独立完成练习。我们分享运行知识与原创包装,不冒称上游作者或官方合作。
本文由AI协助整理;macOS本期流程实跑,Windows/Linux和真实供应商规则识别率未实测。三图为原创示意及真实结果重新排版,不是终端截图。欢迎在站内讨论步骤,请勿贴真实密码、令牌或完整报告。