关于 Dependabot 安全更新
Dependabot 安全更新使您能够更轻松地修复存储库中易受攻击的依赖项。您通常会将dependabot.yml
文件添加到您的存储库中以启用 Dependabot 安全更新。然后,您可以在此文件中配置选项以告诉 Dependabot 如何维护您的存储库。
有关支持的存储库和生态系统的信息,请参阅“Dependabot 支持的生态系统和存储库”。
如果启用了 Dependabot 安全更新,当为存储库的依赖关系图中易受攻击的依赖项引发 Dependabot 警报时,Dependabot 会自动尝试修复它。有关更多信息,请参阅“关于 Dependabot 警报”和“配置 Dependabot 安全更新”。
注意
dependabot.yml
文件中指定的设置与 Dependabot 安全警报之间没有交互,除了在合并 Dependabot 为安全更新生成的关联拉取请求时会关闭警报。
Dependabot 默认情况下会签署其自己的提交,即使存储库不需要提交签署也是如此。有关已验证提交的更多信息,请参阅“关于提交签名验证”。
注意
当为存储库启用 Dependabot 安全更新时,Dependabot 将自动尝试打开拉取请求以解决具有可用补丁的所有打开的 Dependabot 警报。如果您希望自定义 Dependabot 为其打开拉取请求的警报,则应保持 Dependabot 安全更新禁用状态并创建自动分类规则。有关更多信息,请参阅“自定义自动分类规则以优先处理 Dependabot 警报”。
GitHub 可能会将 Dependabot 警报发送到受最近发布的 GitHub 安全公告中披露的漏洞影响的存储库。有关更多信息,请参阅“在 GitHub 安全公告数据库中浏览安全公告”。
Dependabot 检查是否可以在不中断存储库的依赖关系图的情况下将易受攻击的依赖项升级到已修复版本。然后,Dependabot 会发出拉取请求以将依赖项更新到包含补丁的最低版本,并将拉取请求链接到 Dependabot 警报,或在警报上报告错误。有关更多信息,请参阅“排查 Dependabot 错误”。
Dependabot 安全更新功能适用于您已启用依赖关系图和 Dependabot 警报的存储库。您将在完整依赖关系图中识别的每个易受攻击的依赖项中看到 Dependabot 警报。但是,安全更新仅针对清单或锁定文件中指定的依赖项触发。有关更多信息,请参阅“关于依赖关系图”。
注意
对于 npm,即使这意味着更新父依赖项或依赖项,甚至删除父依赖项不再需要的子依赖项,Dependabot 也会发出拉取请求以将明确定义的依赖项更新到安全版本。对于其他生态系统,如果还需要更新父依赖项,Dependabot 将无法更新间接或传递依赖项。有关更多信息,请参阅“排查 Dependabot 错误”。
您可以启用相关功能 Dependabot 版本更新,以便 Dependabot 在检测到过时的依赖项时发出拉取请求以将清单更新到依赖项的最新版本。有关更多信息,请参阅“关于 Dependabot 版本更新”。
当 Dependabot 发出拉取请求时,这些拉取请求可能是安全或版本更新
- Dependabot 安全更新是帮助您使用已知漏洞更新依赖项的自动化拉取请求。
- Dependabot 版本更新是使您的依赖项保持更新的自动化拉取请求,即使它们没有任何漏洞也是如此。要检查版本更新的状态,请导航到存储库的“Insights”选项卡,然后导航到“Dependency Graph”和“Dependabot”。
如果您启用了Dependabot 安全更新,则配置的某些部分也可能会影响为Dependabot 版本更新创建的拉取请求。这是因为某些配置设置对这两种类型的更新都是通用的。有关更多信息,请参阅“dependabot.yml 文件的配置选项”。
Dependabot 打开的拉取请求可以触发运行操作的工作流。有关更多信息,请参阅“使用 GitHub Actions 自动化 Dependabot”。
如果您在新存储库中启用 Dependabot 并且启用了 GitHub Actions,则 Dependabot 默认会在 GitHub Actions 上运行。
如果您在新存储库中启用 Dependabot 并且禁用了 GitHub Actions,则 Dependabot 将在 GitHub 的旧版应用程序上运行以执行 Dependabot 更新。这不像 GitHub Actions 那样提供良好的性能、可见性或对 Dependabot 更新作业的控制。如果您想将 Dependabot 与 GitHub Actions 一起使用,则必须确保您的存储库启用了 GitHub Actions,然后从存储库的“代码安全性和分析”设置页面启用“Actions 运行器上的 Dependabot”。有关更多信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。
Dependabot 安全更新可以修复 GitHub Actions 中的漏洞依赖项。启用安全更新后,Dependabot 将自动提出拉取请求,以将工作流中使用的漏洞 GitHub Actions 更新到最低修补版本。
关于安全更新的拉取请求
每个拉取请求都包含您快速安全地审查和合并建议的修复程序到项目中所需的一切。这包括有关漏洞的信息,例如发行说明、更改日志条目和提交详细信息。拉取请求解决的漏洞详细信息对任何未访问存储库的 Dependabot 警报的用户隐藏。
合并包含安全更新的拉取请求时,相应的 Dependabot 警报将标记为已解决,适用于您的存储库。有关 Dependabot 拉取请求的更多信息,请参阅“管理依赖项更新的拉取请求”。
注意
最佳实践是在到位自动测试和验收流程,以便在合并拉取请求之前执行检查。如果建议升级到的版本包含其他功能或更改导致项目代码中断,则这一点尤其重要。有关持续集成的更多信息,请参阅“关于 GitHub Actions 的持续集成”。
关于分组安全更新
为了进一步减少您可能看到的拉取请求数量,您可以启用分组安全更新以将一组依赖项组合在一起(每个包生态系统)。然后,Dependabot 会提出一个拉取请求,以同时更新组中尽可能多的漏洞依赖项以确保版本安全。
对于安全更新,Dependabot 仅在某些条件和配置下才会跨目录(每个生态系统)对依赖项进行分组。Dependabot **不会**将来自不同包生态系统的依赖项分组在一起,并且**不会**将安全更新与版本更新分组在一起。
您可以通过以下一种或两种方式为 Dependabot 安全更新启用分组拉取请求。
- 要尽可能多地组合可用的安全更新(跨目录和每个生态系统),请在存储库的“代码安全性和分析”设置中或组织的“代码安全”下的“全局设置”中启用分组。
- 要更精细地控制分组,例如按包名称、开发/生产依赖项、SemVer 级别或跨每个生态系统的多个目录进行分组,请将配置选项添加到存储库中的
dependabot.yml
配置文件中。
注意
如果您已在dependabot.yml
文件中为 Dependabot 安全更新配置了组规则,则所有可用的更新都将根据您指定的规则进行分组。仅当组织或存储库级别的分组安全更新设置也已启用时,Dependabot 才会跨未在您的dependabot.yml
中配置的目录进行分组。
有关更多信息,请参阅“配置 Dependabot 安全更新”。
关于兼容性评分
Dependabot 安全更新可能包含兼容性评分,以让您了解更新依赖项是否可能导致项目出现重大更改。这些是根据其他公共存储库中的 CI 测试计算得出的,在这些存储库中生成了相同的安全更新。更新的兼容性评分是在更新依赖项的特定版本之间通过的 CI 运行的百分比。
关于 Dependabot 更新的自动停用
当存储库维护者停止与 Dependabot 拉取请求交互时,Dependabot 会暂时暂停其更新并告知您。这种自动选择退出行为减少了噪音,因为 Dependabot 不会为版本和安全更新创建拉取请求,也不会为非活动存储库重新设置 Dependabot 拉取请求的基准。
Dependabot 更新的自动停用仅适用于 Dependabot 已打开拉取请求但拉取请求保持未触碰的存储库。如果 Dependabot 未打开任何拉取请求,则 Dependabot 永远不会暂停。
活动存储库是指用户(非 Dependabot)在过去 90 天内执行了以下任何操作的存储库
- 合并或关闭存储库上的 Dependabot 拉取请求。
- 更改存储库的
dependabot.yml
文件。 - 手动触发安全更新或版本更新。
- 为存储库启用 Dependabot 安全更新。
- 在拉取请求上使用
@dependabot
命令。
非活动存储库是指至少有一个 Dependabot 拉取请求打开超过 90 天、已启用整个时段且用户未执行上述任何操作的存储库。
Dependabot 暂停时,GitHub 会添加横幅通知
- 到所有打开的 Dependabot 拉取请求。
- 到存储库的**设置**选项卡的 UI(在**代码安全性和分析**下,然后是**Dependabot**)。
- 到 Dependabot 警报列表(如果 Dependabot 安全更新受到影响)。
维护者再次与 Dependabot 拉取请求交互后,Dependabot 将自动恢复
- Dependabot 警报将自动恢复安全更新。
- 版本更新将根据
dependabot.yml
文件中指定的计划自动恢复。
关于 Dependabot 安全更新的通知
您可以过滤 GitHub 上的通知以显示 Dependabot 安全更新。有关更多信息,请参阅“管理收件箱中的通知”。