网易首页 > 网易号 > 正文 申请入驻

SBOM 简介以及如何将其与 CI 结合使用

0
分享至

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。
详细了解 SBOM(软件物料清单)、使用它的原因、标准是什么以及如何通过持续集成实现自动化。

1.什么是物料清单?
BOM代表物料清单,汽车行业长期以来一直将其用作供应链管理的一种方法。

如果您熟悉汽车行业,您可能听说过这个词。即使你不是,也不要担心。

想象一下,您刚买了一辆新车。也许你的车是由丰田、大众或任何你喜欢的品牌制造的(更准确地说,是组装的)。但是,如今分工如此普遍,以至于没有一家汽车公司可以单独制造汽车所需的所有部件。许多零件是由世界各地的其他公司、供应商或分包商制造的。

汽车行业的物料清单 (BOM) 告诉您每个零件的来源,详细说明使您的汽车运行的每个组件。假设某批零件(例如安全气囊)已被生产它们的公司召回。在这种情况下,您的汽车制造商可以参考 BOM 以了解特定批次的安全气囊最终出现在哪些汽车上,因此它可以对那些受影响的车辆采取行动。

" Type="normal"SectionTitle="2.什么是SBOM?" Type="normal"@@SBOM 代表软件物料清单,它已成为软件安全和供应链管理领域的重要组成部分。

尽管构建软件与制造汽车并不完全相同,但它们之间存在相似之处,而且可能比您想象的要多。

SBOM 工作自 2018 年以来取得了进展,这是由美国国家电信和信息管理局 (NTIA) 的多利益相关方流程推动的社区协作工作。根据NTIA的SBOM FAQ,SBOM的官方定义如下:

软件物料清单 (SBOM) 是一个完整的、正式结构化的组件、库和模块列表,这些组件、库和模块是构建(即编译和链接)给定软件以及它们之间的供应链关系所需的。这些组件可以是开源的或专有的,免费的或付费的,可以广泛使用或限制访问。
" Type="normal"SectionTitle="3. 为什么 SBOM 在安全中发挥关键作用" Type="normal"@@正如本博客开头提到的安全气囊类比,很容易看出 SBOM 在安全方面发挥着关键作用。

扫描 SBOM 库比从头开始扫描整个基础架构更快、更容易。像Trivy这样的工具已经支持这一点。在零日事件中,正如我们最近在 Log4Shell 中看到的(并将继续看到的那样),每一分钟都很重要。

安全团队还可以利用 SBOM 根据问题的存在和位置确定修复问题的优先级,并创建特定于组件属性(例如供应商、版本或包类型等)的策略。

开发团队还可以受益于使用 SBOM 来跟踪应用程序中的开源、商业和定制软件组件。这有助于开发人员管理依赖关系、识别早期补救安全问题,并确保开发人员使用已批准的代码和源代码。当第三方库存在已知的常见漏洞时,如果你有SBOM,你可以快速判断软件是否受到影响。

由于其重要意义,可以在团队和公司之间无摩擦地共享的 SBOM 是未来几十年关键行业和数字基础设施软件管理的核心构建块。

" Type="normal"SectionTitle="4. SBOM格式标准" Type="normal"@@SBOM 是一种正式的结构化记录,它不仅详细说明了软件产品的组件,还描述了其供应链关系。SBOM 概述了哪些包和库进入了您的应用程序,以及这些包和库与其他上游项目之间的关系——这在涉及重用代码和开源时尤为重要。

由于 SBOM 包含大量信息,因此必须有一些标准才能有效地交换信息,尤其是在自动化方面。SBOM 格式就是为了这个目的:它们是定义统一结构的标准,用于生成 SBOM 并与最终用户或客户共享它们。它们以其他工具可以理解的标准格式描述软件组合。

领先的 SBOM 格式是软件包数据交换 (SPDX) 和 CycloneDX,它们都被用于安全用例。

" Type="normal"SectionTitle="4.1 SPDX" Type="normal"@@SPDX是一个Linux基金会项目,其主要目标是为软件包相关信息创建一个标准的数据交换格式。

英特尔、微软、西门子和索尼等大公司都参与了 SPDX 社区。

截至目前,最新的 SPDX 规范是 2.2.2 版。必须存在特定字段和部分才能被视为有效的 SPDX 文档。

" Type="normal"SectionTitle="4.2 CycloneDX" Type="normal"@@CycloneDX 是“设计用于应用程序安全环境和供应链组件分析的轻量级 SBOM 标准”。

规范的战略方向和维护由 CycloneDX 核心工作组管理,该工作组起源于安全社区的长期领导者开放 Web 应用程序安全项目 (OWASP)。

CycloneDX 的独特之处在于它被设计为 BOM 格式并满足各种用例,包括软件即服务 BOM (SaaSBOM)。

