自动安全
在这里,我们将讨论一些可以在 GitHub 存储库管理员可用的存储库中自动执行安全检查的方法。
检测和修复具有安全漏洞的过时依赖项
如今,几乎每个项目都依赖于外部包。 虽然这些组件可以在工作效率方面带来实质性的好处,但它们可能会带来其他安全风险。 保持这些包及其漏洞状态可能非常耗时,特别是考虑到每个依赖项可能具有其自己的依赖项,这些依赖项可能会变得难以跟踪和维护。 幸运的是,GitHub 提供了减少此工作负荷的功能。
存储库依赖项关系图
每个存储库包含的一项默认功能是依赖项关系图。 GitHub 扫描常见包清单,例如 package.json, requirements.txt和其他。 这些关系图允许项目所有者以递归方式跟踪其项目依赖的所有依赖项。

有关支持的依赖项清单的列表,请参阅 “关于依赖项关系图”。
Dependabot 警报
即使采用可视化的依赖项关系图,掌握项目具有的每个依赖项的最新安全注意事项仍然很困难。 为了减少这种开销,GitHub 提供了 Dependabot 警报,以监视依赖项关系图。 然后,它会交叉引用目标版本以及已知漏洞列表中的版本。 当发现风险时,项目会收到警报。 分析的输入来自 GitHub 安全公告。

使用 Dependabot 自动更新依赖项
依赖项警报可使项目参与者将有问题的包引用更改为建议的版本,并创建用于验证的拉取请求。 如果有办法自动执行这项工作,那不会很棒吗? 嗯,好消息! Dependabot 正是这样做的。 它会扫描依赖项警报并创建拉取请求,以便参与者可以验证更新并合并请求。
若要详细了解 Dependabot 的灵活性,请参阅 配置 Dependabot 安全更新。
自动代码扫描
与 Dependabot 如何扫描存储库中的依赖项警报类似,可以使用代码扫描在 GitHub 存储库中的代码中分析和查找安全漏洞和错误。 代码扫描具有多项优势。 可以使用它查找、会审和确定现有问题或潜在安全漏洞的修补程序的优先级。 它还有助于防止开发人员在代码中引入任何新的安全问题。
代码扫描的另一个优点是能够使用 CodeQL。 CodeQL 允许将代码查询为数据,以便创建自定义查询或使用开源社区维护的查询。 代码扫描使你可以自由地自定义和维护存储库中代码的扫描方式。
可以在 GitHub 存储库的安全选项卡中启用代码扫描警报和工作流:
详细了解 代码扫描和 CodeQL。
机密扫描
GitHub 存储库中的另一个自动扫描功能是机密扫描。 与以前的安全扫描功能类似,机密扫描查找存储库中提交的已知机密或凭据。 此扫描旨在防止使用欺诈行为,并保护任何敏感数据的完整性。 默认情况下,机密扫描发生在公共存储库上,你可以由存储库管理员或组织所有者在专用存储库上启用机密扫描。
当机密扫描检测到一组凭据时,GitHub 会通知颁发机密的服务提供商。 服务提供商验证凭据。 然后,它决定他们是否应撤销机密、发出新机密或直接联系你。 该操作取决于你或服务提供商的相关风险。
详细了解 公共和专用存储库的机密扫描。