Richonn/SBOMForge

GitHub: Richonn/SBOMForge

一个零配置的 GitHub Action,利用 Syft 和 Cosign 在每次发布时自动生成并签名 SBOM,帮助团队轻松满足软件供应链合规要求。

Stars: 1 | Forks: 0

# SBOMForge [![Marketplace](https://img.shields.io/badge/GitHub%20Marketplace-SBOMForge-blue?logo=github)](https://github.com/marketplace/actions/sbomforge) ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/a3076100c1010529.svg) ![License](https://img.shields.io/github/license/Richonn/sbomforge) ![Go version](https://img.shields.io/github/go-mod/go-version/Richonn/sbomforge) ![Latest release](https://img.shields.io/github/v/release/Richonn/sbomforge) ## 为什么选择 SBOMForge? 软件供应链安全不再是可选项。**EU Cyber Resilience Act** 以及 SLSA 等框架要求软件生产者记录其交付的组件。SBOMForge 以零配置实现这一过程的自动化:在每次发布中生成、签名并发布您的 SBOM。 ## 快速开始 ``` on: release: types: [published] jobs: sbom: runs-on: ubuntu-latest permissions: contents: write # upload release asset id-token: write # cosign keyless signing steps: - uses: actions/checkout@v4 - uses: Richonn/sbomforge@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} ``` ## 输入 | 输入 | 必填 | 默认值 | 描述 | |---|---|---|---| | `github-token` | 是 | — | 用于将 SBOM 作为发布资产上传的 GitHub token | | `format` | 否 | `spdx-json` | SBOM 格式:`spdx-json`、`cyclonedx-json`、`syft-json` | | `artifact-name` | 否 | `sbom` | 输出文件名前缀 | | `sign` | 否 | `true` | 使用 Cosign 无密钥模式对 SBOM 进行签名 | | `attach-to-release` | 否 | `true` | 将 SBOM 附加到 GitHub Release | | `upload-to-summary` | 否 | `true` | 在 GitHub Actions Job Summary 中显示摘要 | | `scan-path` | 否 | `.` | 要扫描的目录(适用于 monorepo) | | `image` | 否 | — | 要扫描的 Docker image(例如 `alpine:3.21`、`ghcr.io/org/app:latest`)。如果设置此项,将忽略 `scan-path` | | `fail-on-error` | 否 | `true` | 如果 SBOM 生成失败,则使 job 失败 | ## 输出 | 输出 | 描述 | |---|---| | `sbom-path` | 生成的 SBOM 文件的本地路径 | | `sbom-url` | GitHub Release 上 SBOM 的下载 URL | | `signature-bundle` | Cosign 签名捆绑包的路径 | ## 验证签名 一旦 action 运行完毕,您可以在本地验证 SBOM 签名: ``` cosign verify-blob \ --bundle=sbom.spdx-json.json.bundle \ sbom.spdx-json.json ``` ## 支持的格式 | 格式 | 标志 | 输出文件 | |---|---|---| | SPDX JSON | `spdx-json` | `sbom.spdx-json.json` | | CycloneDX JSON | `cyclonedx-json` | `sbom.cyclonedx-json.json` | | Syft JSON | `syft-json` | `sbom.syft-json.json` | ## Docker image 扫描 要扫描 Docker image 而不是源代码,请传入 `image` 输入: ``` - uses: Richonn/sbomforge@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} image: alpine:3.21 ``` 当设置了 `image` 时,将忽略 `scan-path`。 ## 路线图 - [x] Docker image SBOM 支持 - [ ] 单次运行支持多种格式 - [ ] Monorepo 支持 - [ ] SLSA 证明级别 2 - [ ] Dry-run 模式 - [ ] OCI registry 上传 (ghcr.io) ## 许可证 MIT — 版权所有 2026 Léandre Cacarié
标签:Cosign, CycloneDX, DevSecOps, EVTX分析, GitHub Action, Go语言, Linux安全, SBOM, SLSA, SPDX, Syft, 上游代理, 人工智能安全, 代码签名, 合规性, 无密签名, 日志审计, 欧盟网络弹性法案, 活动识别, 版本发布, 硬件无关, 程序破解, 网络调试, 自动化, 跌倒检测, 软件物料清单, 镜像扫描