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