使用 Anchore SBOM Action 生成软件物料清单 (SBOM) 教程
1. 项目介绍
Anchore SBOM Action 是一个 GitHub Action,用于生成软件物料清单 (SBOM)。SBOM 是一种文档,列出了构成软件产品的组件、库和其他依赖项。通过使用 Anchore SBOM Action,开发者可以自动化生成 SBOM,并将其作为工作流的一部分上传到 GitHub。
该项目的主要功能包括:
- 扫描容器镜像、文件或目录以生成 SBOM。
- 支持多种 SBOM 格式,如 SPDX 和 CycloneDX。
- 自动检测 GitHub 发布并上传 SBOM 作为发布资产。
- 支持自定义 SBOM 输出名称和格式。
2. 项目快速启动
2.1 安装与配置
首先,确保你已经有一个 GitHub 仓库,并且已经配置了 GitHub Actions。接下来,在你的 GitHub 仓库中创建一个新的工作流文件(例如 .github/workflows/sbom.yml
)。
2.2 基本使用
以下是一个基本的 GitHub Actions 工作流配置,用于生成 SBOM:
name: Generate SBOM
on:
push:
branches:
- main
jobs:
generate-sbom:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Generate SBOM
uses: anchore/sbom-action@v0
2.3 扫描容器镜像
如果你想扫描一个容器镜像,可以使用 image
参数:
- name: Generate SBOM for container image
uses: anchore/sbom-action@v0
with:
image: ghcr.io/example/image_name:tag
2.4 扫描特定目录或文件
如果你想扫描特定目录或文件,可以使用 path
或 file
参数:
- name: Generate SBOM for specific directory
uses: anchore/sbom-action@v0
with:
path: /build/
- name: Generate SBOM for specific file
uses: anchore/sbom-action@v0
with:
file: /build/file
3. 应用案例和最佳实践
3.1 自动化 SBOM 生成
在 CI/CD 流程中,自动化生成 SBOM 可以帮助团队更好地管理软件依赖项。通过将 SBOM 生成作为工作流的一部分,可以在每次代码推送或发布时自动生成 SBOM,并将其上传到 GitHub。
3.2 集成到发布流程
Anchore SBOM Action 可以自动检测 GitHub 发布,并在发布时上传 SBOM 作为发布资产。这使得 SBOM 可以与软件版本一起分发,方便用户和安全团队进行依赖项分析。
3.3 自定义 SBOM 输出
通过使用 artifact-name
参数,可以自定义 SBOM 的输出名称。这在多步骤工作流或矩阵构建中特别有用,可以避免因重复名称导致的错误。
4. 典型生态项目
4.1 Anchore Engine
Anchore Engine 是一个开源的容器镜像扫描工具,可以与 Anchore SBOM Action 结合使用,提供更全面的容器安全解决方案。
4.2 Syft
Syft 是一个开源的 SBOM 生成工具,Anchore SBOM Action 使用 Syft 作为其核心引擎。Syft 支持多种 SBOM 格式,并且可以扫描容器镜像、文件和目录。
4.3 GitHub Actions
GitHub Actions 是一个强大的 CI/CD 平台,Anchore SBOM Action 充分利用了 GitHub Actions 的功能,使得 SBOM 生成和上传变得简单和自动化。
通过结合这些生态项目,开发者可以构建一个完整的软件供应链安全解决方案,确保软件依赖项的透明性和安全性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考