为实际交付的产物建立清单
锁文件描述的是依赖解析结果,不一定等于生产运行的产物。容器镜像还包含运行时基础镜像、操作系统包和复制的二进制文件。应从最终产物生成 SBOM,使清单与部署内容一致。SPDX 和 CycloneDX 都有广泛生态;选定一种并保持格式稳定,方便下游工具消费。
syft myapp:1.4.0 -o cyclonedx-json=sbom.cdx.json
grype sbom:sbom.cdx.json --fail-on high
纳入发布流程
事故期间临时生成的 SBOM 往往找不到。应在 CI 中为每次构建生成,按提交或镜像摘要命名,并附加到发布产物。同时记录扫描器和数据库版本,使后续比较有意义。同一提交如果重新构建,也要重新生成 SBOM;基础镜像和传递依赖可能变化。
带分级策略扫描
对所有发现都硬失败会造成告警疲劳并促使团队绕过。默认对高危和严重发现失败,允许有负责人和到期日的记录例外,并定期复查。优先处理可从应用触达的漏洞,但不要因为可达性未知就忽略严重包。门禁要足够严格以有意义,也要足够具体以可行动。
验证清单
确认已知传递依赖出现在 SBOM 中,运行时基础镜像的包也被包含。数量本身可能误导,但突然下降通常意味着扫描器漏掉了依赖。固定并复现 SBOM 生成步骤;扫描器升级可能改变输出和门禁结果。