自动化安全性
在这里,我们将讨论你可用于在存储库中自动执行 GitHub 存储库管理员可操作的安全检查的一些方法。
检测并修复存在安全漏洞的过时依赖项
如今,几乎每个项目都依赖于外部包。 虽然这些组件可大幅提高工作效率,但也可能带来其他安全风险。 掌握这些包及其漏洞状态可能很耗时间,尤其是考虑到每个依赖项可能有自己的依赖项,这将使得跟踪和维持变得困难。 幸运的是,GitHub 提供了可减少这种工作负载的功能。
存储库依赖项关系图
每个存储库都包含的一个默认功能是依赖项关系图。 GitHub 扫描常见的包清单,例如 package.json
、requirements.txt
等。 借助这些图,项目所有者能够以递归方式跟踪项目所依赖的所有依赖项。
有关支持的依赖项清单的列表,请参阅关于依赖项关系图。
Dependabot 警报
即使采用可视化的依赖项关系图,掌握项目具有的每个依赖项的最新安全注意事项仍然很困难。 为了减少这种开销,GitHub 提供了 Dependabot 警报,以监视依赖项关系图。 然后,它将目标版本与已知漏洞列表中的版本进行交叉引用。 如果发现风险,项目会收到警报。 分析的输入内容来自 GitHub 安全通知。
通过 Dependabot 自动执行依赖项更新
依赖项警报可使项目参与者将有问题的包引用更改为建议的版本,并创建用于验证的拉取请求。 如果有一种方法可以自动执行这项工作,那不是很好吗? 好消息! Dependabot 会这样做。 它扫描依赖项警报并创建拉取请求,以便参与者可以验证更新并合并请求。
若要了解有关 Dependabot 灵活性的详细信息,请参阅配置 Dependabot 安全更新。
自动代码扫描
与 Dependabot 扫描存储库中依赖关系警报的方式类似,可以使用代码扫描功能来分析和查找 GitHub 存储库代码中的安全漏洞和错误。 代码扫描具有多项优势。 你可以使用它来查找、会审现有问题或潜在安全漏洞的修补程序并进行优先级排序。 该功能也有助于防止开发人员在代码中引入新的安全问题。
代码扫描的另一个优点是可以使用 CodeQL。 通过 CodeQL,你可将代码作为数据进行查询,从而可创建自定义查询,或者使用开源社区维护的查询。 借助代码扫描,你可自由地自定义和维护在存储库中扫描代码的方式。
可以在 GitHub 存储库的“安全”选项卡中启用代码扫描警报和工作流:
详细了解代码扫描和 CodeQL。
机密扫描
GitHub 存储库中的另一个自动扫描功能是机密扫描。 与以前的安全扫描功能类似,机密扫描查找存储库中提交的已知机密或凭据。 此扫描的目的是防止欺诈行为和保障敏感数据的完整性。 默认情况下,在公共存储库上运行机密扫描,也可由存储库管理员或组织所有者在专用存储库上启用机密扫描。
当机密扫描检测到一组凭据时,GitHub 会通知颁发机密的服务提供商。 服务提供商会验证凭据。 然后,它将决定他们是否应撤销机密、颁发新机密或直接联系你。 该操作取决于你或服务提供商的相关风险。
详细了解对公共和专用存储库进行机密扫描。