跳至主要内容

使用 GitHub Copilot 减少公司安全债务

了解功能,赋能开发者,并衡量 Copilot 的影响。

谁可以使用此功能?

GitHub Copilot Business 或 GitHub Copilot Enterprise

本指南受 GitHub 的 工程系统成功手册(ESSP)启发,手册建议用于推动工程系统改进的策略和指标。

如果您正准备在公司推广 Copilot,我们建议先定义目标,相应地规划推广计划,并向员工清晰传达目标。请参阅 使用 GitHub Copilot 实现公司工程目标

1. 确定成功的障碍

ESSP 推荐的第一步是清晰了解阻碍公司改进的障碍。通过了解您当前的基准、期望的未来状态以及阻止进展的障碍,您可以确保变更具针对性且有效。

开发团队通常专注于速度和功能,以交付新特性并保持应用平稳运行。随着时间推移,细小的问题会累计,例如

  • 已知的安全弱点尚未修复
  • 依赖可能存在缺陷的旧软件组件
  • 对已发现问题的处理延迟

这会产生 安全债务,即大量未解决的问题。

安全债务带来实际风险。未及时处理的时间越长,债务越大、成本越高。大量安全债务使系统容易受到攻击,泄露敏感数据,侵蚀客户信任。

挑战在于在快速开发与保持安全、稳定的软件环境之间取得平衡。

2. 评估您的选项

下一步是评估并确定解决第一步中识别的障碍的方案。在本指南中,我们将聚焦于 GitHub Copilot 对您已确定目标的影响。成功推广新工具还需要文化和流程的变更。

在试点小组中对新工具和流程进行试验,以收集反馈并衡量成功。有关培训资源和试验期间使用的指标,请参阅 3. 实施变更需要关注的指标 部分。

联系销售

Copilot 如何提供帮助

Copilot 将安全考虑直接嵌入开发生命周期。这帮助开发者主动识别并处理潜在漏洞,同时保持项目的最新状态。

Copilot 在整个软件开发生命周期中降低安全漏洞。

开发期间

Copilot 在您编写代码时实时审查代码。它利用对常见安全缺陷的了解标记可能被利用的区域。这种实时分析能够揭示在常规开发或首次安全审查中可能遗漏的隐藏漏洞。

当 Copilot 识别出问题时,会建议代码修改以修复漏洞。这使您能够在早期解决弱点,防止安全债务累积。

持续维护

Copilot 与 GitHub 的代码扫描功能集成,保持现有代码库的安全。当代码扫描触发安全警报时,Copilot Autofix 会分析并提供有针对性的修复建议。

这些建议的修复可减少您在研究漏洞和确定处理方式上花费的时间,帮助更高效地解决安全警报,防止持续产生安全债务。

文化考虑

在推广 GitHub Copilot 的同时,需解决可能阻碍实现目标的任何社交或文化因素。

以下示例摘自 ESSP 中的“反模式”章节。

  • 团队可能 忽视或延后处理安全债务。这会使低效且易受攻击的系统得以持续。其原因可能是对功能的截止日期驱动关注,或缺乏对安全债务长期影响的教育。
  • 团队可能 为简单问题构建过于复杂的解决方案。这会使代码更难维护,安全问题更难被发现。其原因可能是出于不必要的面向未来的考虑,或因为通过复杂性来增加价值的压力。

3. 实施变更

当您确定了解决障碍的正确方法后,就可以扩大这些方案的规模。要成功推广新工具或流程,请为每个环节指定负责人,透明沟通目标,提供有效培训,并衡量结果。

本节提供示例情景、最佳实践和面向开发者的资源。请利用本节 规划沟通和培训会议,帮助员工以符合您目标的方式使用 Copilot。

分析代码中的安全漏洞

根据代码库规模,Copilot 可能无法在您编写代码时一次性分析完整项目,这受到上下文限制。但您可以让它分析特定文件中的不安全代码实践。

  1. 在 Visual Studio Code 中打开要分析的文件。

  2. 在 Copilot Chat 中输入:分析此代码的潜在安全漏洞并提供修复建议

    使用 #file 聊天变量将特定文件内容准确包含在提示中。您也可以使用提示文件和自定义指令来引导 Copilot 的响应。

  3. Copilot Chat 分析代码,识别安全漏洞,并提供修复建议。

  4. 审查建议的更改并在适当时采用。

其他提示示例

  • 我的代码中是否存在安全漏洞?如果有,能否解释并提供修复建议?
  • 这段代码是否遵循安全编码最佳实践?如果没有,我可以进行哪些具体改进?
  • 如果将此代码部署到生产环境,可能存在哪些安全风险?我该如何降低这些风险?

使用 Copilot Autofix 处理代码扫描警报

Copilot Autofix 是 GitHub 代码安全的一部分,可为代码扫描警报提供潜在修复方案。它在公共仓库以及拥有 GitHub 代码安全许可证的仓库中可用。

当您对仓库执行代码扫描时,潜在问题会以代码扫描警报的形式出现。请按以下步骤解决这些警报:

  1. 在 GitHub 上打开警报。
  2. 点击 Generate fix。此按钮在 Copilot 能够解决警报时显示。
  3. Copilot Autofix 生成潜在修复,并在警报中显示代码变更。您可以将此代码更改提交到新分支或已有分支。
  4. 测试代码后,打开拉取请求将更改合并至主分支。
  5. 当更改合并至主分支且代码扫描验证修复后,警报会自动关闭。

开发者最佳实践

开发者 应当

  • 经常使用 Copilot Chat 分析代码片段中的漏洞。养成在提交更改前检查代码安全问题的习惯。
  • 在出现代码扫描警报时使用 Copilot Autofix。将其作为快速处理警报的第一步。
  • 向 Copilot Chat 提供清晰且具体的提示。请求越详细,Copilot 对代码的分析与修复建议就越精准。例如,注明编程语言和关注的具体区域。
  • 将 Copilot 与现有安全工具结合使用。把 Copilot 视为额外的安全分析层,而非替代专用安全扫描器和实践。

开发者 不应

  • 自动接受 Copilot 的安全建议。始终审查并测试建议的代码更改,以确保其适用且有效。
  • 仅依赖 Copilot 完成全面的安全审计。Copilot 是有帮助的工具,但不能取代深入的安全评估和渗透测试。
  • 忽视代码扫描警报。即使警报看似轻微也要及时处理,防止安全债务积累。
  • 将 Copilot 当作回避学习安全编码实践的借口。继续自我学习并培训团队掌握安全最佳实践。
  • 假设 Copilot 能捕获所有漏洞。安全是持续的过程,需要保持警惕。
  • 使用 Copilot 绕过安全政策。遵守组织的安全规程,将 Copilot 用作提升而非规避工具。

开发者资源

需要关注的指标

为评估新工具的试点并确保全面推广带来持续改进,请监控结果并在需要时进行调整。我们建议关注 质量、交付速度和开发者满意度 三大维度,以及它们如何共同推动业务成果。

以下是评估 Copilot 对该特定目标影响的部分指标。

  • 安全债务比率。使用安全概览查看警报数量是否随时间下降。
  • 修复安全问题的时长。使用安全概览查看修复安全问题的时间是否随时间缩短。

参见 评估代码安全风险

© . This site is unofficial and not affiliated with GitHub, Inc.