关于 GitHub 上的供应链安全性
随着开放源代码的加速使用,大多数项目都依赖于数百个开源依赖项。 这就带来了一个安全问题:如果你正在使用的依赖项有漏洞,该怎么办? 你可能会使用户面临供应链攻击的风险。 保护供应链最重要的操作之一就是修补易受攻击的依赖项。
当你在清单文件或锁定文件中指定依赖项时,可以直接将它们添加到供应链。 依赖项也可以通过可传递方式包含在内,也就是说,即使你没有指定某个特定的依赖项,但你的某个依赖项使用了它,那么你也会依赖于该依赖项。
GitHub Enterprise Server 提供了一系列功能,可帮助你了解环境中的依赖项,了解这些依赖项中的漏洞并进行修补。
GitHub Enterprise Server 上的供应链功能包括:
- 依赖项关系图
- 依赖项审查
- Dependabot alerts - Dependabot updates
- Dependabot security updates
- Dependabot version updates
依赖项关系图是供应链安全性的核心。 依赖项关系图标识了存储库或包的所有上游依赖项和公共下游依赖项。 你可以在存储库的依赖项关系图上看到存储库的依赖项和它们的一些属性,例如漏洞信息。
GitHub 上的其他供应链功能依赖于依赖项关系图提供的信息。
- 依赖项审查使用依赖项关系图来标识依赖项更改,在你审查拉取请求时,可帮助你了解这些更改的安全影响。
- Dependabot 通过 GitHub Advisory Database 中发布的公告列表交叉引用依赖项关系图提供的依赖项数据,扫描依赖项并在检测到潜在漏洞时生成 Dependabot alerts。
- Dependabot security updates通过依赖项关系图和 Dependabot alerts来帮助你更新存储库中有已知漏洞的依赖项。
Dependabot version updates不使用依赖项关系图,而是依赖于依赖项的语义版本控制。 Dependabot version updates可帮助你使依赖项保持最新,即使它们没有任何漏洞。
有关端到端供应链安全性的最佳做法指南,包括如何保护个人帐户、代码和生成流程,请参阅“保护端到端供应链”。
功能概述
什么是依赖项关系图
为了生成依赖项关系图,GitHub 会查看清单和锁定文件中声明的存储库显式依赖项。 启用后,依赖项关系图会自动分析存储库中的所有已知包清单文件,并以此来构造一个包含已知依赖项名称和版本的关系图。
- 依赖项关系图包含有关直接依赖项和可传递依赖项的信息。
- 当你将提交推送到 GitHub 以更改受支持的清单或锁定文件或者将其添加到默认分支时,以及当任何人将更改推送到某个依赖项的存储库时,依赖项关系图会自动更新。
- 可以通过打开 GitHub Enterprise Server 上的存储库主页,并导航到“见解”选项卡来查看依赖项关系图。
有关依赖项关系图的详细信息,请参阅“关于依赖关系图”。
什么是依赖项审查
依赖项审查可帮助审阅者和参与者了解每个拉取请求中的依赖项更改及其安全性影响。
- 依赖项审查会在拉取请求中告知你已经添加、移除或更新了哪些依赖项。 你可以使用发布日期、依赖项的受欢迎程度和漏洞信息来帮助决定是否接受更改。
- 可以通过在“已更改的文件”选项卡上显示多差异来查看拉取请求的依赖项审查。
有关依赖项评审的详细信息,请参阅“关于依赖项评审”。
什么是 Dependabot
Dependabot 通过告知你的依赖项中的任何安全漏洞使依赖项保持最新,并自动提交拉取请求,以便在触发 Dependabot 警报时将依赖项升级到下一个可用的安全版本,或者在版本发布时将依赖项升级到最新版本,。
术语“Dependabot”包含了以下功能:
- Dependabot alerts - 在存储库的“安全性”选项卡上以及存储库的依赖项关系图中显示通知。 该警报包括指向项目中受影响的文件的链接,以及有关修复的版本的信息。
- Dependabot updates:
- Dependabot security updates - 触发更新以在触发警报时将依赖项升级到安全版本。
- Dependabot version updates - 计划更新以使依赖项始终是最新版本。
Dependabot security updates 和 Dependabot version updates 要求 GitHub Actions 在 GitHub Enterprise Server 上运行。 Dependabot alerts 不需要 GitHub Actions。 有关详细信息,请参阅“为企业启用 Dependabot”。
什么是 Dependabot 警报
Dependabot alerts 基于依赖项关系图和 GitHub Advisory Database 突出显示了受新发现的漏洞影响的存储库,其中包含已知漏洞的公告。
- Dependabot 执行扫描以检测不安全的依赖项,并在以下情况下发送 Dependabot alerts:
- 新公告数据每小时从 GitHub.com 同步到 你的 GitHub Enterprise Server 实例。 有关详细信息,请参阅“在 GitHub Advisory Database 中浏览安全公告”。
- 存储库的依赖关系图发生更改。
- Dependabot alerts 显示在存储库的“安全性”选项卡上,以及存储库的依赖项关系图中。 警报包括项目中受影响文件的链接,以及有关已修复的版本的信息。
有关详细信息,请参阅“关于 Dependabot 警报”。
什么是 Dependabot 更新
有两种类型的 Dependabot updates:Dependabot安全更新和版本更新。 Dependabot 会生成自动拉取请求以在这两种情况下更新依赖项,但存在一些差异。
Dependabot security updates:
- 由 Dependabot 警报触发
- 将依赖项更新到可修复已知漏洞的最低版本
- 支持用于依赖项关系图支持的生态系统
- 不需要配置文件,但可使用配置文件来替代默认行为
Dependabot version updates:
- 需要配置文件
- 按配置的计划运行
- 将依赖项更新到与配置匹配的最新版本
- 支持用于不同类别的生态系统
有关 Dependabot updates 的详细信息,请参阅“关于 Dependabot 安全更新”和“关于 Dependabot 版本更新”。
功能可用性
- 依赖项关系图和 Dependabot alerts - 默认未启用。 这两项功能由企业所有者在企业级别进行配置。 有关详细信息,请参阅 “为企业启用依赖项关系图”和 “为企业启用 Dependabot”。
- 依赖项审查 - 为 你的 GitHub Enterprise Server 实例 启用依赖项关系图并为组织或存储库启用 Advanced Security 时可用。 有关详细信息,请参阅“关于 GitHub 高级安全性”。
- Dependabot security updates - 默认未启用。 您可以为任何使用 Dependabot alerts 和依赖关系图的仓库启用 Dependabot security updates。 有关启用安全更新的信息,请参阅“配置 Dependabot 安全更新”。
- Dependabot version updates - 默认未启用。 拥有存储库写入权限的用户可以启用 Dependabot version updates。 有关启用版本更新的信息,请参阅“配置 Dependabot 版本更新”。