本指南假设您已经为现有或试用的 GitHub 企业帐户规划并启动了 GitHub 高级安全的试用,请参阅 规划 GitHub 高级安全试用。
简介
代码扫描和依赖分析在公共仓库以及启用代码安全的私有和内部仓库中工作方式相同。此外,代码安全使您能够创建安全活动,让安全专家和开发者协作,有效降低技术债务。
本文重点介绍如何将这些功能与企业级控制相结合,以标准化并强制执行您的开发流程。
细化您的安全配置
与通常对所有仓库应用单一安全配置的密钥保护不同,您可能希望针对不同类型的仓库微调代码扫描的配置。例如,您可能需要创建额外的配置,以便
- 代码扫描使用带有特定标签的运行器,适用于需要专用环境或使用私有注册表的仓库。
- 代码扫描设置为“未设置”,以适用于需要使用高级设置或第三方工具的仓库。
对于您的试用,最简单的做法是创建一个主要的企业级安全配置并将其应用于您的测试仓库。然后,您可以创建任何所需的额外安全配置,并将其应用于使用代码语言、自定义属性、可见性和其他过滤选项选择的子集仓库。有关更多信息,请参阅 在试用企业中启用安全功能 和 应用自定义安全配置。
提供访问权限以查看代码扫描结果
默认情况下,仅仓库管理员和组织所有者可以查看其范围内的所有代码扫描警报。您应为所有组织团队和您希望在试用期间访问警报的用户分配预定义的安全管理员角色。您可能还希望为试用期间每个组织的企业账户所有者分配此角色。更多信息,请参阅 在组织中管理安全管理员 和 使用组织角色。
评估并优化默认设置的结果
代码扫描的默认设置会运行一套高置信度查询。这些查询旨在确保当您在整个代码库中推广代码扫描时,开发者只会看到数量有限且质量高的结果,误报较少。
您可以在企业的 安全与质量 选项卡中看到试用企业中组织的所有结果摘要。每种安全警报还有单独的视图。请参阅 查看安全洞察。
如果您未看到预期的代码扫描结果,可以更新默认设置,为您期望获得更多结果的仓库运行扩展查询套件。这在仓库层面进行控制,见 编辑默认设置的配置。
提示
如果您被阻止编辑仓库的代码扫描设置,请编辑该仓库使用的安全配置,以取消强制设置。
如果扩展套件仍未找到您预期的结果,您可能需要启用高级设置,以便完全自定义分析。更多信息,请参阅 使用代码扫描工具状态页面 和 为代码扫描配置高级设置。
强制对拉取请求进行自动化分析
GitHub 内置了三种不同类型的拉取请求自动化分析
- 代码扫描分析使用查询来突出已知的不良编码模式和安全漏洞。Copilot 自动修复会为代码扫描识别的问题提供修复建议。
- 依赖审查汇总拉取请求所做的依赖变更,并突出显示任何已知存在漏洞或不符合您开发标准的依赖。
- Copilot 代码审查使用 AI 对您的更改提供反馈,并在可能的情况下给出修复建议。
这些自动审查是对自审的有价值补充,使开发者更容易提交更完整且安全的拉取请求以供同行审查。此外,代码扫描和依赖审查可以被强制执行,以保护代码的安全性和合规性。
注意
GitHub Copilot 自动修复已包含在 GitHub 代码安全的许可中。Copilot 代码审查需要付费的 Copilot 计划。
代码扫描分析
启用代码扫描后,您可以通过为企业或组织创建代码规则集,阻止对重要分支的合并,除非拉取请求满足您的要求。通常,您会要求必须有代码扫描结果,并且所有重要警报已解决。
- 规则集类型: 分支。
- 要求代码扫描结果: 启用后,在提交和拉取请求目标引用成功生成结果之前阻止合并。
- 所需工具和警报阈值: 为您使用的每个代码扫描工具定义在合并拉取请求前必须解决的警报级别。
与所有规则集一样,您可以精确控制它适用于哪些组织(企业级)、仓库和分支,并且可以定义可以绕过该规则的角色或团队。更多信息,请参阅 关于规则集。
依赖审查
当为仓库启用代码安全和依赖图时,清单文件会提供详细的差异视图,显示添加或更新的依赖摘要。这对于拉取请求的人类审查者是有用的摘要,但并未对代码库中添加的依赖进行任何控制。
大多数企业都会设置自动检查,以阻止使用已知存在漏洞或不受支持许可证条款的依赖。
- 创建一个私有仓库作为中心位置,以存放企业可重用的工作流。
- 编辑该仓库的 Actions 设置,允许企业内所有私有仓库访问此中心仓库中的工作流,见 允许访问私有仓库中的组件。
- 在中心仓库中,创建一个可重用的工作流来运行依赖审查操作,并根据业务需求配置该操作,见 配置依赖审查操作。
- 在每个组织中,创建或更新分支规则集,将新工作流添加到所需的状态检查中,见 在组织中强制执行依赖审查。
这使您能够在单一位置更新配置,却在多个仓库中使用该工作流。您可能还想使用此中心仓库维护其他工作流。更多信息,请参阅 重用工作流。
Copilot 代码审查
注意
- 如果您通过组织获取了 Copilot 订阅,只有在您的组织或企业所有者启用了 Copilot 代码审查后,您才能在 GitHub 网站上参与公开预览。请参阅 管理组织中 GitHub Copilot 的策略和功能 和 管理企业中 GitHub Copilot 的策略和功能(GitHub Enterprise Cloud 文档)。
默认情况下,用户以与向人工审查者请求审查相同的方式向 Copilot 请求审查。然而,您可以更新或创建组织级别的分支规则集,自动将 Copilot 添加为所有选定仓库或所有仓库中选定分支的拉取请求审查者。请参阅 为 GitHub Copilot 配置自动代码审查(GitHub Enterprise Cloud 文档)。
Copilot 会在每个审查的拉取请求上留下审查评论,但不会批准拉取请求或请求更改。这确保其审查是建议性的,不会阻塞开发工作。同样,您不应强制解决 Copilot 的建议,因为 AI 建议存在已知局限性,详见 负责任使用 GitHub Copilot 代码审查(GitHub Enterprise Cloud 文档)。
定义 Copilot 自动修复的允许范围和启用位置
Copilot 自动修复帮助开发者了解并修复其拉取请求中发现的代码扫描警报。我们建议在所有启用代码安全的仓库中开启此功能,以帮助开发者高效解决警报并提升对安全编码的理解。
有两个控制层级
- 企业可以使用“高级安全”策略在整个企业范围内允许或阻止使用 Copilot 自动修复,参见:为企业的代码安全和分析强制策略。
- 组织可以在组织的“全局设置”中为所有组织拥有的仓库启用或禁用 Copilot 自动修复,参见 为组织配置全局安全设置。
让开发者参与安全修复
安全活动为安全团队提供了一种与开发者合作修复安全技术债务的方式。它们还能将安全编码教育与开发者熟悉的代码示例相结合。更多信息,请参阅 关于安全活动 和 在规模上运行安全活动以修复警报(GitHub Enterprise Cloud 文档)。
提供安全的开发环境
开发环境包含许多组件。在 GitHub 中扩展和标准化安全开发环境的最有用功能包括:
- 安全配置: 为企业、组织、组织仓库子集或新仓库定义安全功能的设置,参见 细化您的安全配置。
- 策略: 保护和控制企业或组织的资源使用,参见 为您的企业强制策略。
- 规则集: 保护和控制组织、组织仓库子集或单个仓库的分支、标签和推送,参见 为组织中的仓库创建规则集。
- 仓库模板: 为每种环境定义所需的安全工作流和流程,参见 创建模板仓库。例如,每个模板可能包含一个专用的
- 安全策略文件,定义公司的安全立场以及如何报告任何安全问题。
- 工作流,用于为公司使用的包管理器启用 Dependabot 版本更新。
- 工作流,为受支持的开发语言定义高级代码扫描设置,以在默认设置结果不足时使用。
此外,当开发者从模板创建仓库时,必须为所有必需的自定义属性定义值。自定义属性对于选择您想要应用配置、策略或规则集的仓库子集非常有用,参见 在企业中管理仓库的自定义属性(GitHub Enterprise Cloud 文档)。
后续步骤
当您完成对这些选项和机密扫描功能的探索后,即可根据业务需求测试您迄今为止的发现,然后进一步探索。
延伸阅读
- 安全使用参考
- 为您的企业强制执行策略
- 管理企业中人员使用仓库的方式 在 GitHub Enterprise Cloud 文档中
- 在规模上强制执行 GitHub 高级安全