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

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.

相关推荐
热点推荐
油价要跌破天!4月9日油价迎来大幅暴跌,调价后全国地区油价价格

油价要跌破天!4月9日油价迎来大幅暴跌,调价后全国地区油价价格

趣味萌宠的日常
2026-04-09 15:43:22
锦鸡股份业绩亏损;美联储或将降息;欣旺达股价大涨;坚朗五金首现亏损 | 4月12日财经日报

锦鸡股份业绩亏损;美联储或将降息;欣旺达股价大涨;坚朗五金首现亏损 | 4月12日财经日报

财经的视界
2026-04-12 01:02:39
美伊停火后,俄方态度180度大变,批评伊朗:攻击了我们的兄弟

美伊停火后,俄方态度180度大变,批评伊朗:攻击了我们的兄弟

肖兹探秘说
2026-04-10 18:09:07
争议!海港1场4次换人 疑违规用脑震荡换人 杨世元伤腿却倒地捂头

争议!海港1场4次换人 疑违规用脑震荡换人 杨世元伤腿却倒地捂头

我爱英超
2026-04-11 22:17:09
2-1绝杀升班马,梅州客家逆转+迎2连胜,32岁广州队旧将一剑封喉

2-1绝杀升班马,梅州客家逆转+迎2连胜,32岁广州队旧将一剑封喉

俯身冲顶
2026-04-11 21:28:01
杨振宁去世5个月后,49岁翁帆现状:剪了头发染了色,仍独居国内

杨振宁去世5个月后,49岁翁帆现状:剪了头发染了色,仍独居国内

照见古今
2026-03-26 19:06:28
重磅!万科有救了?深圳出手了!

重磅!万科有救了?深圳出手了!

阿离家居
2026-04-11 08:30:11
蒋纬国临终前爆料:蒋介石根本没有生育能力,蒋经国也不是亲生的

蒋纬国临终前爆料:蒋介石根本没有生育能力,蒋经国也不是亲生的

芳芳历史烩
2026-04-11 18:48:07
益阳家长请收好!2026年中小学招生入学政策要点汇总

益阳家长请收好!2026年中小学招生入学政策要点汇总

益阳广电
2026-04-11 14:16:12
李想朋友圈炮轰:遭遇“最恶劣内卷”,东风日产高管回应:尊重每一家同行,包括理想汽车

李想朋友圈炮轰:遭遇“最恶劣内卷”,东风日产高管回应:尊重每一家同行,包括理想汽车

鲁中晨报
2026-04-11 19:48:04
65年的奇迹!林肯城重返英冠,“小魔鬼”终于等到了这一天

65年的奇迹!林肯城重返英冠,“小魔鬼”终于等到了这一天

陌识
2026-04-10 22:21:09
升级版的仙人跳,比戴绿帽子还憋屈

升级版的仙人跳,比戴绿帽子还憋屈

霹雳炮
2026-02-24 22:53:34
大快人心!国家出手擒下3名华人首富,他们干的事,根本不能饶恕

大快人心!国家出手擒下3名华人首富,他们干的事,根本不能饶恕

墨印斋
2026-03-24 21:34:56
跑高速时,车速120其实最费油,内行人:保持这个速度才最省油

跑高速时,车速120其实最费油,内行人:保持这个速度才最省油

西莫的艺术宫殿
2026-04-11 18:58:45
女儿涉嫌抄袭,贾平凹应有所回应

女儿涉嫌抄袭,贾平凹应有所回应

观察者网
2026-04-09 11:31:07
盼了好久!《佳偶天成》新剧照释出,四月终于要开播啦

盼了好久!《佳偶天成》新剧照释出,四月终于要开播啦

小邵说剧
2026-04-10 17:33:17
洛克希德马丁公司宣传“超级大力神”为美军在伊朗损失C-130洗地

洛克希德马丁公司宣传“超级大力神”为美军在伊朗损失C-130洗地

hawk26讲武堂
2026-04-10 13:09:52
7岁女童阴道炎反复难愈,手术后竟然取出一整支精华液!

7岁女童阴道炎反复难愈,手术后竟然取出一整支精华液!

深圳晚报
2026-04-09 16:19:33
争冠悬念再起,阿森纳多赛两轮暂时领先曼城9分

争冠悬念再起,阿森纳多赛两轮暂时领先曼城9分

懂球帝
2026-04-11 22:16:10
莫拉托格鲁:球迷老龄化越来越严重,年轻人不再看比赛而只看集锦

莫拉托格鲁:球迷老龄化越来越严重,年轻人不再看比赛而只看集锦

网球之家
2026-04-11 22:34:21
2026-04-12 02:56:49
牛马科技
牛马科技
业务数码玩家.无聊的博主
5921文章数 614关注度
往期回顾 全部

汽车要闻

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

头条要闻

事关霍尔木兹海峡通行安排 伊美各执一词

头条要闻

事关霍尔木兹海峡通行安排 伊美各执一词

体育要闻

换帅之后,他们从降级区冲到升级区

娱乐要闻

郑钧回应儿子走路:会监督他挺直腰板

财经要闻

从日本翻身看:这次谁能扛住高油价?

科技要闻

半夜被燃烧瓶砸醒,OpenAI CEO发文反思

态度原创

游戏
健康
时尚
家居
军事航空

排面拉满!《影之刃零》入选国家级艺术杂志

干细胞抗衰4大误区,90%的人都中招

普通人穿衣其实很简单!构造腰线、一衣多穿,大方舒适又自然

家居要闻

复古风格 自然简约

军事要闻

伊朗议长带四名遇难儿童照片赴美伊谈判

无障碍浏览 进入关怀版