jenkinsci/dependency-track-plugin
GitHub: jenkinsci/dependency-track-plugin
Jenkins官方插件,用于将CycloneDX软件物料清单发布到Dependency-Track平台,实现CI/CD流水线中的第三方组件风险分析与安全门禁。
Stars: 51 | Forks: 26
[](https://github.com/jenkinsci/dependency-track-plugin/actions/workflows/ci-build.yml)
[](https://sonarcloud.io/dashboard?id=org.jenkins-ci.plugins%3Adependency-track)
[](https://sonarcloud.io/dashboard?id=org.jenkins-ci.plugins%3Adependency-track)
[](LICENSE.txt)
[](https://plugins.jenkins.io/dependency-track/)
[](https://stats.jenkins.io/pluginversions/dependency-track.html)
[](https://github.com/jenkinsci/dependency-track-plugin/issues)
[](https://dependencytrack.org/)
# Dependency-Track Jenkins 插件
[Dependency-Track](https://dependencytrack.org/) Jenkins 插件用于将 [CycloneDX](https://cyclonedx.org/) 软件物料清单 (SBOM) 发布到 Dependency-Track 平台。
[Dependency-Track](https://dependencytrack.org/) 是一个智能软件[供应链组件分析](https://owasp.org/www-community/Component_Analysis)平台,帮助组织识别并降低因使用第三方和开源组件所带来的风险。
发布 SBOM 可以异步或同步进行。
异步发布仅将 SBOM 上传到 Dependency-Track,随后任务继续执行。同步发布则会在上传后等待 Dependency-Track 处理完 SBOM。同步发布的好处是能够显示交互式的任务趋势和每次构建的发现结果。


 
## 版本兼容性矩阵
插件版本 | Dependency-Track | Jenkins | Java
---------------| ---------------- | ------- | ----
7.x (next) | 4.12+ | 2.545+ | 21+
6.x (current) | 4.12+ | 2.479.1+ | 17+
5.2.x (previous) | 4.9+ | 2.440.1+ | 11+
## 全局配置
设置步骤:导航至 Jenkins > System Configuration,并完成 Dependency-Track 部分的配置。

**Dependency-Track Backend URL**:Dependency-Track 实例后端的 URL。
**API key**:用于认证的 API Key。
**Dependency-Track Frontend URL**:Dependency-Track 实例前端的 URL。如果您在不同服务器上运行后端和前端,请使用此项。如果省略,将使用“Dependency-Track Backend URL”代替。
**Polling Timeout**:定义在使用同步发布时,等待 Dependency-Track 处理任务的最长分钟数。
**Polling Interval**:定义在使用同步发布时,两次检查 Dependency-Track 处理状态之间等待的秒数。
**Connection Timeout**:定义等待与 Dependency-Track 建立连接的最长秒数。
**Response Timeout**:定义等待 Dependency-Track 响应的最长秒数。
### 权限概述
权限 | 必需 | 用途
-----------| -------- | -----
BOM_UPLOAD | :ballot_box_with_check: | BOM 上传所需
VIEW_PORTFOLIO | :ballot_box_with_check: | 获取项目列表所需
VULNERABILITY_ANALYSIS | :ballot_box_with_check: | 执行依赖分析所需
PROJECT_CREATION_UPLOAD | :grey_question: | 在 BOM 上传期间创建不存在的项目所需
VIEW_VULNERABILITY | :grey_question: | 在同步发布模式下检索漏洞结果所需
VIEW_POLICY_VIOLATION | :grey_question: | 在同步发布模式下检索策略违规结果所需
PORTFOLIO_MANAGEMENT | :grey_question: | 更新项目属性(如标签)所需
## 任务配置
配置好有效的 URL 和 API key 后,只需配置一个任务来发布构件即可。

**Dependency-Track project**:指定要上传 SBOM 的唯一项目 ID。此下拉列表将自动填充活动项目的列表。
**Dependency-Track project name**:指定在上传过程中自动创建项目的名称。这是指定唯一 ID 的替代方案。必须与项目版本一起使用。仅在启用“Auto Create projects”时可用。支持使用 `${VARIABLE}` 形式的环境变量。
**Dependency-Track project version**:指定在上传过程中自动创建项目的版本。这是指定唯一 ID 的替代方案。必须与项目名称一起使用。仅在启用“Auto Create projects”时可用。支持使用 `${VARIABLE}` 形式的环境变量。
**Artifact:** 指定要上传的 BOM 文件。路径相对于 Jenkins 工作空间。支持使用 `${VARIABLE}` 形式的环境变量。
**Vex:** 指定要上传的 VEX 文件。路径相对于 Jenkins 工作空间。支持使用 `${VARIABLE}` 形式的环境变量。
**Enable synchronous publishing mode**:将 SBOM 上传到 Dependency-Track,并等待 Dependency-Track 处理并返回结果。返回的结果与可审计的发现相同,但不包括先前已被抑制的发现。响应中包含分析决策和漏洞详情。Dependency-Track v3.3.1 及更高版本支持同步模式。对于 Dependency-Track v4.4 及更新版本,提供的 API key 需要 `VIEW_VULNERABILITY` 权限才能使用此功能!如果提供的 API key 拥有 `VIEW_POLICY_VIOLATION` 权限,则也会返回策略违规的结果。
**Update project properties**:允许在上传 BOM 后更新某些项目属性。提供的 API key 需要 `PORTFOLIO_MANAGEMENT` 权限才能使用此功能!这些属性包括:
- tags
- SWID tag ID
- group/vendor
- description
- ID of parent project
- name and version of parent project (as an alternative to the ID)
- "is latest version" flag
支持使用 `${VARIABLE}` 形式的环境变量。
**Override global settings**:允许覆盖“Dependency-Track URL”、“Dependency-Track Frontend URL”、“API key”、“Polling Interval”以及各种超时的全局设置。
### 阈值
启用同步模式时,可以定义阈值,可选择将任务置于 UNSTABLE 或 FAILURE 状态。

**Total Findings:** 设置允许的严重、高、中、低或未分配严重性发现总数的阈值。如果任一严重级别的发现数量等于或大于阈值,任务状态将更改为 UNSTABLE 或 FAILURE。
**New Findings:** 设置允许的新严重、高、中、低或未分配严重性发现数量的阈值。如果任一严重级别的新发现数量等于或大于上一次构建的发现数量,任务状态将更改为 UNSTABLE 或 FAILURE。上一次构建是指成功的且包含 Dependency-Track 分析结果的构建,不一定是紧邻的上一次构建。
### 策略违规
如果启用同步模式,则可以根据策略违规的状态将任务设置为 UNSTABLE 或 FAILURE 状态。策略违规在漏洞发现的阈值评估之后进行评估。
## 示例
### 声明式流水线
```
pipeline {
agent any
stages {
stage('dependencyTrackPublisher') {
steps {
withCredentials([string(credentialsId: '506ed685-4e2b-4d31-a44f-8ba8e67b6341', variable: 'API_KEY')]) {
dependencyTrackPublisher artifact: 'target/bom.xml', projectName: 'my-project', projectVersion: 'my-version', synchronous: true, dependencyTrackApiKey: API_KEY, projectProperties: [tags: ['tag1', 'tag2'], swidTagId: 'my swid tag', group: 'my group', parentId: 'parent-uuid']
}
}
}
}
}
```
### 脚本化流水线
```
node {
stage('dependencyTrackPublisher') {
try {
dependencyTrackPublisher artifact: 'target/bom.xml', projectId: 'a65ea72b-5b77-40c5-8b19-fb83525f40eb', synchronous: true
} catch (e) {
echo 'failed'
}
}
}
```
## 版权与许可
Dependency-Track 和 Dependency-Track Jenkins Plugin 版权归 Steve Springett 所有。保留所有权利。
修改和重新分发已根据 Apache 2.0 许可证的条款获得授权。
## 变更日志
有关更改列表,请参阅 [CHANGELOG.md](CHANGELOG.md)。
标签:CycloneDX, Dependency-Track, DevOps工具集成, DevSecOps, GPT, Jenkins插件, JS文件枚举, SBOM, 上游代理, 制品分析, 域名枚举, 安全合规, 开源框架, 开源组件风险, 持续集成, 数据集, 文档安全, 漏洞管理, 硬件无关, 第三方依赖审计, 网络代理, 软件开发工具包