大多数企业都知道 AI 编码工具可以带来的生产力优势。 但是,许多人担心公司中的不当使用(如恶意提示或开发人员接受 AI 建议而不审查)将导致其代码库的标准遭到入侵。
可以通过设置 GitHub 环境和工作文化来有效管理从而缓解这些风险。 GitHub Copilot 的主要优势是,它内置于 GitHub 平台中,而该平台已经包含了一系列企业级别的代码治理功能。
1. 需要合并请求和评审
开发人员和不良参与者永远无法单方面应用未经审查的 AI 建议或代理直接应用于敏感代码库。 用户必须先 获得批准的拉取请求 ,然后才能将代码合并到生产代码库和其他重要分支中。
为此,请创建规则集:
-
标识包含要保护的代码库的组织或存储库,并向其 应用自定义属性 。 这样,就可以在规则集中轻松定位这些资源。 请参阅“管理组织中存储库的自定义属性”或“管理组织的自定义属性”。
或者,可以手动将这些受保护的资源添加到规则集,或基于命名约定将其作为目标。
-
为企业创建分支规则集。 请参阅“使用规则集在企业中强制实施代码治理”。
- 在合并和阻止强制推送规则之前,至少启用 “需要拉取请求”。 在“要求合并请求”规则下,确保至少需要一个批准。
- 如果需要,请启用其他规则。 例如,如果你担心恶意执行组件劫持拉取请求,请确保在推送新提交时 消除过时的拉取请求审批 。
-
鼓励存储库管理员为存储库中的特定文件设置 CODEOWNERS 文件。 当修改这些文件时,这会自动请求代码所有者的评审。
然后,可以返回到规则集并启用 要求代码所有者审查 规则。
-
鼓励组织所有者和存储库管理员创建更具体的规则集,因为他们可能更了解自己的代码的要求。
这些规则集将添加到您在企业级别定义的基线中,但永远不会覆盖它。
2.测试代码
良好的 DevOps 做法可确保在合并和部署代码之前自动测试代码,最大限度地减少错误进入默认分支并在生产环境中出现的风险。
- 启用 GitHub Actions 或其他 CI/CD 系统。
- 鼓励开发人员为所有功能编写测试,并将测试集成到 GitHub Actions 工作流中。
- 鼓励组织所有者或存储库所有者创建规则集,并将重要的工作流添加到“要求工作流在合并前通过”规则。
3.扫描代码是否存在漏洞
Copilot 已设计为避免在代码库中引入漏洞。 例如,Copilot编程助理 创建的代码会被自动扫描,以发现易受攻击的模式和机密信息,例如 API 密钥。
但是,最好定期扫描所有代码中是否存在漏洞和机密,并防止开发人员首先引入漏洞。
- 首先,对组织应用并强制执行 GitHub推荐的安全配置 。 这是针对安全功能的启用功能设置集合,包括 code scanning、secret scanning 和机密推送保护。 请参阅“删除自定义安全配置”。
- 了解需求的详细信息时,请在存储库级别创建自定义配置或应用精细设置。
- 要在拉取请求中强制实施 code scanning ,请返回到规则集并启用 “需要 code scanning 结果” 规则。
4. 为 Copilot 创建准则
若要首先提高 Copilot 提供建议的质量,您应创建自定义指令。 这些说明为所有提示添加上下文,以便告知 Copilot 遵循贵公司的编码标准。
- 若要建立良好的基线, 请在组织级别创建自定义说明。 这些标准可以是可能适用于任何存储库的高级标准。 但是,请注意,这些说明仅适用于 GitHub 网站。 请参阅“为 GitHub Copilot 添加组织自定义说明”。
- 有关更完整的覆盖范围,请鼓励开发人员和存储库管理员 为特定存储库编写自定义说明。 这些适用于比组织说明更多的对象,并可以更详细地描述每个项目及其要求。 请参阅“为GitHub Copilot添加存储库自定义说明”。
5. 鼓励最佳做法
有了强大的防护措施,开发人员应该已经能够有效地使用 AI。 但是,必须就 AI 工具提供培训,并创建鼓励最佳做法的文化,而不仅仅是强制实施。
- 传达你的治理设置和公司对开发人员如何使用 Copilot的期望。 例如,如果应全面审查所有代理工作,请确保建立并传达此过程。
- 创建载入资源,例如内部文档或视频。 将现有资源如 使用 GitHub Copilot 的最佳做法 和 GitHub Copilot Chat 指南 作为起点进行分享。
- 提供持续的培训和支持,例如研讨会。 在成功的实施过程中,许多公司会确定一些“骨干”,他们负责培训其他人如何有效使用Copilot。
6. 规划最差的情况
即使有最严格的防护措施,也始终有可能合并易受攻击或容易出错的代码,而不管开发人员使用的是 AI 工具。
若要为这些方案做好准备,应规划如何解决问题,并与开发人员沟通此计划。 例如:
- 恢复错误的拉取请求并回滚部署。
- 创建一个讨论文章,分析出了什么问题以及如何在未来避免它。
- 检查审核日志,以查找规则集绕过、权限错误或对治理设置的更改。
7.检查代码质量
如果你对治理模型有信心,但仍担心 Copilot 会随着时间的推移降低代码库的质量,则可以在推出过程中衡量这一点。 如果启用,GitHub Code Quality 提供存储库代码运行状况的指标。 请参阅“关于GitHub代码质量”。
后续步骤
了解企业如何使用审核日志监视配置设置和许可证分配的更改。 请参阅“查看 GitHub Copilot Business 的审核日志”。