大多数企业都了解 AI 编码工具可以带来的生产力提升。然而,许多人担心公司内部的不当使用,例如恶意提示或开发者在未审查的情况下接受 AI 建议,会导致代码库标准受到破坏。
您可以通过设置 GitHub 环境和工作文化,以实现有效治理,从而降低这些风险。GitHub Copilot 的一大优势在于它内置于 GitHub 平台,而该平台已经具备一系列企业级代码治理功能。
1. 要求拉取请求和审查
开发者和恶意行为者绝不应能够单方面将未经审查的 AI 建议或代理工作直接应用于敏感代码库。您应在用户将代码合并到生产代码库及其他重要分支之前,要求 已批准的拉取请求。
为此,请创建一个规则集
-
识别包含您想要保护的代码库的组织或仓库,并对其 应用自定义属性。这将使您能够在规则集中轻松定位这些资源。请参阅 管理组织中仓库的自定义属性 或 管理组织的自定义属性。
或者,您也可以手动将这些受保护资源添加到规则集,或根据命名约定进行定位。
-
为您的企业创建分支规则集。请参阅 使用规则集在企业中实施代码治理。
- 至少启用 合并前要求拉取请求 和 阻止强制推送 规则。在“合并前要求拉取请求”规则下,确保至少需要一次批准。
- 如有需要可启用其他规则。例如,如果您担心恶意行为者劫持拉取请求,请确保在推送新提交时 撤销过期的拉取请求批准。
-
鼓励仓库管理员为仓库中的特定文件设置 CODEOWNERS 文件。这将在这些文件被修改时自动请求代码所有者审查。
然后,您可以返回规则集并启用 要求代码所有者审查 规则。
-
鼓励组织所有者和仓库管理员创建更具体的规则集,因为他们更了解自己代码的需求。
这些规则集将补充您在企业层面定义的基线,但永不覆盖基线。
2. 测试代码
良好的 DevOps 实践可确保代码在合并和部署之前自动进行测试,最大程度降低错误进入默认分支并在生产环境中出现的风险。
- 启用 GitHub Actions 或其他 CI/CD 系统。
- 鼓励开发者为所有功能编写测试,并将测试集成到 GitHub Actions 工作流中。
- 鼓励组织所有者或仓库所有者创建规则集,并将重要工作流添加到 合并前要求工作流通过 规则中。
3. 扫描代码漏洞
Copilot 已经设计为避免向代码库中引入漏洞。例如,Copilot 云代理生成的代码会自动扫描易受攻击的模式和诸如 API 密钥之类的机密信息。
然而,定期扫描所有代码中的漏洞和机密信息,以及防止开发者首次引入漏洞,都是良好实践。
- 作为起点,请在您的组织上应用并强制执行基本的 安全配置。这是一组安全功能的启用设置。我们建议包括代码扫描、机密扫描和机密推送保护。请参阅 创建自定义安全配置。
- 随着对需求的了解加深,您可以创建额外的自定义配置,或在仓库层面应用细粒度设置。
- 要在拉取请求上强制代码扫描,请返回规则集并启用 要求代码扫描结果 规则。
4. 为 Copilot 制定指南
为了从根本上提升 Copilot 建议的质量,您应创建自定义指令。这些指令为所有提示添加上下文,告知 Copilot 遵循贵公司的编码标准。
- 要建立良好的基线,请在组织层面创建 自定义指令。这些可以是适用于任何仓库的高级标准。但请注意,这些指令仅在 GitHub 网站上生效。请参阅 为 GitHub Copilot 添加组织自定义指令。
- 为实现更全面的覆盖,鼓励开发者和仓库管理员 为特定仓库编写自定义指令。这些指令比组织指令适用范围更广,并可更详细地说明每个项目及其需求。请参阅 为 GitHub Copilot 添加仓库自定义指令。
5. 鼓励最佳实践
在设立了强有力的防护措施后,开发者已经能够有效使用 AI。然而,提供 AI 工具培训并营造鼓励最佳实践的文化同样重要,而不仅仅是强制执行。
- 传达您的治理设置以及公司对开发者使用 Copilot 的期望。例如,如果所有代理工作都必须进行彻底审查,请确保该流程已建立并传达。
- 创建入职资源,如内部文档或视频。作为起点,可共享已有资源,例如 使用 GitHub Copilot 的最佳实践 和 GitHub Copilot Chat 手册。
- 提供持续的培训和支持,如工作坊。在成功的推广中,许多公司会挑选“冠军”角色,帮助其他人有效使用 Copilot。
6. 为最坏情况做计划
即使设置了最严格的防护措施,也始终可能出现易受漏洞或错误的代码被合并,无论开发者是否使用 AI 工具。
为应对此类情形,您应制定处理问题的计划并与开发者沟通。例如
- 回滚错误的拉取请求并撤销部署。
- 创建讨论帖,分析出错原因并阐述未来的避免措施。
- 检查审计日志,查看规则集绕过、权限错误或治理设置变更等情况。
7. 检查代码质量
如果您对治理模型有信心,但仍担心 Copilot 随时间降低代码库质量,您可以在 rollout 期间进行衡量。启用后,GitHub Code Quality 可提供仓库代码健康的指标。请参阅 关于 GitHub Code Quality。
后续步骤
了解企业如何使用审计日志监控配置设置和许可证分配的变更。请参阅 审阅 GitHub Copilot 的审计日志。