技术分享 | 不同格式标准SBOM清单横评:SPDX、CDX和DSDX
为了保证安全性、降低开发、采购及维护的相关成本,复杂动态的现代软件供应链对软件资产透明度提出了更高的要求。使用清晰的软件物料清单(SBOM)收集和共享信息,并在此基础上进行漏洞、许可证和授权管理等,可以揭示整个软件供应链中的弱点、提高软件供应链的透明度并增进供应链上下游间的相互信任、有效管控软件供应链攻击的威胁。
从定义上讲, SBOM是包含软件应用中使用的所有组件、库和其他依赖项的列表。国际通用的SBOM标准格式包括SPDX、CDX和SWID,前两者由于记录着更详细的依赖信息而得到了更广泛的使用。
DSDX(Digital Supply-chain Data Exchange)是由OpenSCA社区主导,开源中国、电信研究院、中兴通讯联合发起的中国首个数字供应链SBOM格式,更适配中国企业实战化应用实践场景,并且能兼容SPDX、CDX、SWID国际标准和国内标准。
更多DSDX相关信息请参考:SCA技术进阶系列(四):DSDX SBOM供应链安全应用实践
下文将对SPDX、CDX及DSDX三种标准SBOM格式进行对比分析。
01 SPDX
1.1 许可证
cc-by-3.0
1.2 格式简介
SPDX(Software Package Data Exchange)是Linux基金会的一个开源项目,旨在作为收集和共享软件数据的通用格式,已于2021年9月被ISO列入SBOM国际标准(ISO/IEC 5962),也是目前唯一一个获此认可的SBOM标准格式。今年5月项目发布了v3.0-rc1(候选版本,目前尚无完整的官方文档),目前最广泛使用的仍然是2020年发布的v2.2版本。
SPDX标准格式SBOM清单中包含用于描述许可证信息的详细字段,并涵盖了代码文件及片段引用场景;自v2.1开始,安全性方面,也已支持与漏洞数据的关联。SPDX支持的输出格式包括SPDX、XML、JSON、RDF和YAML。
1.3 字段说明
SPDX(v2.2) 格式标准 SBOM 包含以下部分:
02 CDX
2.1 许可证
apache-2.0
2.2 格式简介
CDX (CycloneDX)是OWASP发布的轻量级SBOM标准,专注于自动化整个软件构建周期中对SBOM的使用和管理。目前最新的版本是今年6月发布的v1.5。
与SPDX相比,在记录授权和依赖关系的基础上,CDX提供了更多与安全性相关的信息,相对更适用于安全审计、漏洞管理等场景。此外,CDX还支持对硬件及云系统的描述,并有专门的部分记录服务信息及制造/部署信息,有更强的扩展性。不过相应地,它的完整字段设计及嵌套关系也会更加复杂。CDX支持的输出格式有XML和JSON。
2.3 字段说明
CDX(v1.5) 格式标准 SBOM 包含以下部分:
03 DSDX
3.1 格式简介
目前,我国尚无SBOM标准格式相关国标;基于广大社区用户的实践反馈及对国际标准格式的研究,今年8月推出的DSDX着重考虑了运行环境及供应链流转信息的引入,以最小集/扩展集的形式增强了SBOM应用的灵活性,并考虑了国内企业出海合规相关需求的场景。DSDX支持的输出格式包括DSDX、JSON和XML。
DSDX是社区实践的产物,正处于蓬勃发展的阶段,欢迎向项目组提出反馈及建议,与我们共同建设国内首个标准SBOM格式。
3.2 字段说明
DSDX(v1.0) 格式标准 SBOM 包含以下部分:
04 总结
简言之,唯一被写入ISO国际标准的SPDX在标准化的基础上相对更关注对许可证信息的描述,能记录更多安全及服务相关信息的CDX有更强的扩展性,而基于国内实践发布的DSDX则引入了运行环境及供应链流转信息并对描述对象做了最小集/扩展集的拆分。
使用OpenSCA按需输出标准格式SBOM
OpenSCA支持输出SPDX/CDX/DSDX及SWID标准格式SBOM文件,一站式解决各种需求;从v3.0.0开始,还新增了通过SBOM清单输出依赖、漏洞及许可证信息的能力。
| 使用样例
① 输出SBOM清单
opensca-cli -path ${project_path} -out output.dsdx
② 使用SBOM清单输出漏洞及许可证清单
opensca-cli -token ${token} -path ${sbomname.suffix} -out output.html
*此处suffix可以是dsdx/dsdx.json/dsdx.xml/cdx.json/cdx.xml等(准确起见,输入的SBOM需包含Purl信息,故而更推荐使用CDX及DSDX)
技术分享 | 不同格式标准SBOM清单横评:SPDX、CDX和DSDX的更多相关文章
- UWP 手绘视频创作工具技术分享系列 - SVG 的解析和绘制
本篇作为技术分享系列的第一篇,详细讲一下 SVG 的解析和绘制,这部分功能的研究和最终实现由团队的 @黄超超 同学负责,感谢提供技术文档和支持. 首先我们来看一下 SVG 的文件结构和组成 SVG ( ...
- UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制
本篇作为技术分享系列的第二篇,详细讲一下文字的解析和绘制,这部分功能的研究和最终实现由团队共同完成,目前还在寻找更理想的实现方式. 首先看一下文字绘制在手绘视频中的应用场景 文字是手绘视频中很重要的表 ...
- 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践
本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...
- 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...
- UWA 技术分享连载 转载
技术分享连载1 Q1:Texture占用内存总是双倍,这个是我们自己的问题,还是Unity引擎的机制? Q2:我现在发现两个因素直接影响Overhead,一个是Shader的复杂度,一个是空Updat ...
- AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
- 美团技术分享:深度解密美团的分布式ID生成算法
本文来自美团技术团队“照东”的分享,原题<Leaf——美团点评分布式ID生成系统>,收录时有勘误.修订并重新排版,感谢原作者的分享. 1.引言 鉴于IM系统中聊天消息ID生成算法和生成策略 ...
- 融云技术分享:解密融云IM产品的聊天消息ID生成策略
本文来自融云技术团队原创分享,原文发布于“融云全球互联网通信云”公众号,原题<如何实现分布式场景下唯一 ID 生成?>,即时通讯网收录时有部分改动. 1.引言 对于IM应用来说,消息ID( ...
- 老J的技术分享之总结
老J做IT这块有二十多个年头了,算是中国IT的见证者与参与者.那个时候刚开始接触和了解时,对于他的一些建议,我不是很乐于去接受,因为我觉得他的那一套技术体系不是很适合如今的情况,当时间久了后发现,他对 ...
- HTML5学堂 全新的HTML5/前端技术分享平台
HTML5学堂 全新的HTML5/前端技术分享平台 HTML5学堂是做什么的? HTML5学堂~http://www.h5course.com~由多名热爱H5的讲师们组成的一个组织.致力于构建一个前端 ...
随机推荐
- 分享一个LCD驱动框架
首先需要说明的是本篇文章不是关于如何点亮一块LCD屏的教程,而是介绍一个LCD开发框架,更准确的说是介绍一个LCD的中间件(Middlwware),用来连接UI和不同类型的LCD屏.笔者本人的工作内容 ...
- 大语言模型底层架构丨带你认识Transformer
本文分享自华为云社区<大语言模型底层架构你了解多少?大语言模型底层架构之一Transfomer的介绍和python代码实现>,作者: 码上开花_Lancer . 语言模型目标是建模自然语言 ...
- liunx二进制包安装5.6MySQL数据库
官网下载对应的二进制版本安装包 https://downloads.mysql.com/archives/community/ # 解压二进制压缩包 [root@localhost ~]# wget ...
- 内核模块(.ko) 开发入门
内核模块时指的是在操作系统内核中动态加载的一段代码,它可以扩展和增强操作系统的功能.内核模块通常用于为操作系统添加新的设备驱动程序.文件系统.网络协议栈等功能. 内核模块是以二进制形式存在的(*.ko ...
- 用CloudDrive将阿里云、天翼云、115挂载为电脑本地硬盘
用CloudDrive将阿里云.天翼云.115挂载为电脑本地硬盘 写在前面 它可以把各大在线网盘,直接变成电脑本地硬盘,俗称"网盘挂载".这在一定程度上,确实能缓解存储紧张问题,瞬 ...
- libGDX游戏开发之NPC敌人事件(六)
libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和google找资料,相互学习的可以加我联系方式. ...
- 一种DWS迁移Oracle的CONNECT BY语法的方案
摘要:本文提供一种GaussDB DWS迁移CONNECT BY语法方案. 本文分享自华为云社区<GaussDB(DWS)迁移 - oracle兼容 -- CONNECT BY迁移>,作者 ...
- Spark-submit执行流程,了解一下
摘要:本文主要是通过Spark代码走读来了解spark-submit的流程. 1.任务命令提交 我们在进行Spark任务提交时,会使用"spark-submit -class .....&q ...
- 介绍3种ssh远程连接的方式
摘要:SSH(安全外壳协议 Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,用于在网络中实现客户端和服务端的连接,典型的如我们在本地电脑通过 SSH连接远程服务器. ...
- 云小课|云小课带您快速了解LTS可视化查看
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 可视化查看是日志 ...