Syft 是命令行工具与 Go 库,用于从容器镜像和文件系统生成软件物料清单(SBOM)。它可检测 28+ 生态系统的软件包,包括 Alpine(apk)、C/C++(conan)、Dart(pub)、Debian/Ubuntu(dpkg)、Dotnet(deps.json)、Go(go.mod)、Java(JAR/WAR/EAR/Maven/Gradle)、JavaScript(npm/yarn)、PHP(composer)、Python(pip/poetry/setup.py)、Red Hat(RPM)、Ruby(gem)、Rust(cargo)、Swift(cocoapods),以及 OCI 镜像、Docker 镜像、Singularity、容器层和 Linux 发行版。
主要能力:为容器镜像、目录、归档生成 SBOM;支持 CycloneDX 1.4+(JSON/XML)、SPDX 2.3、Syft 原生 JSON/文本、GitHub 依赖提交及自定义 Go 模板输出;支持多架构镜像、私有仓库认证、OCI/Docker 归档扫描、按 scope 扫描全部层或压缩视图,并可通过 .syft.yaml 或环境变量配置排除规则、仓库认证与日志级别。
典型用法:本地安装后执行 syft <image> -o cyclonedx-json=sbom.json;也可用 Docker 镜像 anchore/syft:latest 生成。对目录执行 syft dir:/path/to/project -o cyclonedx-json=app-sbom.json。可同时输出多种格式,生成后用 Grype 扫描:grype sbom:sbom.json。可与 cosign 配合签名:cosign attest --predicate sbom.json --type cyclonedx <image>,并可用 cosign verify-attestation 验证。CI/CD 中可集成 GitHub Actions、GitLab CI、Jenkins。
限制与注意事项:SBOM 可能包含内部包名与版本,需安全存储并限制访问;仓库访问应使用只读凭证;资料未提供具体收费、价格与性能基准,暂未提供。工具支持合规场景,但合规责任仍在使用方。