本文档介绍了 SBOM 概念,并概述了可帮助您了解软件供应链中依赖项的 Artifact Analysis 功能。
将容器映像存储在 Artifact Registry 中时,您可以创建软件清单 (SBOM) 来描述该映像的内容。了解软件的依赖项有助于您改善安全状况。SBOM 还可以帮助您证明软件的组成,以便遵守行政命令 (EO) 14028 等安全法规。
SBOM
SBOM 是应用的机器可读清单,用于标识您的软件依赖的软件包。内容可以包括供应商提供的第三方软件、内部工件和开源库。
借助 Artifact Analysis,您可以生成 SBOM 或上传自己的 SBOM。
无论您是使用 Artifact Analysis 生成 SBOM,还是上传自己的 SBOM,Artifact Analysis 都会提供一致的存储和检索流程,帮助您在一个位置协调和评估所有依赖项信息。
SBOM 格式
Artifact Analysis 会生成 Software Package Data Exchange (SPDX) 2.3 格式的 SBOM。
如果您想从 Google Cloud 之外上传现有 SBOM,则支持其他格式。请参阅上传 SBOM。
SBOM 存储
Artifact Analysis 会将 SBOM 存储在 Google Cloud 项目的 Cloud Storage 中。SBOM 会继续存储在 Cloud Storage 中,除非您删除 SBOM 对象或删除存储桶。如需了解价格信息,请参阅 Cloud Storage 价格。
支持的软件包类型
SBOM 提供了 Artifact Analysis 扫描可识别的所有软件包的列表。软件包必须封装在容器中,并存储在 Artifact Registry 中的 Docker 代码库中。
Artifact Analysis 支持以下软件包类型:
- 操作系统
- Java (Maven)
- Go
- Python
- Node.js (npm)
SBOM 引用出现情况
除了特定于容器的 SBOM 之外,Artifact Analysis 还会生成 Grafeas SBOM 引用出现情况,其中包含以下信息:
- SBOM 的 Cloud Storage 位置
- SBOM 的哈希值
SbomReferenceIntotoPayload
上的签名
您可以使用该签名来验证 SBOM 是否由 Artifact Analysis 生成。
签名使用 DSSE 签名协议,载荷类型为 application/vnd.in-toto+json
。载荷是 SbomReferenceIntotoPayload
的 JSON 化值。
文件包出现
为了提供更多依赖项信息,Artifact Analysis 还会为每个已安装软件包生成一个 Grafeas package occurrence。软件包出现次数包含以下信息:
- 软件包版本
- 软件包类型
- 已安装软件包的许可信息
限制
- 仅支持对推送到 Artifact Registry 并由 Container Scanning API 评估的容器映像进行已安装软件包跟踪。因此,基于已安装软件包的 gcloud CLI 查询仅适用于存储在 Artifact Registry 中的映像,因为已安装软件包仅在这些映像上进行跟踪。
- 不支持 Container Registry(已弃用)代码库。了解如何从 Container Registry 过渡。