该技能面向软件供应链安全,核心用途是生成软件物料清单(SBOM)、对制品签名并附加来源证明,从而提升发布可信度。适用场景包括:为容器镜像或应用构建产出 SBOM、部署前校验依赖、执行已签名制品与来源策略、准备 SOC2/ISO 27001 或客户安全审查、实施 SLSA 要求、应对 Log4Shell 类供应链漏洞事件。
前置条件:安装 syft 与 cdxgen 生成 SBOM,grype 做漏洞匹配,cosign v2+ 做签名与证明,需要支持 OCI 制品的容器仓库,以及带 OIDC 身份、可做无密钥签名的 CI/CD 流水线。
主要能力:用 syft 从镜像、目录、Dockerfile 生成 CycloneDX 或 SPDX 格式 SBOM,例如 syft ghcr.io/acme/api:v1.2.3 -o cyclonedx-json > sbom-cyclonedx.json;用 cdxgen 生成项目 SBOM,如 cdxgen -o sbom.json .;用 grype/trivy 扫描 SBOM 漏洞并按严重级别阻断;用 cosign 无密钥或密钥签名镜像,并把 SBOM、SLSA 来源以 in-toto 证明形式附加,之后用 cosign verify-attestation 校验;还可在 Kyverno、OPA 等准入策略中强制要求签名与 SBOM。
两种 SBOM 格式各有侧重:CycloneDX 偏应用安全与漏洞跟踪,支持 VEX,适合漏洞管理;SPDX 为 ISO 标准,偏许可证合规与法律关系建模。
限制与注意:Syft 可能漏掉不支持的包管理器依赖,可改用 cdxgen 深度分析;cosign 签名报缺少身份令牌时需确认 CI 已授予 OIDC 权限;Grype 存在误报需核对 SBOM 准确性;SBOM 过大时可压缩或拆分;准入校验失败需检查身份与签发者 URL 是否精确匹配。