" Type="normal"SectionTitle="5. 如何使用 CI 自动化 SBOM" Type="normal"@@当然,可以使用一堆工具来生成 SBOM,它们可以与您的 CI 系统集成。在本节中,我们将结合使用GitHub Actions和Syft来执行此操作。

Syft 是一个 CLI 工具和 Go 库,用于从容器镜像和文件系统生成 SBOM,它支持 SPDX 和 CycloneDX 格式。

首先,让我们创建一个带有模块的简单 Golang 应用程序(因此生成的 SBOM 将不包含任何内容)。

你可以在这里获取代码或者直接fork它。

让我们看一下这段简单的代码:它是一个调用另一个 Go 模块的 HelloWorld 演示:

package main " Type="normal"@@-->

import ("fmt"hello "github.com/ironcore864/go-hello-module"

func main() {
fmt.Println(hello.Hello())

然后,让我们创建一个包含以下内容的 GitHub Action:

name: SBOM

on:

release:

types: [published]

jobs:

sbom:

runs-on: ubuntu-latest

steps:

- name: Checkout

uses: actions/checkout@v3

with:ref: ${{ github.ref_name }}

- name: Anchore SBOM Action

uses: anchore/sbom-action@v0.12.0

with:

format: cyclonedx-json

这个动作:

  1. 仅在发布时运行。
  2. 检查标签。
  3. 运行anchore/sbom-action,它用于syft生成 CycloneDX 格式的 SBOM 作为 JSON 文件。
  4. 将 JSON 文件上传到发布的工件。

GitHub Actions 文件准备就绪后,通过创建发布来触发作业。作业的成功运行如下所示:

如果我们转到 repo 的发布页面,我们可以看到工件已上传:

现在,我们可以下载 SBOM 并查看内容:

{"bomFormat": "CycloneDX","specVersion": "1.4","serialNumber": "urn:uuid:a61bf508-f014-4cfb-98e5-5564e3699ec1","version": 1,"metadata": {"timestamp": "2022-10-10T04:45:04Z","tools": [{"vendor": "anchore","name": "syft","version": "0.53.4"}],"component": {"bom-ref": "af63bd4c8601b7f1","type": "file","name": "."}},"components": [{"bom-ref": "pkg:golang/github.com/ironcore864/go-hello-module@v0.1.0?package-id=caa41d3c947da3ea","type": "library","name": "github.com/ironcore864/go-hello-module","version": "v0.1.0","cpe": "cpe:2.3:a:ironcore864:go-hello-module:v0.1.0:*:*:*:*:*:*:*","purl": "pkg:golang/github.com/ironcore864/go-hello-module@v0.1.0","properties": [{"name": "syft:package:foundBy","value": "go-mod-file-cataloger"},{"name": "syft:package:language","value": "go"},{"name": "syft:package:type","value": "go-module"},{"name": "syft:cpe23","value": "cpe:2.3:a:ironcore864:go_hello_module:v0.1.0:*:*:*:*:*:*:*"},{"name": "syft:location:0:path","value": "go.mod"}]}]}

简要说明:正如预期的那样,我们首先看到对 BOM 格式 (CycloneDX) 和版本的引用,然后是与此唯一 BOM 相对应的唯一序列号。如果我们在不更改内容的情况下重新生成 SBOM,则此 ID 将不同。

然后我们有一些元数据,最后是组件列表。你可以看到“CPE”和“PURL”字段,这些实际上是漏洞规范:CPE 实际上有点过时,但包 URL (PURL) 是另一个通用识别包的标准。

这意味着无论包属于哪个供应商、项目或生态系统,都可以为其关联一个唯一的 ID。因此,可以根据漏洞数据库计算相关风险。

当然,Syft还有很多其他的功能,你可以指定不同的SBOM格式和文件格式。在他们的GitHub 存储库中阅读更多内容。
概括
随着越来越多地使用第三方开源库来构建容器化的分布式应用程序,准确了解软件中的哪些部分变得更具挑战性。这就是 SBOM 越来越受欢迎的原因。

在本教程中,您了解了使用 SBOM 的内容、原因和方法。下一个见。

" Type="normal"@@-->

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
为这场和谈,巴基斯坦押上国运!万人封城不给以色列任何可乘之机

为这场和谈,巴基斯坦押上国运!万人封城不给以色列任何可乘之机

青青子衿
2026-04-11 02:19:32
两任妻子和谐同框!网友:罗斯有一手啊

两任妻子和谐同框!网友:罗斯有一手啊

草莓解说体育
2026-04-12 15:13:07
新华社快讯:伊朗代表团离开巴基斯坦

新华社快讯:伊朗代表团离开巴基斯坦

新华社
2026-04-12 11:55:14
信号不一般!闭门会谈1小时释放信号,郑丽文突然发出关键邀请

信号不一般!闭门会谈1小时释放信号,郑丽文突然发出关键邀请

坠入二次元的海洋
2026-04-11 19:13:18
果然不知感恩!美伊刚谈判,美就卸磨杀驴,对中国提了项无理要求

果然不知感恩!美伊刚谈判,美就卸磨杀驴,对中国提了项无理要求

阿雹娱乐
2026-04-12 13:05:47
回到台湾就被抓?郑丽文和大陆谈完,临走前达成共识,赖清德急了

回到台湾就被抓?郑丽文和大陆谈完,临走前达成共识,赖清德急了

春序娱乐
2026-04-12 01:44:48
网传业内人士名单:4位奥运冠军+央视名记在282人群 未辱骂全红婵

网传业内人士名单:4位奥运冠军+央视名记在282人群 未辱骂全红婵

念洲
2026-04-11 22:07:23
美伊和谈正式宣告失败,特朗普准备再次开战,中方发出紧急警告

美伊和谈正式宣告失败,特朗普准备再次开战,中方发出紧急警告

风干迷茫人
2026-04-12 14:31:21
2024年骂全红婵“不跳水像白痴”、“疯疯癫癫”的记者,如今怎么样了?

2024年骂全红婵“不跳水像白痴”、“疯疯癫癫”的记者,如今怎么样了?

落纸生花创意手工
2026-04-12 12:10:17
特朗普已做好开战准备?王毅曾警告:中美一旦冲突,结局只剩1个

特朗普已做好开战准备?王毅曾警告:中美一旦冲突,结局只剩1个

霁寒飘雪
2026-04-11 09:54:10
亚锦赛战报:太强了,石宇奇11-0/10-0暴打世界第6,横扫晋级决赛

亚锦赛战报:太强了,石宇奇11-0/10-0暴打世界第6,横扫晋级决赛

求球不落谛
2026-04-11 19:03:51
港媒:“赌王”何鸿燊女儿何超蕸去世,临终前家人陪伴身边

港媒:“赌王”何鸿燊女儿何超蕸去世,临终前家人陪伴身边

环球网资讯
2026-04-12 15:00:15
曼城看似落后榜首9分实则赢下切尔西就只差3分,下轮迎天王山之战

曼城看似落后榜首9分实则赢下切尔西就只差3分,下轮迎天王山之战

林子说事
2026-04-12 13:00:15
甘肃天水一校花太漂亮了,身高170五官精致,美得让人移不开眼

甘肃天水一校花太漂亮了,身高170五官精致,美得让人移不开眼

奇葩游戏酱
2026-04-10 00:50:35
澳媒:中国不怕美国,已准备好打仗,大部分国家都想与中国做生意

澳媒:中国不怕美国,已准备好打仗,大部分国家都想与中国做生意

小吐说故事
2026-04-12 13:36:40
收到神秘礼物 郑丽文惊喜到表情失控 郑丽文笑开花:当然想去深圳

收到神秘礼物 郑丽文惊喜到表情失控 郑丽文笑开花:当然想去深圳

军武咖
2026-04-11 18:50:44
一代神车,退场了

一代神车,退场了

凤凰网财经
2026-03-26 19:58:07
中国经济规模超美国128%,突破70万亿大关成世界最大经济体

中国经济规模超美国128%,突破70万亿大关成世界最大经济体

领悟看世界
2026-04-08 00:07:56
深圳单独给老人发津贴,为何董明珠却表态:农民养老金慢慢来?

深圳单独给老人发津贴,为何董明珠却表态:农民养老金慢慢来?

匀枫财技大兜底
2026-04-11 13:23:09
46号令来了!国企全面清查,所有人自查照着做就行

46号令来了!国企全面清查,所有人自查照着做就行

奇思妙想生活家
2026-04-12 04:55:26
2026-04-12 15:48:49
牛马科技
牛马科技
业务数码玩家.无聊的博主
5921文章数 614关注度
往期回顾 全部

汽车要闻

焕新极氪007/007GT上市 限时19.39万起

头条要闻

"赌王"何鸿燊女儿何超蕸去世 临终前家人陪伴在侧

头条要闻

"赌王"何鸿燊女儿何超蕸去世 临终前家人陪伴在侧

体育要闻

五大联赛首冠出炉?拜仁或提前4轮卫冕德甲

娱乐要闻

46岁赵达官宣结婚!曾与殷桃谈婚论嫁

财经要闻

三轮磋商谈至深夜 美伊谈判三大议题仍待解

科技要闻

理想称遭恶意拉踩,东风日产:尊重同行

态度原创

家居
游戏
手机
旅游
军事航空

家居要闻

复古风格 自然简约

多款经典卡普空游戏获Steam Deck兼容效果提升

手机要闻

荣耀600系列海外发预告片,外观设计正式确认

旅游要闻

五一机票预订量涨8%,北京位居热门目的地榜首|提振消费看京潮

军事要闻

美国副总统万斯:美伊谈判未能达成协议

无障碍浏览 进入关怀版