我们对开源Salus感到兴奋和自豪,这是 Microsoft软件材料清单 (SBOM) 工具。作为改善国家网络安全行政命令的一项关键要求,SBOM 是构成软件组件的成分列表,并为组织提供对其供应链依赖关系的洞察。

Salus SBOM 工具是一种通用的、经过企业验证的、构建时的 SBOM 生成器。它适用于包括 Windows、Linux 和 Mac 在内的平台,并使用标准的 软件包数据交换 (SPDX)格式。(要查看之前关于我们的 SBOM 工具的公告,请阅读在 Microsoft 使用 SPDX 生成软件物料清单 (SBOMS)。)

微软开源 Salus 软件物料清单 (SBOM) 生成工具插图

Salus 可以轻松集成到构建工作流程中,并通过组件检测自动检测 NPM、NuGet、PyPI、CocoaPods、Maven、Golang、Rust Crates、RubyGems、容器内的 Linux 包、Gradle、Ivy、GitHub 公共存储库等。随着我们向组件检测中添加更多检测器,它也将改进我们的 SBOM 工具。

Salus 生成的SBOM包含基于 SPDX 规范的四个主要部分:

  1. 文档创建信息:关于 SBOM 文档的一般信息,例如软件名称、SPDX 许可证、SPDX 版本、文档的创建者、创建时间等。
  2. 文件部分:组成软件的文件列表。每个文件都有一些属性,包括其内容的哈希值(SHA-1、SHA-256)。
  3. 包部分:构建软件时使用的包列表。每个包都有其他属性,例如名称、版本、供应商、哈希(SHA-1、SHA-256)和包 URL ( purl ) 软件标识符。
  4. 关系部分: SBOM 的不同元素之间的关系列表,例如文件和包。

Salus 还可以参考其他 SBOM 文档来捕获完整的依赖关系树。这是包含对 SBOM 文档的依赖项引用的重要功能,或者来自先前构建的 SBOM 文档,这些文档在后续构建中使用,如下所示。

Image SALUS 分层构建过程

生成的 SBOM 文档引用将添加到“文档创建信息”部分,示例如下所示。

"externalDocumentRefs": [

{

"externalDocumentId": "DocumentRef-Demo-861-71558f43fca51a285338834fb9b3c7c14a78cd77",

"spdxDocument": "https://sbom.microsoft/1:VF6zo7ndBEakT2mCbPwGug:j5h1PLm-TkijVnfDJD_CCA/7:861/MMerAxYfQkOTN4dWqqlV-A",

"checksum": {

"algorithm": "SHA1",

"checksumValue": "71558f43fca51a285338834fb9b3c7c14a78cd77“

}

},

Microsoft 希望与开源社区合作,帮助所有人遵守行政命令。开源 Salus 是在我们的社区内促进协作和创新的重要一步,我们相信这将使更多的组织能够生成 SBOM 并为其发展做出贡献。

准备好开始了吗?请阅读指南以了解有关贡献的更多信息,并按照这些说明生成 SBOM。如果您想分享任何反馈和/或报告任何错误,请随时通过讨论和问题进行。您的反馈将有助于塑造 Salus SBOM 工具的未来,并确保所有人的供应链安全。如果您发现该工具有用,我们希望在microsoft/sbom-tool GitHub 存储库上加星。