不可变版本是指发布后资产和关联 Git 标签无法更改的版本****。 这种版本的使用通过阻止供应链攻击来提高安全性。 攻击者无法:
- 将漏洞或恶意软件注入当前项目版本。
- 对可能会中断开发人员工作流的资产和标记进行更改。
不可变版本保护的内容
启用不可变版本时,将强制实施以下保护:
-
**无法移动或删除 Git 标记**:发布不可变版本后,其关联的 Git 标记被锁定到特定提交,无法更改或删除。 -
**无法修改或删除发布资产**:附加到发布的所有文件(如二进制文件和存档)均受到修改或删除的保护。
此外,创建不可变版本会自动生成发布证明,该证明是包含发布标签、提交 SHA 和发布资产的加密可验证发布记录****。 使用者可以使用此证明来确保其使用的版本和工件与已发布的 GitHub 版本完全匹配。
注意
不可变版本包括针对存储库复活攻击的保护。 即使删除存储库并创建具有相同名称的新存储库,也不能重复使用与原始存储库中不可变版本关联的标记。
对于不可变版本,版本页的标题下方带有“ Immutable”。
发布不可变版本的最佳做法
建议使用以下工作流发布不可变版本。
- 以草稿的形式创建发布。
- 将所有关联的资产附加到草稿发布。
- 发布草稿版本。
确保在发布成为不可更改的之前,所有资产都已到位,以避免需要绕过不可变性限制。
后续步骤
要了解如何为仓库或组织启用不可变版本,请参阅 阻止对版本进行更改。
要了解如何确保版本和本地资产未发生更改,请参阅 验证版本的完整性。