一个将 Trivy 漏洞扫描器结果集成到 SonarQube 分析中的插件。该插件读取 Trivy SARIF 报告并在 SonarQube 中创建安全问题,使您能够在现有的 SonarQube 工作流程中进行全面的安全分析。
- SARIF 集成: 无缝导入 Trivy 漏洞报告的 SARIF 格式
- 多严重级别支持: 处理严重、高、中、低级别的漏洞
- 质量门集成: 为质量门条件提供指标
- 全面指标: 跟踪严重、新增、重新出现和唯一漏洞
- 自动问题创建: 从 Trivy 发现自动创建 SonarQube 问题
- Docker 支持: 包含 Docker Compose 设置,便于测试
- SonarQube: 9.9 或更高版本
- Java: 11 或更高版本
- Maven: 3.6 或更高版本
- Trivy: 最新版本(用于生成 SARIF 报告)
- 从 发布页面 下载最新插件 JAR
- 将 JAR 文件复制到 SonarQube
extensions/plugins目录 - 重启 SonarQube
# 克隆仓库
git clone https://github.com/seanly/sonar-trivy-plugin.git
cd sonar-trivy-plugin
# 构建插件
mvn clean package
# 将构建的插件复制到 SonarQube
cp target/sonar-trivy-plugin-9.0.0.jar /path/to/sonarqube/extensions/plugins/
# 重启 SonarQube# 启动预装插件的 SonarQube
docker-compose up -d
# 访问 SonarQube: http://localhost:9000
# 默认凭据: admin/admin在 SonarQube 项目设置中配置插件:
| 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|
| Trivy SARIF 文件路径 | trivy.sarif.file.path |
trivy-report.sarif |
Trivy SARIF 报告文件的路径 |
- 转到 管理 → 质量配置
- 选择项目的质量配置
- 搜索 "Trivy" 规则
- 激活所需的漏洞规则:
- 严重 - 严重安全漏洞
- 高 - 高级别安全漏洞
- 中 - 中级别安全漏洞
- 低 - 低级别安全漏洞
将 Trivy 指标添加到质量门:
- 转到 管理 → 质量门
- 添加以下条件:
- 严重漏洞
- 新增漏洞
- 重新出现漏洞
- 唯一漏洞
# 完整扫描(漏洞、密钥、配置错误)
./scan.sh
# 快速扫描(仅漏洞)
./quick-scan.sh# 安装 Trivy(如果尚未安装)
# 参见: https://aquasecurity.github.io/trivy/latest/getting-started/installation/
# 运行 Trivy 文件系统扫描
trivy fs \
--format sarif \
--output trivy-report.sarif \
--severity CRITICAL,HIGH,MEDIUM,LOW \
--scanners vuln,secret,config \
.# 配置 SonarQube 连接
export SONAR_HOST_URL="http://localhost:9000"
export SONAR_TOKEN="your-sonar-token"
# 运行 SonarQube 扫描器
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.sources=src \
-Dtrivy.sarif.file.path=trivy-report.sarif- 问题: 将 Trivy 漏洞作为 SonarQube 问题查看
- 指标: 在项目概览中检查漏洞计数
- 质量门: 在质量门中监控安全指标
插件提供四个关键指标:
| 指标 | 描述 |
|---|---|
| 严重漏洞 | 严重安全漏洞的数量 |
| 新增漏洞 | 新检测到的漏洞数量 |
| 重新出现漏洞 | 重新出现的漏洞数量 |
| 唯一漏洞 | 唯一漏洞的总数 |
src/main/java/org/sonarsource/plugins/trivy/
├── TrivyPlugin.java # 主插件入口点
├── TrivyVulnerabilitySensor.java # 处理 SARIF 文件的传感器
├── TrivyProcessor.java # SARIF 文件处理器
├── TrivyDataStore.java # 数据存储和管理
├── AddTrivyComment.java # 添加漏洞链接的后置作业
├── config/
│ ├── Properties.java # 插件配置属性
│ ├── TrivyMetrics.java # 指标定义
│ └── TrivyVulnerabilityRulesDefinition.java # 规则定义
└── model/
└── TrivyData.java # 数据模型
# 构建项目
mvn clean package
# 运行测试
mvn test
# 使用 Docker 运行
docker-compose up -dDocker 设置包含调试端口:
- Web 服务器: 端口 8001
- 计算引擎: 端口 8002
将您的 IDE 连接到这些端口进行调试。
项目包含一个全面的 Trivy 配置文件,涵盖:
- 扫描器: 漏洞、密钥和配置错误扫描
- 严重级别: 严重、高、中、低
- 跳过模式: 排除构建工件和临时文件
- 缓存设置: 针对开发工作流程优化
配置 SonarQube 项目设置:
sonar.projectKey=my-project
sonar.projectName=我的项目
sonar.projectVersion=1.0
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=your-token
trivy.sarif.file.path=trivy-report.sarif- Fork 仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m '添加精彩功能') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
- 问题反馈: GitHub Issues
- 文档: Wiki
- 邮箱: [email protected]
由 Seanly Liu 用 ❤️ 制作