概述
关于工件认证
项目证明的 SLSA 级别
SLSA 框架是用于评估供应链安全性的行业标准。 它按级别进行组织。 每个级别都表示软件供应链的安全性和可信度不断提高。 项目证明本身满足 SLSA v1.0 生成级别 2 的要求。
这在你的项目及其构建说明之间建立了链接,但你可以更进一步,通过要求构建使用已知且经过审核的构建说明来实现。 要执行此操作,最好是让生成工作在组织中许多存储库共享的可重用工作流中进行。 可重用工作流可以在生成过程和调用方工作流之间提供隔离,以满足 SLSA v1.0 生成级别 3 的要求。 有关详细信息,请参阅“使用项目证明和可重用工作流来实现 SLSA v1 生成级别 3”。
有关 SLSA 级别的详细信息,请参阅 SLSA 安全级别。
GitHub 如何生成项目证明
若要生成工件声明,GitHub 使用 Sigstore,该项目是一个开源项目,它提供一个全面的解决方案,用于通过声明对软件工件进行签名和验证。
生成工件证明的公共存储库使用 Sigstore 公共良好实例。 生成的 Sigstore 捆绑包的副本随GitHub一起存储,还写入到 Internet 上可公开读取的不可变透明度日志。
**Private 存储库**使用 GitHub 的 Sigstore 实例生成工件认证。 GitHub 的 Sigstore 实例使用与 Sigstore Public Good 实例相同的代码库,但它没有透明度日志,并且仅与 GitHub Actions 联动。
何时生成证明
仅生成证明并不能提供任何安全优势,必须验证证明才能实现该优势。 下面是有关如何考虑签署内容和签署频率的一些指南:
你应该签署:
-
你发布的软件希望用户能够运行
gh attestation verify ...。 -
人们会运行的二进制文件、会下载的包,或包含详细内容的哈希的清单。
**不应**签署: -
用于自动测试的频繁生成。
-
单个文件,如源代码、文档文件,或嵌入图像。
验证工件声明
如果使用发布项目证明的软件,则可以使用 GitHub CLI 来验证这些证明。 由于证明提供了有关软件在哪里以及如何构建的信息,因此可以使用这些信息来创建和强制实施安全策略,从而提高供应链安全性。
警告
请务必记住,项目证明_不能_保证项目是安全的。 相反,项目证明会将你链接到源代码和生成它们的生成说明。 可以定义策略标准,通过评估内容来评估该策略,并在使用软件时做出明智的风险决策。
后续步骤
要开始生成和验证生成项目证明,请参阅 使用工件声明来确定构建的来源。