不可变发布是指在发布后资产和关联的 Git 标记无法更改的发布。使用此类发布可通过阻止供应链攻击来提升安全性。攻击者无法
- 向当前项目发布注入漏洞或恶意软件。
- 对资产和标签进行更改,可能会破坏开发者工作流。
不可变发布保护的内容
当您启用不可变发布时,将强制执行以下保护措施
- Git 标签不能被移动:一旦发布不可变发布,其关联的 Git 标签将锁定到特定提交,无法更改,也无法在发布存在期间删除。如果删除不可变发布,您可以删除该标签,但不能重新使用相同的标签名称。
- 发布资产不可被修改或删除:所有附加到发布的文件(如二进制文件和压缩包)都受到防止修改或删除的保护。
此外,创建不可变发布会自动生成一个发布证明,这是一种可通过加密方式验证的发布记录,包含发布标签、提交 SHA 和发布资产。使用者可以利用该证明确保他们使用的发布和制品与 GitHub 上发布的完全匹配。
注意
不可变发布包括对仓库复活攻击的防护。即使您删除了仓库并使用相同名称重新创建,也无法重用原仓库中与不可变发布关联的标签。
如果发布是不可变的,您将在发布页面标题下看到“不可变” 在发布页面的标题下方。
发布不可变发布的最佳实践
我们建议使用以下工作流程来发布不可变发布。
- 将发布创建为草稿。
- 将所有关联资产附加到草稿发布。
- 发布草稿发布。
这确保所有资产在发布变为不可变之前已就绪,避免需要规避不可变性限制。
后续步骤
要了解如何为您的仓库或组织启用不可变发布,请参阅 防止对您的发布进行更改。
要了解如何确保发布及本地资产未被更改,请参阅 验证发布的完整性。