如何用huskyCI+GitLeaks揪出代码库泄露的AWS密钥:秘密扫描配置完整实战指南
【免费下载链接】huskyCIPerforming security tests inside your CI项目地址: https://gitcode.com/gh_mirrors/hu/huskyCI
你是否担心过 AWS 密钥、SSH 私钥被误提交到代码仓库?本文将带你用开源工具huskyCI集成GitLeaks秘密扫描,在 CI 流水线中自动揪出代码库泄露的 AWS 密钥,把密钥泄露拦截在部署之前。无需深厚安全背景,跟着本文 4 步即可完成配置。
为什么需要秘密扫描?
把AWS_SECRET_ACCESS_KEY写进配置文件、再把配置文件提交进 Git,是新手最常见的安全隐患。这类泄露删掉代码也没用——密钥仍留在历史提交里,任何人都能翻到。
- 🕵️ 人工 review 很难发现隐藏在几百个文件里的密钥
- ⚠️ 只查当前代码不够,还要扫 Git 历史记录
- 🚦 最好在 CI 阶段自动拦截,而不是等泄露上生产环境
GitLeaks 正是为此而生的秘密扫描工具:它内置大量正则规则,能识别 AWS Secret Key、私有 SSH 密钥、各类 API Key 等,并且会遍历整个 Git 历史而不只是最新提交。
huskyCI 如何让秘密扫描融入 CI
huskyCI 是一个开源安全测试编排平台:你只需在 CI 流水线中加一个 huskyCI 阶段,它会自动在容器里跑起 GitLeaks 等扫描器,把所有结果(严重级别、文件、行号、提交、作者)集中存入数据库,方便后续分析和度量。
工作流程很简单:
- CI 阶段调用 huskyCI API,提交仓库地址与分支
- huskyCI 自动识别代码语言,并行启动 GitLeaks、Gosec、Bandit 等扫描容器
- 结果入库,按 High / Medium / Low 分级输出到 CI 日志
- 发现高危泄露时,流水线直接失败,阻断部署
所有扫描结果还能在 Dashboard 里以图表形式长期跟踪:
相关实现可以看看:API 侧的扫描编排逻辑在
api/securitytest/run.go,GitLeaks 结果解析与严重级别映射在 api/securitytest/gitleaks.go,扫描容器镜像定义在 deployments/dockerfiles/gitleaks/Dockerfile。
一键部署 huskyCI 本地环境
先用 Docker Compose 把 huskyCI 跑起来(需要 Docker 环境):
git clone https://gitcode.com/gh_mirrors/hu/huskyCI cd huskyCI/deployments docker compose up -dCompose 文件位于 deployments/docker-compose.yml,它会拉起三个核心服务:
| 服务 | 作用 |
|---|---|
api | huskyCI API,负责编排所有安全扫描,端口 8888 |
dockerapi | 供 API 拉取扫描容器(如 GitLeaks 镜像) |
mongodb | 集中存储扫描结果,支撑 Dashboard 统计 |
启动后访问 API 的POST /token接口创建你的访问令牌(Husky-Token),后续 CLI 会用到。
配置 CI 阶段:让 GitLeaks 自动跑
huskyCI 提供了命令行客户端,只需在流水线中加一段:
# 1. 安装 huskyci CLI(源码位于 cli/ 目录,入口见 cli/main.go) # 2. 配置目标地址与令牌 huskyci target set --endpoint https://your-huskyci:8888 --token YOUR_TOKEN # 3. 在仓库根目录执行分析 huskyci run .CLI 会自动打包当前目录、发送给 API 扫描、轮询状态并打印漏洞详情,相关逻辑见 cli/cmd/run.go。在 CI 环境中也可以用环境变量配置,无需手动改文件:
HUSKYCI_CLIENT_API_ADDR:huskyCI API 地址HUSKYCI_CLIENT_TOKEN:访问令牌
若发现高危级别泄露,huskyci run会以非零退出码结束,流水线自然失败——这正是我们想要的"门禁"效果。
读懂扫描结果:AWS 密钥算什么级别?
huskyCI 会为每个 GitLeaks 命中的问题标注标题、文件、行号、严重级别和对应代码。严重级别映射规则(源码见 api/securitytest/gitleaks.go):
| 级别 | 命中规则示例 |
|---|---|
| 🔴 HIGH | SSH 密钥、RSA / PKCS8 / PGP / EC 私钥 |
| 🟡 MEDIUM | AWS Secret Key、Google Cloud API key、Stripe API key、Twilio API key 等云厂商/支付密钥 |
| 🟢 LOW | 其他硬编码凭据类 |
扫描输出示例(简化):
[HUSKYCI][!] Title: Hard Coded AWS Secret Key in: config/app.py [HUSKYCI][!] Severity: MEDIUM [HUSKYCI][!] File: config/app.py [HUSKYCI][!] Line: AWS_SECRET_ACCESS_KEY = 'AKIA...'此外,GitLeaks 结果中还包含提交哈希、作者、提交时间,你可以直接定位是谁在哪个 commit 泄露的密钥。两个贴心细节:
vendor/、node_modules/目录下的命中会被自动跳过,减少噪音- 项目过大导致扫描超时时,会生成一条 Low 级别提示而不是静默失败
揪出泄露后的补救清单
发现 AWS 密钥泄露后,按顺序做这 4 件事:
- 立即吊销密钥:到云控制台禁用并轮换该 Access Key(比删代码更重要!)
- 清理 Git 历史:用
git filter-branch或 BFG 工具清除含密钥的历史提交并强推 - 检查云账单与访问日志:确认密钥是否已被滥用
- 保持 huskyCI 门禁常开:让 GitLeaks 成为每次提交前的自动关卡,防再犯
总结
用 huskyCI + GitLeaks 做秘密扫描,核心就三步:Docker Compose 起服务 → CI 加一个huskyci run阶段 → 按 High/Medium/Low 分级响应。配置成本低,却能把 AWS 密钥泄露这类高危事故挡在部署之前。如果你管理着多个仓库,huskyCI 的数据库 + Dashboard 还能帮你长期追踪各仓库的安全趋势。现在就给你的 CI 加一道秘密扫描门禁吧!🔐
【免费下载链接】huskyCIPerforming security tests inside your CI项目地址: https://gitcode.com/gh_mirrors/hu/huskyCI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考