大家好!👋 今天,我想和大家聊聊软件供应链安全的核心——SBOM(Software Bill of Materials),并介绍一个很棒的工具bom,它能让你在终端中通过一行命令轻松创建SBOM。

📜 SBOM到底是什么?
我们买一包零食时,背面都会详细列出成分表,说明里面有什么配料,对吧?SBOM正是软件的成分表。
它可以说是一份清单,包含了构建你的应用程序所使用的所有开源库、框架、模块等,以及它们的版本和许可证信息。最近Log4j事件等开源漏洞引发了巨大影响,因此,了解你使用的软件中包含哪些组件的SBOM的重要性日益增加。🛡️
然而…当你真正尝试创建SBOM时,可能会感到无从下手。你可能会想:“我怎么才能找到我项目中的所有依赖呢?” 就在这时,我们的英雄登场了!✨
✨ Kubernetes选择的SBOM工具,bom命令!
bom是Kubernetes的SIG-Release(发布管理组)正在开发的开源SBOM生成工具。它无需复杂的配置,通过简单的命令即可轻松地从源代码目录、容器镜像等各种目标生成SBOM。
bom的核心优势!
- 🚀 简单快捷: 安装和使用都非常简单,任何人都可以立即上手。
- 🌐 支持标准格式: 支持SBOM的两大主流格式:SPDX和CycloneDX,可以轻松与其他安全工具集成。
- 💪 多功能: 不仅可以为源代码目录生成SBOM,还可以为Docker等容器镜像,甚至单个文件生成SBOM。
🛠️ 我们从安装bom开始吧?
bom可以通过多种方式安装。选择最方便的方法吧!
1. 使用Homebrew (macOS/Linux) 🍺 这是最简单的方法。只需在终端中输入以下命令,安装就完成了!
brew install bom
2. 使用Go语言安装 🐹 如果你已经安装了Go,可以使用以下命令进行安装。
go install sigs.k8s.io/bom/cmd/bom@latest
3. 下载发布二进制文件 💻 你也可以从官方GitHub发布页面直接下载适合你操作系统的二进制文件来使用。
安装完成后,在终端中运行版本检查命令,确认是否成功安装!
bom version
👨💻 好了,现在我们来亲手创建SBOM吧! (核心用法)
bom的用法非常直观。我们通过两个最常用的场景来了解一下吧!
场景1:从源代码目录生成SBOM 📂
这是最常见的情况:分析包含项目源代码的目录以创建SBOM。
基本用法 导航到你的项目根目录,然后运行以下命令。
# 分析当前目录(.)以生成SBOM
bom generate -d .
然后,你会在终端中看到项目依赖的软件包列表滚动显示。
以标准格式保存到文件 通常,我们会将SBOM保存为标准格式(SPDX或CycloneDX)的文件,而不是直接输出到终端。你可以使用-f或–format选项。
# 以SPDX格式(JSON)生成SBOM文件
bom generate -d . -f spdx-json > bom.spdx.json
# 以CycloneDX格式(JSON)生成SBOM文件
bom generate -d . -f cyclonedx-json > bom.cdx.json
这样生成的bom.spdx.json或bom.cdx.json文件可以用于安全扫描器或上传到资产管理系统。📝
场景2:从容器镜像生成SBOM 🚢
在DevOps环境中,了解容器镜像的组成部分至关重要。bom只需提供镜像名称即可立即开始分析。
基本用法 使用-i或–image选项指定要分析的容器镜像。
# 分析官方nginx:latest镜像
bom generate -i nginx:latest
以标准格式保存到文件 同样,你可以使用-f选项保存到文件。
# 以CycloneDX格式保存nginx镜像的SBOM
bom generate -i nginx:latest -f cyclonedx-json > nginx-sbom.cdx.json
现在,你可以透明地查看容器镜像内部安装了哪些软件包了!🔍
✅ 总结
软件供应链安全的第一步始于了解你正在使用什么。SBOM不再是专家专属的领域。多亏了像bom这样优秀的工具,我们所有人现在都可以轻松创建和管理项目的成分表了。
何不立即将bom应用到你的项目中,检查隐藏的依赖项,并构建更安全的软件呢?
如果需要更多详细信息,请访问bom官方GitHub仓库!
标签: SBOM, Software Bill of Materials, bom, CLI, Security, DevSecOps, Kubernetes, Open Source, CycloneDX, SPDX, 软件供应链安全
发表回复