大家好,今天来为大家分享bom分享经济网站源码分享的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
随着软件合规、断供、漏洞等风险日益受到重视,需求方会要求开发团队提供软件的详细信息。
常用的方法是,研发团队从源码、配置文件、生成交付物等处提取所需信息按需求方要求的格式形成报告。这种手工生成方法,不但需要消耗人力,而且容易出现遗漏、拼写错误等问题。同时,由于软件频繁变动,导致辛辛苦苦填写的报告很快就失效了,最终提交报告的内容也往往和实际软件不一致。
软件物料清单(SBOM)应运而生,依托一些标准规范,可以自动化生成并相互交互。目前,SBOM主流标准有CycloneDX、SPDX、SWID等。
由于都是国外制定规范,国内甲方可能会提出不同的格式和字段要求,不一定能够直接使用。目前来说,标准SBOM文件基本可以满足日常需要。例外的情况,需要自己结合实际需求扩展设计。
?
应用:如何利用软件清单检查开源许可证风险
SBOM有什么具体作用呢?
这里举一个例子。在实际开发工作中,常常需要使用开源组件或第三方组件。
如果使用的开源软件采用GPL协议,就可能存在开源污染问题,会给开发的软件造成法律风险。需求方为避免此类法律问题,就会要求研发团队检查软件依赖的所有组件,以及组件的授权信息。通常大型项目的依赖关系是非常复杂的,依赖的组件数量庞大,还存在多级依赖的情况。
因此,手工检查是非常繁琐的。
使用软件物料清单,就可以快速解决这个问题。具体步骤如下:
可以利用插件工具为自己的项目生成CycloneDX格式的清单。把生成的清单上传到DependencyTrack这个工具。(DependencyTrack是OWASP维护的一款开源软件安全检查工具,可以下载后本地使用)就可以在DependencyTrack工具上看到软件依赖的组件信息,以及它们使用的开源许可证。
通过上述步骤,就可以快速收集确认项目涉及的所有开源许可证,判断是否存在风险了。
接下来,以Java项目为例,具体介绍下CycloneDX、SPDX和SWID格式的BOM文件生成方法。
CycloneDX格式清单生成
生成CycloneDX规范的BOM,需要用到cyclonedx-maven-plugin插件(可到github上检索下载)。
在maven的package阶段运行插件,pom配置示例:
<plugin>\n<groupId>org.cyclonedx</groupId>\n<artifactId>cyclonedx-maven-plugin</artifactId>\n<version>2.7.0</version>\n<executions>\n<execution>\n<phase>package</phase>\n<goals>\n<goal>makeAggregateBom</goal>\n</goals>\n</execution>\n</executions>\n<configuration>\n<projectType>library</projectType>\n<schemaVersion>1.4</schemaVersion>\n<includeBomSerialNumber>true</includeBomSerialNumber>\n<includeCompileScope>true</includeCompileScope>\n<includeProvidedScope>true</includeProvidedScope>\n<includeRuntimeScope>true</includeRuntimeScope>\n<includeSystemScope>true</includeSystemScope>\n<includeTestScope>false</includeTestScope>\n<includeLicenseText>false</includeLicenseText>\n<outputReactorProjects>true</outputReactorProjects>\n<outputFormat>all</outputFormat>\n<outputName>bom</outputName>\n</configuration>\n</plugin>
生成路径和名称:
target/bom.jsontarget/bom.xml
?
SPDX格式清单生成
生成SPDX规范的BOM,需要用到spdx-maven-plugin插件(可到github上检索下载)。
在maven的package阶段运行插件,pom配置示例:
<plugin>\n<groupId>org.spdx</groupId>\n<artifactId>spdx-maven-plugin</artifactId>\n<version>0.5.4</version>\n<executions>\n<execution>\n<id>build-spdx</id>\n<phase>package</phase>\n<goals>\n<goal>createSPDX</goal>\n</goals>\n</execution>\n</executions>\n</plugin>
生成路径和名称:
target/site/{项目名称}-{项目版本}.spdx.rdf.xmltarget/bom.json
SWID格式清单生成
生成SWID规范的BOM,需要用到swid-maven-plugin插件(可到github上检索下载)。
在maven的package阶段运行插件,pom配置示例:
<plugin>\n<groupId>com.labs64.mojo</groupId>\n<artifactId>swid-maven-plugin</artifactId>\n<version>0.1.0</version>\n<executions>\n<execution>\n<phase>package</phase>\n<goals>\n<goal>generate</goal>\n</goals>\n</execution>\n</executions>\n</plugin>
生成路径和名称:
target/generated-resources/swid/regid.2022-05.vip.{项目名称}-{项目版本}.swidtag
对比总结
从详细程度上看CycloneDX>SPDX>SWID。
CycloneDX:4178行;277KB。SPDX:1389行;135KB。SWID:34行;2KB。
具体内容方面:
SWID插件默认只生成软件包的基本信息,不生成依赖组件的详细信息。SPDX插件默认能够生成软件包和依赖组件的详细信息。此外能够记录源文件基本信息(hasFile)、许可证信息等。CycloneDX插件默认能够生成软件包和依赖组件的详细信息。此外能够记录组件的PURL信息、许可证信息、相互之间的依赖关系(dependencies)等。
CycloneDX在组件依赖方面记录更加详细,SPDX则能够记录源文件信息。
?
随着软件产业不断发展,供应链日趋复杂,上下游组织对IT治理的要求进一步提高,都需要提升软件的透明度。软件供应链上下游通过SBOM,来进行链接,共同提升软件治理水平,强化软件安全响应能力,成为一种趋势。
在这种情况下,开发团队着手开展SBOM知识储备,掌握SPDX、CycloneDX等SBOM规范的基本用途和生成方法,是非常有必要的。
?
?
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
