573 字约 2 分钟
CNB 提供三个 SCA 流水线插件,在 Pull Request 阶段比较 Base 与 Head 的依赖变更, 在依赖风险合入主干前将其拦截:依赖漏洞、依赖 License 和组件清单(SBOM)。
与配置文件扫描的区别
代码安全扫描是平台内置的仓库级扫描,通过 .scanignore 和 .cnb/security/code_scan_config.yml 调整扫描范围; SCA 插件是在 .cnb.yml 的 pull_request 阶段显式声明、按 PR 增量运行的扫描任务,可单独配置质量门禁。
插件列表
| 插件 | 镜像 | 说明 |
|---|---|---|
| 开源组件漏洞扫描 | cnbcool/sca-vulnerability:latest | 检查 PR 新增依赖漏洞,可配置质量门禁 |
| License 扫描 | cnbcool/sca-license:latest | 检查 PR 新增 License 风险,可配置质量门禁 |
| SBOM 生成(Delta) | cnbcool/sca-sbom:latest | 输出 PR Base/Head 组件变化 |
功能特性
- 增量扫描:分别扫描 PR Base 和 Head,只处理当前 PR 新增的风险;
- 质量门禁:依赖漏洞和 License 插件支持按严重等级阻断;
- 标准 SBOM:SBOM 插件支持 JSON Delta、SPDX、CycloneDX 和 SWID。
在 CNB 中使用
将以下配置加入业务仓库根目录的 .cnb.yml:
.cnb.yml
main:
pull_request:
- stages:
- name: 开源组件漏洞扫描
image: cnbcool/sca-vulnerability:latest
settings:
failOnSeverity: high
- name: License 扫描
image: cnbcool/sca-license:latest
settings:
failOnSeverity: high
- name: 生成 SBOM Delta
image: cnbcool/sca-sbom:latest
settings:
output: ${CNB_BUILD_WORKSPACE}/.cnb-sca/sbom-delta.json门禁说明
漏洞扫描和 License 扫描插件通过 failOnSeverity 设置触发门禁的最低风险等级:
failOnSeverity: high设置为 high 后,PR 新增的 High、Critical 漏洞以及 High License 风险会导致检查失败。 省略该参数时,插件仍会输出扫描结果,但不启用风险门禁。
退出码
| 退出码 | 说明 |
|---|---|
0 | 扫描完成,且新增风险未命中门禁 |
1 | 新增风险命中门禁 |
2 | 配置错误或扫描失败 |
下一步
- 开源组件漏洞扫描 —— 漏洞门禁与增量规则
- License 扫描 —— License 风险门禁
- SBOM 生成 —— 组件变化清单与标准格式