Copilot 云代理 是一个自治代理,有权访问代码,并且可以将更改推送到存储库。 这会带来一些风险。
GitHub 在可能的情况下已采取适当的缓解措施。 这提供了 Copilot 云代理 一个强大的内置安全保护基础,可以通过遵循最佳做法指南进行补充。
未经验证的代码可能会引入漏洞
默认情况下,Copilot 云代理 会检查其生成的代码是否存在安全问题,并使用 Copilot代码审查 来获取其代码的第二意见。 它尝试解决在完成拉取请求之前识别的问题。 这提高了代码质量,并降低了 Copilot 云代理 生成的代码引入硬编码机密、不安全依赖项和其他漏洞等问题的可能性。
Copilot 云代理安全验证**不需要**GitHub Secret Protection, GitHub Code Security, or GitHub Advanced Security许可证。
* ** CodeQL ** 用于标识代码安全问题。
- 新引入的依赖项 GitHub Advisory Database 会被检查,查看是否存在恶意软件公告以及任何 CVSS 评级为高或严重的漏洞。
-
** Secret scanning ** 用于检测敏感信息,例如 API 密钥、令牌和其他机密。 - 可以在会话日志中查看有关已执行的分析以及所 Copilot 云代理 执行的操作的详细信息。 请参阅“跟踪GitHub Copilot 的会话”。
(可选)可以禁用Copilot 云代理使用的一个或多个代码质量和安全验证工具。 请参阅“配置 GitHub Copilot 云代理的设置”。
Copilot 云代理 可以将代码更改推送到存储库
若要缓解此风险,GitHub:
-
**限制可以触发代理的人员。** 只有对存储库具有写入访问权限的用户才能触发 Copilot 云代理 工作。 从不向代理显示没有写入权限的用户注释。 -
**限制代理可以推送到的分支。** Copilot 云代理 只能推送到单个分支。 通过在现有的拉取请求中提及 `@copilot` 来触发代理,Copilot 对该拉取请求的分支拥有写入访问权限。 在其他情况下,会创建一个新`copilot/`Copilot分支,代理只能推送到该分支。 智能体还受到任何分支保护和工作存储库所需检查的约束。 -
**限制代理的凭据。** Copilot 云代理 只能执行简单的推送操作。 它无法直接运行 `git push` 或其他 Git 命令。 -
**在合并之前需要人工审查。** 由 Copilot 云代理 创建的草稿的拉取请求必须由人为审阅和合并。 Copilot 云代理 无法将其拉取请求标记为“准备审阅”,并且无法批准或合并拉取请求。 -
**限制GitHub Actions工作流运行。** 默认情况下,工作流不会被触发,直到 Copilot 云代理 的代码经过审查,并且拥有存储库写入权限的用户点击“批准并运行工作流”按钮。 (可选)你可以配置为 Copilot 允许工作流自动运行。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/review-copilot-prs#managing-github-actions-workflow-runs)”。 -
**阻止要求 Copilot 云代理 创建拉取请求的用户批准请求。** 这维持了“必需审批”规则和分支保护中的预期控制。 请参阅“[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets)”。
Copilot 云代理 有权访问敏感信息
Copilot 云代理 有权访问代码和其他敏感信息,并可能会意外或由于恶意用户输入而泄露它。
若要缓解此风险, GitHub请 Copilot 云代理限制对 Internet 的访问。 请参阅“自定义或禁用 GitHub Copilot 云代理的防火墙”。
AI 提示可能容易受到注入攻击
用户可以在分配给Copilot 云代理的问题中包含隐藏信息,或者在留给Copilot 云代理的评论中包含隐藏信息,这些都是提示注入的形式。
若要缓解此风险,GitHub应在将用户输入Copilot 云代理传递之前筛选隐藏字符:例如,在问题或拉取请求注释中输入的文本不会传递给Copilot 云代理。
管理员可以忘记代理的工作
为了缓解此风险, Copilot 云代理 设计为可审核和可跟踪。
-
Copilot 云代理的提交由 Copilot创作,分配问题或请求更改拉取请求的开发人员被标记为共同作者。 这样,可以更轻松地识别由 Copilot 云代理 生成的代码,以及识别谁开始了任务。 - 会话日志和审核日志事件可供管理员使用。
- 每个由代理程序创建的提交消息都包含一个指向代理程序会话日志的链接,用于代码审查和审核。 请参阅“跟踪GitHub Copilot 的会话”。
-
Copilot 云代理的提交经过签名,因此在GitHub上显示为“已验证”。 这可以确保这些提交是由 Copilot 云代理 完成的,并且未被更改。