本指南假定你已针对现有或试用 GitHub 企业帐户计划并开始试用 GitHub Advanced Security,请参阅“规划 GitHub Advanced Security 试用”。
简介
Code scanning和依赖项分析在启用 GitHub Advanced Security 的公共存储库以及专用和内部存储库中的工作方式相同。 此外,GitHub Advanced Security 使你能够创建安全性活动,让安全专家和开发人员可以协作,以有效减少技术债务。
本文重点介绍如何将这些功能与企业级控制相结合,以实现开发过程标准化并强制执行开发过程。
优化安全配置
与secret scanning(通常将单一安全配置应用于所有存储库)不同,你可能希望针对不同类型的存储库微调code scanning的配置。 例如,可能需要创建其他配置,以便:
- Code scanning使用具有特定标签的运行器,以应用于需要专门环境或使用专用注册表的存储库。
- Code scanning为“未设置”,以应用于需要使用高级设置或需要第三方工具的存储库。
对于你的试用,创建主要企业级安全配置并将其应用到测试存储库是最简单的方法。 然后,可以创建所需的任何其他安全配置,并将其应用到使用代码语言、自定义属性、可见性和其他筛选器选项选择的一部分存储库。 有关详细信息,请参阅 在试用企业中启用安全功能 和 删除自定义安全配置。
提供查看code scanning结果的访问权限
默认情况下,只有存储库管理员和组织所有者可以查看其区域中的所有code scanning警报。 应将预定义的安全管理员角色分配给你希望访问试用期间发现警报的所有组织团队和用户。 可能还需要为试用中的每个组织的企业帐户所有者授予此角色。 有关详细信息,请参阅 管理组织中的安全管理员 和 使用组织角色。
评估并优化默认设置的结果
code scanning的默认设置运行一组高置信度查询。 选择这些查询是为了确保一点:当你在整个代码库中推出code scanning时,开发人员会看到一组有限的高质量结果,并且几乎没有假正结果。
可以在企业的“Code security”选项卡中查看在试用企业的组织中找到的所有结果的摘要****。 每种类型的安全警报也有单独的视图,请参阅“查看安全见解”。
如果未看到code scanning的预期结果,则可以更新默认设置,针对期望找到更多结果的存储库运行扩展查询套件。 这会在存储库级进行控制,请参阅“编辑默认设置配置”。
Tip
如果受到阻止而不能编辑code scanning的存储库设置,请编辑存储库使用的安全配置,这样才不会强制执行设置。
如果扩展套件仍找不到预期结果,则可能需要启用高级设置,以便完全自定义分析。 有关详细信息,请参阅 关于代码扫描的工具状态页 和 配置代码扫描的高级设置。
强制执行拉取请求自动分析
GitHub 中内置了三种不同类型的拉取请求自动分析:
- Code scanning分析使用查询来突出显示已知的不良编码模式和安全漏洞****。 Copilot Autofix 会针对code scanning发现的问题提出修复建议。
- 依赖项评审总结拉取请求所做的依赖项更改,并突出显示任何具有已知漏洞或不符合开发标准的依赖项。****。
- Copilot 代码评审使用 AI 提供有关更改的反馈,并在可能的情况下提供建议修复方法****。
这些自动评审是对自我评审的有价值扩展,使开发人员能够更轻松地提出更完整和安全的拉取请求,以供同级评审。 此外,还可以强制执行code scanning和依赖项评审,以保护代码的安全性和合规性。
Note
GitHub Copilot Autofix 包含在 GitHub Advanced Security 许可证中。 Copilot 代码评审需要付费的 Copilot 计划。
Code scanning分析
启用code scanning后,可以通过为企业或组织创建代码规则集来阻止合并到重要分支,除非拉取请求满足要求。 通常,需要呈现code scanning的结果并解决所有重要警报。
- 规则集的类型:分支****。
- 需要code scanning结果:启用以阻止合并,直到成功为提交生成结果并引用拉取请求目标为止****。
- 必需的工具和警报阈值:定义必须解决的警报级别,解决后才能为所使用的每种code scanning工具合并拉取请求****。
与所有规则集一样,可以精确控制这对哪些组织(企业级)、存储库和分支起作用,还可以定义可绕过规则的角色或团队。 有关详细信息,请参阅“关于规则集”。
依赖项检查
为存储库启用 GitHub Advanced Security 和依赖项关系图时,清单文件将具有丰富的差异视图,视图中显示了其添加或更新的依赖项的摘要。 对于拉取请求的人工审阅者来说,这是很有用的摘要,但不会提供对将哪些依赖项添加到代码库的任何控制。
大多数企业都会设置自动检查,以阻止使用具有已知漏洞或不受支持的许可条款的依赖项。
- 创建专用存储库,用作中心主页,从而可在其中存储企业的可重复使用的工作流。
- 编辑存储库的操作设置,以允许企业中的所有专用存储库访问此中央存储库中的工作流,请参阅允许访问专用存储库中的组件。
- 在中央存储库中,创建可重复使用的工作流来运行依赖项评审操作,配置操作以满足业务需求,请参阅“配置依赖项评审操作”。
- 在每个组织中,创建或更新分支规则集,以将新工作流添加到所需的状态检查,请参阅“在整个组织内强制实施依赖项审查”。
这样,就可以在一个位置更新配置,但在许多存储库中使用工作流。 你可能需要使用此中央存储库来维护其他工作流。 有关详细信息,请参阅“重新使用工作流”。
Copilot 评审
Note
- GitHub Copilot 代码评审 is in 公共预览版 and subject to change.
- To participate in the 公共预览版, an administrator of your enterprise or organization must opt in to the use of previews of Copilot features. See 管理企业中 Copilot 的策略和功能 and 管理组织中的 Copilot 策略.
- Some functionality is available to all enabled Copilot subscribers, but other functionality is only available to a limited number of users. To join the waitlist for additional functionality, see Join the Copilot 代码评审 waitlist.
- The GitHub 预发行许可条款 apply to your use of this product.
默认情况下,用户向 Copilot 请求评审的方式与向人工审核者请求评审的方式相同。 但是,可以更新或创建组织级分支规则集,以自动将 Copilot 添加为审阅者,以评审所有或选定存储库中选定分支的所有拉取请求。 有关详细信息,请参阅“使用 GitHub Copilot 代码评审”。
Copilot 会对其评审的每条拉取请求留下注释,而无需批准拉取请求或请求更改。 这可确保其评审为咨询性质,且不会阻止开发工作。 同样,不应强制执行 Copilot 提出的解决建议,因为 AI 建议存在已知局限性,请参阅“负责任地使用 GitHub Copilot 代码评审”。
定义允许和启用 Copilot Autofix 的位置
Copilot Autofix 可帮助开发人员了解和修复在其拉取请求中找到的code scanning警报。 建议为所有存储库启用此功能,以帮助开发人员高效地解决警报,并增进他们对安全编码的理解。
有两个级别的控制:
- 企业可以使用“代码安全”策略允许或阻止在整个企业内使用 Copilot Autofix,请参阅:强制实施企业的代码安全性和分析策略。
- 组织可在组织的“全局设置”中为所有组织拥有的存储库启用或禁用 Copilot Autofix,请参阅“配置组织的全局安全设置”。
让开发人员参与安全修正
安全性活动为安全团队提供了一种与开发人员联合修正安全技术债务的方法。 他们还提供了一种实用方法,用于将安全编码教育与开发人员熟悉的代码中易受攻击代码的示例相结合。 有关详细信息,请参阅 关于安全性活动 和 大规模处理和解决安全警报的最佳做法。
提供安全的开发环境
开发环境有许多组件。 GitHub 中用于缩放和标准化安全开发环境的一些最有用的功能包括:
- 安全配置:定义企业、组织、组织存储库子集或新存储库的安全功能设置,请参阅优化安全配置****。
- 策略:保护并控制企业或组织的资源的使用,请参阅“为企业实施策略”****。
- 规则集:保护并控制组织、组织存储库子集或存储库的分支、标记和推送,请参阅“创建组织中存储库的规则集”****。
- 存储库模板:定义每种环境所需的安全工作流和流程,请参阅“创建模板仓库”****。 例如,每个模板可能包含以下专用项:
- 定义公司安全情况以及如何报告任何安全问题的安全策略文件。
- 为公司使用的包管理器启用 Dependabot version updates的工作流。
- 定义对受支持开发语言的code scanning的高级设置(其中默认设置结果不够)的工作流。
此外,当开发人员根据模板创建存储库时,他们必须定义任何所需自定义属性的值。 自定义属性对于选择要应用配置、策略或规则集的存储库子集非常有用,请参阅“管理企业中仓库的自定义属性”。
后续步骤
完成这些选项和secret scanning功能的探索后,你便可以根据业务需求测试目前的发现,然后进一步探索。