关于本指南
本指南介绍为提高生成系统的安全性而做出的影响最大的更改。 每个部分都概述了可以对流程进行的更改,以提高安全性。 影响最大的更改列在前面。
风险是什么?
对软件供应链的一些攻击直接面向生成系统。 如果攻击者可以修改生成过程,则他们可以利用� 的系统,而� 需� �坏个人帐户或代� �。 请务必确保不要忘记保护生成系统以及个人帐户和代� �。
保护生成系统
生成系统应具有以下� 种安全功能:
-
生成步骤应清晰且可重复。
-
应确切地知道在生成过程中运行的内容。
-
每个生成都应在新的环境中启动,� 此泄露的生成不会持久影响将来的生成。
GitHub Actions 可以帮助� 满足这些功能。 生成说明与代� �一起存储在存储库中。 选择生成在哪些环境中运行,包括 Windows、Mac、Linux 或自己托管的运行程序。 每次生成都从一个新的运行器� 像开始,这使得攻击很难在生成环境中持续存在。
除了安全优势之外,GitHub Actions 还允许� 手动、定期或针对存储库中的 git 事件触发生成,以实现频繁快速的生成。
GitHub Actions 是一个很大的主题,但一个很好的起点是“了解 GitHub Actions”,以及“选择 GitHub 托管的运行器”和“触发工作流”。
对生成进行签名
生成过程安全后,需要防止有人篡改生成过程的最终结果。 一种很好的方法是对生成进行签名。 公开分发软件时,这通常是使用� 密公钥/私钥对完成的。 使用私钥对生成进行签名,并发布公钥,以便软件用户在使用生成之前验证其签名。 如果修改生成的字节,则不会验证签名。
具体如何签名取决于所编写的代� �类型以及用户是谁。 通常很难知道如何安全地存储私钥。 此处的一个基本选项是使用 GitHub Actions � 密的机密,但需要谨慎限制谁有权访问这些 GitHub Actions 工作流。 如果私钥只能通过专用网络访问,另一个选项是为 GitHub Actions 使用自托管运行程序。
有关详细信息,请参阅“� 密机密”和“关于自托管运行程序”。
强化 GitHub Actions 的安全性
可以采取许多进一步的步骤来确保 GitHub Actions 的安全。 具体而言,请谨慎评估第三方工作流,并考虑使用 CODEOWNERS
限制谁可以对工作流进行更改。
有关详细信息,请参阅“GitHub Actions 的安全强化”,特别是“使用第三方操作”和“使用 CODEOWNERS
监视更改”。