2.2. 设置 OpenShift Pipelines 以下载或查看 SBOM
PipelineRun
详情页面提供了一个下载或查看 Software Bill of Materials (SBOMs)的选项,增强了您的供应链中的透明度和控制。SBOMs 列出组件使用的所有软件库。这些库可以启用特定的功能或便于开发。
您可以使用 SBOM 更好地了解软件组成,识别漏洞,并评估可能出现的任何安全问题的潜在影响。
图 2.4. 下载或查看 SBOMs 的选项
先决条件
- 已登陆到 web 控制台。
- 在项目中拥有适当的角色和权限, 可在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
- 在 Developer 或 Administrator 视角中,切换到需要 SBOM 的可视化表示的相关项目。
使用以下格式添加任务来查看或下载 SBOM 信息:
SBOM 任务示例
apiVersion: tekton.dev/v1 kind: Task metadata: name: sbom-task 1 annotations: task.output.location: results 2 task.results.format: application/text task.results.key: LINK_TO_SBOM 3 task.results.type: external-link 4 spec: results: - description: Contains the SBOM link 5 name: LINK_TO_SBOM steps: - name: print-sbom-results image: quay.io/image 6 script: | 7 #!/bin/sh syft version syft quay.io/<username>/quarkus-demo:v2 --output cyclonedx-json=sbom-image.json echo 'BEGIN SBOM' cat sbom-image.json echo 'END SBOM' echo 'quay.io/user/workloads/<namespace>/node-express/node-express:build-8e536-1692702836' | tee $(results.LINK_TO_SBOM.path) 8
更新 Pipeline,以引用新创建的 SBOM 任务。
... spec: tasks: - name: sbom-task taskRef: name: sbom-task 1 results: - name: IMAGE_URL 2 description: url value: <oci_image_registry_url> 3
- 重新运行受影响的 OpenShift Pipeline。
2.2.1. 在 Web UI 中查看 SBOM
先决条件
- 您已将 OpenShift Pipelines 设置为下载或查看 SBOMs。
流程
-
进入到 Activity
PipelineRuns 选项卡。 - 对于您要查看的 SBOM 的项目,请选择其最新的管道运行。
在
PipelineRun
详情页中,选择 View SBOM。-
您可以使用 Web 浏览器立即搜索 SBOM 以了解软件供应链中漏洞的术语。例如,尝试搜索
log4j
。 - 您可以选择 Download 下载 SBOM 或 Expand 来查看它全屏。
-
您可以使用 Web 浏览器立即搜索 SBOM 以了解软件供应链中漏洞的术语。例如,尝试搜索
2.2.2. 在 CLI 中下载 SBOM
先决条件
- 已安装 Cosign CLI 工具。
- 您已将 OpenShift Pipelines 设置为下载或查看 SBOMs。
流程
- 打开终端,登录到 Developer 或 Administrator 视角,然后切换到相关项目。
在 OpenShift web 控制台中复制
download sbom
命令,并在终端中运行它。cosign 命令示例
$ cosign download sbom quay.io/<workspace>/user-workload@sha256
(可选)要以可搜索格式查看完整的 SBOM,请运行以下命令来重定向输出:
cosign 命令示例
$ cosign download sbom quay.io/<workspace>/user-workload@sha256 > sbom.txt
2.2.3. 阅读 SBOM
在 SBOM 中,如以下示例摘录所示,您可以看到项目使用的每个库的四个特征:
- 其作者或发布者
- 其名称
- 其版本
- 其许可证
这些信息可帮助您验证单个库是否安全源、更新并合规。
SBOM 示例
{ "bomFormat": "CycloneDX", "specVersion": "1.4", "serialNumber": "urn:uuid:89146fc4-342f-496b-9cc9-07a6a1554220", "version": 1, "metadata": { ... }, "components": [ { "bom-ref": "pkg:pypi/flask@2.1.0?package-id=d6ad7ed5aac04a8", "type": "library", "author": "Armin Ronacher <armin.ronacher@active-4.com>", "name": "Flask", "version": "2.1.0", "licenses": [ { "license": { "id": "BSD-3-Clause" } } ], "cpe": "cpe:2.3:a:armin-ronacher:python-Flask:2.1.0:*:*:*:*:*:*:*", "purl": "pkg:pypi/Flask@2.1.0", "properties": [ { "name": "syft:package:foundBy", "value": "python-package-cataloger" ...