Liftric/dependency-track-companion-plugin
GitHub: Liftric/dependency-track-companion-plugin
该插件简化了 Gradle 项目与 Dependency Track 持续 SBOM 分析平台的交互,支持自动化执行 SBOM 上传、VEX 生成与风险评分查询等安全编排任务。
Stars: 11 | Forks: 2
# Gradle Dependency Track Companion w Plugin
此 Gradle 插件旨在简化使用 [Dependency Track](https://dependencytrack.org/)(一个持续 SBOM 分析平台)的过程。使用此插件,您可以自动执行 SBOM 文件的上传过程,生成用于组件或漏洞抑制的 Vex 文件等等。
此插件内部应用了 [CycloneDX Gradle 插件](https://github.com/CycloneDX/cyclonedx-gradle-plugin),因此您无需手动将其包含在您的项目中。
## 功能
该插件提供了多个 task:
- `createProject`:创建一个 Project
- `generateSbom`:生成 SBOM(底层运行 [cyclonedx-gradle-plugin](https://github.com/CycloneDX/cyclonedx-gradle-plugin) 中的 "cyclonedxBom")
- `uploadSbom`:上传 SBOM 文件。
- `generateVex`:生成 VEX 文件。
- `uploadVex`:上传 VEX 文件。
- `analyzeProject`:触发对特定项目的漏洞分析
- `riskScore`:获取风险评分。如果风险评分高于指定值,该 task 将失败。
- `getOutdatedDependencies`:获取过期的依赖项。
- `getSuppressedVuln`:获取已抑制的漏洞。
- `runDepTrackWorkflow`:为 CI/CD 运行 `generateSbom`、`uploadSbom`、`generateVex` 和 `uploadVex` task。
### Task 配置
每个 task 都需要在您的 `build.gradle.kts` 中指定某些输入。每个 task 的配置如下:
#### createProject
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `projectName`:您想要创建的 Project 名称
- `projectVersion`:*可选* - 您想要创建的 Project 版本
- `projectActive`:*可选* - 默认为 true,设置为 false 以创建非活跃的 Project
- `projectTags`:*可选* - 为您的 Project 添加标签
- `parentUUID`:*可选* - 用于在父项目中创建
- `ignoreProjectAlreadyExists`:*可选* - 默认为 false,设置为 true 以忽略“Project 已存在”错误
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### uploadSbom
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `inputFile`:*可选* - 默认值:build/reports/bom.json
- `autoCreate`:*可选* - 默认值:false
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `parentUUID`:*可选* - 用于在父项目中创建
- `parentName`:*可选* - 用于在父项目中创建
- `parentVersion`:*可选* - 用于在父项目中创建
- `ignoreErrors`:*可选* - 用于在上传期间忽略错误以防止构建失败(默认:false)
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### generateVex
- `vexComponent`:*可选* - 用于抑制某一个组件中的漏洞
- `vexVulnerability`:*可选* - 用于抑制所有组件中的漏洞
- `inputFile`:*可选* - 默认值:build/reports/bom.json
- `outputFile`:*可选* - 默认值:build/reports/vex.json
#### uploadVex
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `outputFile`:*可选*(默认值 "build/reports/vex.json")
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### riskScore
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `riskScore`:*可选* - 如果风险评分高于指定值,用于使 task 失败。
- `timeout`:*可选* - 如果指定,task 将等待风险评分计算完成。默认值:0 秒
- `maxRiskScore`:*可选* - 如果指定,当风险评分高于指定值时,task 将失败。
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### analyzeProject
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### getOutdatedDependencies
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
#### getSuppressedVuln
- `url`:Dependency Track API URL
- `apiKey`:Dependency Track API KEY
- `projectUUID`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectName`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `projectVersion`:*可选* - 您需要设置 UUID 或 projectName 和 projectVersion
- `disableStrictTLS`:*可选* - 用于禁用严格的 TLS 检查,例如自签名证书(默认:false)
## 示例配置
以下是您如何配置所有 task 的方法:
```
import com.liftric.dtcp.extensions.*
import org.cyclonedx.model.vulnerability.Vulnerability
val version: String by project
val name: String by project
dependencyTrackCompanion {
url.set("https://api.dtrack.example.com")
apiKey.set(System.getenv("DT_API_KEY"))
autoCreate.set(true)
projectName.set(name)
projectVersion.set(version)
parentName.set(name)
riskScore{
timeout.set(20.seconds)
maxRiskScore.set(7.0)
}
vexComponent {
purl.set("pkg:maven/org.eclipse.jetty/jetty-http@9.4.49.v20220914?type=jar")
vulnerability {
id.set("CVE-2023-26048")
source.set("NVD")
analysis.set(Vulnerability.Analysis.State.FALSE_POSITIVE)
}
}
vexVulnerability {
id.set("CVE-2020-8908")
source.set("NVD")
analysis.set(Vulnerability.Analysis.State.RESOLVED)
detail.set("This is resolved")
}
}
```
## 许可证
此 Gradle Dependency Track 插件根据 MIT 许可证发布。
本项目不是 [Dependency Track](https://dependencytrack.org/) 的衍生作品,而是一个与其交互的工具。请注意,Dependency Track 是根据 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0) 发布的。请参阅它们各自的许可证以获取更多信息。
标签:CycloneDX, Dependency Track, DevSecOps, GPT, Gradle插件, SBOM, VEX, 上游代理, 后台面板检测, 漏洞管理, 硬件无关, 软件供应链安全, 远程方法调用