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, 上游代理, 后台面板检测, 漏洞管理, 硬件无关, 软件供应链安全, 远程方法调用