Skip to main content

为 GitHub Copilot 编码代理自定义或禁用防火墙

了解如何控制 Copilot编程助理 可以访问的域和 URL。

注意

防火墙配置已移动到 Copilot编程助理 设置页。 先前保存为 Actions 变量的配置将保留在该页上。

概述

默认情况下,Copilot对互联网的访问受防火墙的限制。

将访问限制到互联网有助于管理数据外泄风险,其中 Copilot 的令人惊讶行为,或者向其提供恶意指令,可能导致代码或其他敏感信息泄露到远程位置。

防火墙始终允许 Copilot 使用的主机访问,以便与 GitHub 进行交互。 默认情况下,还会启用建议的允许列表,以允许代理下载依赖项。

如果 Copilot 尝试发出受防火墙阻止的请求,则会在拉取请求正文中添加警告(如果 Copilot 是第一次创建拉取请求)或在评论中添加警告(如果 Copilot 正在回应拉取请求评论)。 警告会显示受阻止的地址和试图发出请求的命令。

该屏幕截图显示了来自 Copilot 的关于受防火墙阻止的警告。

限制

代理防火墙具有重要局限性,会影响其安全覆盖范围。

  •         **仅适用于代理启动的进程**:防火墙仅适用于代理通过其 Bash 工具启动的进程。 它不适用于模型上下文协议 (MCP) 服务器或在配置的 Copilot 设置步骤中启动的进程。
    
  •         **仅在 GitHub Actions 设备中适用**:防火墙仅在 GitHub Actions 设备环境内运行。 它不适用于在此环境之外运行的进程。
    
  •         **绕过潜在风险**:复杂的攻击可能会绕过防火墙,从而可能允许未经授权的网络访问和数据外泄。
    

这些局限性意味着防火墙可为常见场景提供一层保护,但不应被视为全面的安全解决方案。

默认情况下启用的建议白名单允许访问:

  • 常见的操作系统包存储库(例如 Debian、Ubuntu、Red Hat)。
  • 常见容器注册表(例如,Docker Hub、Azure Container Registry、AWS 弹性容器注册表)。
  • 常见编程语言使用的包注册表(C#、Dart、Go、Haskell、Java、JavaScript、Perl、PHP、Python、Ruby、Rust、Swift)。
  • 常见证书颁发机构(用于允许验证 SSL 证书)。
  • 用于下载适用于 Playwright MCP 服务器的 Web 浏览器的主机。

有关建议的允许列表中包含的主机的完整列表,请参阅 Copilot 允许列表参考

可以选择关闭建议的允许列表。 禁用建议的白名单可能会增加未经授权访问外部资源的风险。

  1. 在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  2. 在边栏的“代码与自动化”部分,单击“Copilot”,然后单击“编码代理”********。

  3. 关闭“Recommended allowlist”设置********。

要使用推荐的允许列表以及你自己的允许列表,请将“Recommended allowlist”设置保留为“on”,并在“Custom allowlist”页中添加其他地址************。

在代理的防火墙中将其他主机列入允许列表

可以在代理的防火墙中将额外地址列入允许列表。

  1. 在 GitHub 上,导航到存储库的主页面。1. 在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  2. 在边栏的“代码与自动化”部分,单击“Copilot”,然后单击“编码代理”********。

  3. 单击“Custom allowlist”****

  4. 添加希望包含在允许列表中的地址。 可以包括:

    •      **域**(例如 `packages.contoso.corp`)。 将允许流量流向指定的域和任何子域。
      
      
           **Example**:`packages.contoso.corp`允许流量流向 `packages.contoso.corp` 和 `prod.packages.contoso.corp`,但不允许`artifacts.contoso.corp`。
      
    •      **URLs**(例如,`https://packages.contoso.corp/project-1/`)。 将仅允许在指定的方案 (`https`) 和主机 (`packages.contoso.corp`) 上传输流量,并且仅限于指定的路径和后代路径。
      
      
           **Example**:`https://packages.contoso.corp/project-1/`允许流量流向`https://packages.contoso.corp/project-1/`和`https://packages.contoso.corp/project-1/tags/latest`,但不允许`https://packages.consoto.corp/project-2`、`ftp://packages.contoso.corp`或`https://artifacts.contoso.corp`。
      
  5. 单击“添加规则”****。

  6. 验证列表后,单击“Save changes”****。

禁用防火墙

警告

禁用防火墙将允许 Copilot 连接到任何主机,从而增加代码或其他敏感信息外泄的风险。

默认情况下会启用防火墙。 要禁用防火墙,请将“Enable firewall”设置切换为“off”********。

其他阅读材料

  •         [AUTOTITLE](/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#creating-configuration-variables-for-a-repository)
    
  •         [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent)