关于 GitHub 安全功能
GitHub 提供了许多功能,使代码更安全。 可以使用 GitHub 的内置功能来了解工作流所依赖的操作,确保收到有关所用操作中的漏洞的通知,或自动执行使工作流中的操作保持最新状态的过程。 如果发布和维护操作,则可以使用 GitHub 与社区就漏洞以及如何修复漏洞进行沟通。 有关 GitHub 提供的安全功能的详细信息,请参阅“GitHub 安全功能”。
本文将介绍如何使用 GitHub 的一些安全功能来提高 GitHub Actions 的使用的安全性。
了解工作流中的依赖项
可以使用依赖项关系图浏览存储库中工作流所使用的操作。 依赖项关系图是存储库中所存储之清单和锁文件的摘要。 它还将 ./github/workflows/
中文件识别为清单,这意味着使用语法 jobs[*].steps[*].uses
或 jobs.<job_id>.uses
引用的任何操作或工作流都将解析为依赖项。
依赖项关系图显示了有关工作流中使用的操作的以下信息:
- 拥有操作的帐户或组织。
- 引用操作的工作流文件。
- 操作固定到的版本或 SHA。
在依赖项关系图中,依赖项按漏洞严重程度自动排序。 如果使用的任意操作有安全公告,它将显示在列表顶部。 可以从依赖项关系图导航到公告,并访问用于解决漏洞的说明。
企业所有者可以为企业配置依赖项关系图和 Dependabot alerts。 有关详细信息,请参阅“为企业启用依赖项关系图”。
了解所使用的操作中的安全漏洞
有关市场上可用的操作,GitHub 会审查相关的安全公告,然后将这些公告添加到 GitHub Advisory Database 中。 可以搜索数据库来了解可用于查找现有漏洞信息的操作以及有关修复这些漏洞方式的说明。 若要简化搜索,请在 GitHub Advisory Database 中使用 GitHub Actions 筛选器。
可以设置存储库,从而:
- 在工作流中使用的操作收到漏洞报告时接收警报。 有关详细信息,请参阅“监视工作流中的操作”。
- 在工作流中添加或更新操作时,系统对现有公告发出警告。 有关详细信息,请参阅“筛选新工作流或更新工作流中的漏洞操作”。
监视工作流中的操作
可以使用 Dependabot 监视工作流中的操作,并启用 Dependabot alerts 以便在使用的操作有报告漏洞时通知你。 Dependabot 执行对启用存储库的默认分支扫描,以检测不安全的依赖项。 Dependabot 在向 GitHub Advisory Database 添加新公告或更新所使用的操作时,将生成 Dependabot alerts。
注意: Dependabot 仅针对使用语义化版本控制的有漏洞操作创建警报,且不会为固定到 SHA 值的操作创建警报。
需要先由企业所有者为你的企业设置 Dependabot,然后你才能管理你存储库的 Dependabot alerts。 有关详细信息,请参阅“为企业启用 Dependabot”。
你可以在存储库的 Dependabot alerts 选项卡中查看所有打开和关闭的 Dependabot alerts 以及对应的 Dependabot security updates。 有关详细信息,请参阅“查看和更新 Dependabot 警报”。
筛选新工作流或更新工作流中的漏洞操作
开立拉取请求来更新工作流时,最好使用依赖项评审来了解对所用操作所做更改的安全影响。 依赖项审查帮助您了解依赖项变化以及这些变化在每个拉取请求中的安全影响。 它提供了一个易于理解的依赖项变化可视化效果,多差异显示在拉取请求的“更改的文件”选项卡上。 依赖项审查告知您:
- 哪些依赖项连同发行日期一起添加、删除或更新。
- 有多少项目使用这些组件。
- 这些依赖项的漏洞数据。
如果对工作流所做的任意更改标记为了易受攻击,则可以避免将其添加到项目或将其更新为安全版本。
有关依赖项评审的详细信息,请参阅“关于依赖项评审”和“配置依赖项审查”。
可以使用存储库中的 dependency-review-action
对拉取请求强制措施依赖项执行评审。 该操作会扫描拉取请求中包版本更改引入的易受攻击的依赖项版本,并警告你相关的安全漏洞。 这样可以更好地了解拉取请求中发生的变化,并帮助防止漏洞添加到存储库中。
默认情况下,如果 依赖项审查操作 检查发现任何易受攻击的包,它将失败。 当存储库所有者需要依赖项审查检查才能通过时,失败的检查将阻止拉取请求合并。 有关详细信息,请参阅“关于受保护分支”。
确保工作流中的操作安全且为最新版本
可使用 Dependabot 来确保对存储库中使用的操作 和可重用工作流 的引用保持最新。 操作通常使用漏洞修复和新功能进行更新,以使自动化流程更快速、更安全、更可靠。 Dependabot 使你无需维护依赖项,因为其会自动执行此操作。 有关详细信息,请参阅“使用 Dependabot 保持操作的最新状态”和“关于 Dependabot 安全更新”。
以下功能可以自动更新工作流中的操作。
- Dependabot version updates 开立拉取请求,以在新版本发布时将操作更新到最新版本。
- Dependabot security updates 打开拉取请求,将带有所报告漏洞的动作更新为最低修补版本。
注意:
- Dependabot 仅支持使用 GitHub 存储库语法(例如
actions/checkout@v4
)更新 GitHub Actions。 Dependabot 将忽略本地引用的操作或可重用工作流(例如,./.github/actions/foo.yml
)。 - 目前不支持 Docker Hub 和 GitHub Packages Container registry URL。 例如,不支持使用
docker://
语法引用 Docker 容器操作。 - Dependabot 支持 GitHub Actions 的公共存储库和专用存储库。 有关专用注册表配置选项,请参阅“dependabot.yml 文件的配置选项”中的“
git
”。
有关如何配置 Dependabot version updates 的详细信息,请参阅“配置 Dependabot 版本更新”。
有关如何配置 Dependabot security updates 的详细信息,请参阅“配置 Dependabot 安全更新”。