# raw类型库dt扫描配置
# nexus raw类型库上传资产dt扫描与下载监控配置说明
该插件基于nexus3.61.02版本开发
本文中所用到的介质如需获取请发邮件到cservice@primeton.com邮箱申请。邮件申请格式: 1.项目编号: 2.项目名称: 3.最终客户: 4.普元销售: 5.合同内部编号: 6.申请产品名称及原由:
一、安装插件
将捆绑包(nexus-component-security-analysis-plugin-bundle.kar)复制到 【nexus安装根目录/deploy】 中
这将导致插件在每次重新启动Nexus Repository时加载。此外,此文件夹也受到监视 by Nexus Repository,复制完请重启nexus服务。
二、参数配置
说明:该功能只限于nexus下raw类型库
System》Capabilities》Create capability
选择DT Scanner Configuration选项。
填写Dependency Track服务参数与扫描配置
DT API URL: Dependency-Track服务端请求api地址 末尾不要加斜杠
DT SERVER URL: Dependency-Track客户端页面api地址 末尾不要加斜杠(前后端不分离部署时和DT API URL一致)
DT API Token: Dependency-Track 请求的API Keys
Vulnerability Threshold:
下载时漏洞风险拦截的阈值,可选参数为【critical:极高】、【high:高】、【medium:一般】、【low:低】、【none:不拦截】
License Threshold: 下载时许可证风险拦截的阈值,可选参数为【high:高】、【medium:一般】、【low:低】、【none:不拦截】
DT Scan Affected ExtensionNames: 逗号分割的文件扩展名,会对范围中的文件进系dt扫描报告的绑定与下载时的拦截监控
Download Only After Successful Scanning: 是否仅允许在获得扫描标识scan_status
为complete时(即扫描完成后),才能下载。 详细说明为 开启后所有带有DT Scan Info属性信息的资产(且在上条属性扩展名文件范围中的)下载时,将先判断扫描标识scan_status
是否为complete,不符合时将直接被拦截,不允许下载。反之,扫描未完成时,将不进行拦截,允许下载资产。
# 插件原理说明
对于raw类型库上传bom.xml或bom.json文件时,会发起dt扫描请求并检索本次上传所有资产和目标目录所有资产,将所有带有需要拦截的扩展名的文件存上【dt scan info】dt扫描信息。单单上传非bom.xml或bom.json文件时,不会进行扫描也不会记录信息。
下载时,判断下载的资产是否包含该dt信息和拦截的扩展名,如果扫描信息中扫描还未结束,则再次请求dt服务端获取报告信息存入资产属性中并判断报告风险是否需要被下载拦截,如果之前已经扫描完成,则直接根据报告判断拦截。
注意事项:
重复上传bom.xml或bom.json会覆盖对应资产的dt扫描信息。
对于已经记录了扫描失败信息的资产,需要用户重新上传bom.xml或bom.json,重新存储新的扫描信息。
扫描信息存储仅作用于与bom.json或bom.xml同一目录的文件。
# 使用说明
一、上传说明
完成配置后,对于raw类型库上传资产。
方式一【对于同一次上传】:上传包含了bom.xml或bom.json,会将同目录下的所有限定拓展名的文件存储dt扫描信息
step1
step2
方式二【先上传需要扫描的文件,后上传bom.xml或bom.json】:上传bom.xml或bom.json时,会将目录目录已经存在的所有限定拓展名的文件存储dt扫描信息
step1
step2
step3
方式三【devops nexus原子任务上传】:在devops平台构建流水线中选择【发布工件到nexus仓库】,勾选上传物料清单,填写bom.xml文件位置,执行流水线即可完成上传
该方式上传的工件可以直接在devops中下载,拦截参考下文下载说明。
二、下载说明
下载时只拦截带有【dt scan info】属性,且在配置中限制的拓展名的文件。
下载成功时效果:
点击下载链接直接下载文件,刷新界面后可以查看到扫描结果。
下载失败时效果:
点击下载链接,进入一个新标签页,打开页面检查再次刷新页面可以查看到报错信息,刷新nexus仓库制品界面后可以查看到扫描结果。
下载拦截风险阈值通过插件配置中Vulnerability Threshold: 和 License Threshold: 参数控制。
DT Scan Info 说明
request_status: dt扫描请求结果 success成功、failed失败
dt_project_name: dt项目名称 由repo库名和目录加上-结合 raw-repo-app-20231201-
dt_project_version: dt项目版本 此处默认1.0.0 每次上传新bom时会覆盖上一份扫描
scan_status: dt扫描报告进度 unkwon未知、complete扫描完成、processing扫描中
dt_scan_token: dt扫描项目token,用于查询报告
issues_vulnerabilities: 漏洞数 0 critical, 0 high, 1 medium, 0 low
issues_licenses: 许可证 0 high, 0 medium, 0 low
inherited_risk_score: 风险评分 3
dt_server_url: 报告地址 http://10.16.16.48:28080/projects/30a09f91-8f61-4411-8609-d806b56e9146
三、日志说明
开启插件日志打印后可以在nexus.log中查看更多日志信息。
Support》Logging》Create Logger>输入com.primeton.nexus.plugins或com.primeton.nexus.plugins.scanner,级别为DEBUG.
Support》Logs》nexus.log
即可查看到详细日志说明
# 组件定时扫描配置
该插件基于nexus3.61.02版本开发
本文中所用到的介质如需获取请发邮件到cservice@primeton.com邮箱申请。邮件申请格式: 1.项目编号: 2.项目名称: 3.最终客户: 4.普元销售: 5.合同内部编号: 6.申请产品名称及原由:
# 通过OSS Index扫描定时任务对组件进行漏洞扫描
配置定时任务
System》Tasks》Create task
选择OSS Index - Vulnerability scanning of repositories
填写任务信息,需要扫描的repo库
注意
Sonatype OSS Index 官方提供的 API 有调用次数限制,如果单位时间内频繁发起请求且超出限制时,将会出现 429 的响应状态。因此这边建议配置上 Email address 以及 API Token 信息,使用经过身份验证的请求将具有更高的限制。
设置定时任务规则
这里我设置的是手动触发,点击run进行一次扫描
扫描后可以在组件属性中看到扫描结果
# 通过开启OSS Index Analyzer Configuration配置对组件下载进行控制管理
完成扫描后,想要实现对有漏洞风险的组件进行管控,可以配置拦截器。
System》Capabilities》Create capability
选择OSS Index Analyzer Configuration
配置拦截漏洞阈值
下载说明
设置漏洞阈值为low时,有low及low以上风险漏洞将会触发下载拦截。
没有漏洞时,不拦截,点击下载链接,可以正常下载。
日志说明
Support》Logs
可以在日志界面查看所有定时任务日志信息