跳至主要内容

自定义或禁用 GitHub Copilot 云代理的防火墙

了解如何控制 Copilot 云代理可以访问的域名和 URL。

注意

防火墙配置已迁移至 Copilot 云代理设置页面。之前保存为 Actions 变量的配置将在该页面保留。

概览

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

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

防火墙始终允许访问 Copilot 用于与 GitHub 交互的若干主机。默认情况下,还启用了推荐的白名单,以允许代理下载依赖项。

如果 Copilot 试图发起被防火墙阻止的请求,会在拉取请求正文中添加警告(如果 Copilot 首次创建拉取请求)或在评论中添加警告(如果 Copilot 响应拉取请求的评论)。警告会显示被阻止的地址以及尝试发出请求的命令。

Screenshot of a warning from Copilot about being blocked by the firewall.

限制

代理防火墙存在重要限制,影响其安全覆盖范围。

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

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

默认启用的推荐白名单允许访问以下内容

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

要查看推荐白名单中包含的完整主机列表,请参见 Copilot 白名单参考

在组织层面配置防火墙

组织所有者可以在组织层面配置所有防火墙设置。要访问防火墙设置

  1. 在 GitHub 右上角,点击你的个人头像,然后点击 组织

  2. 点击即可选择组织。

  3. 在你的组织名称下,点击 设置。如果看不到 “设置” 选项卡,请选择 更多 下拉菜单,然后点击 设置

    Screenshot of the tabs in an organization's profile. The "Settings" tab is outlined in dark orange.

  4. 在侧边栏,“代码、规划和自动化” 下,点击 Copilot,然后点击 云代理

启用或禁用防火墙

警告

禁用防火墙后,Copilot 将能够连接到任意主机,增加代码或其他敏感信息泄露的风险。

  1. 在 “Internet access”(互联网访问) 下,将 Enable firewall(启用防火墙)设置为 Enabled(启用)、Disabled(禁用)或 Let repositories decide(让仓库自行决定)(默认)。
  1. 在 “Internet access” 下,将 Recommended allowlist(推荐白名单)设置为 Enabled(启用)、Disabled(禁用)或 Let repositories decide(让仓库自行决定)(默认)。

控制仓库是否可以添加自定义白名单规则

默认情况下,仓库管理员可以向防火墙白名单添加自定义条目。组织所有者可以禁用此功能,以防止仓库添加自定义规则。

  1. 在 “Internet access” 下,将 Allow repository custom rules(允许仓库自定义规则)设置为 Enabled(启用,默认)或 Disabled(禁用)。

管理组织自定义白名单

添加到组织自定义白名单的项目适用于组织内的所有仓库。这些项目在仓库层面无法删除。组织层面的规则与仓库层面的规则会合并生效。

  1. 在 “Internet access” 下,点击 Organization custom allowlist(组织自定义白名单)。

  2. 添加您希望包含在白名单中的地址。您可以包括

    • 域名(例如 packages.contoso.corp)。流量将被允许访问指定的域以及其所有子域。

      示例packages.contoso.corp 将允许流量访问 packages.contoso.corpprod.packages.contoso.corp,但不包括 artifacts.contoso.corp

    • URL(例如 https://packages.contoso.corp/project-1/)。流量仅在指定的协议(https)和主机(packages.contoso.corp)上被允许,并且限制在指定的路径及其子路径内。

      示例https://packages.contoso.corp/project-1/ 将允许流量访问 https://packages.contoso.corp/project-1/https://packages.contoso.corp/project-1/tags/latest,但不包括 https://packages.contoso.corp/project-2ftp://packages.contoso.corphttps://artifacts.contoso.corp

  3. 点击 添加规则

  4. 验证列表后,点击 保存更改

在仓库层面配置防火墙

仓库管理员可以在仓库层面配置防火墙设置,包括启用或禁用防火墙、启用或禁用推荐白名单以及管理自定义白名单。根据组织层面的配置,部分设置可能被锁定。

要访问防火墙设置

  1. 在 GitHub 上,导航至仓库的主页面。

  2. 在你的仓库名称下,点击 设置。如果看不到 “设置” 选项卡,请选择 更多 下拉菜单,然后点击 设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的 “Code & automation”(代码与自动化) 部分,点击 Copilot 然后点击 云代理

启用或禁用防火墙

注意

仅当组织层面的 Enable firewall 设置为 Let repositories decide 时,您才能在仓库层面更改此设置。如果组织层面的设置为 Enabled(启用)或 Disabled(禁用),则无法为单个仓库更改此设置。

  1. 切换 Enable firewall 设置的开关。

注意

仅当组织层面的 Recommended allowlist 设置为 Let repositories decide 时,您才能在仓库层面更改此设置。如果组织层面的设置为 Enabled(启用)或 Disabled(禁用),则无法为单个仓库更改此设置。

  1. 切换 Recommended allowlist 设置的开关。

管理自定义白名单

注意

仅当组织层面的 Allow repository custom rules 设置为 Enabled 时,您才能在仓库层面添加自定义白名单规则。有关更多信息,请参阅 控制仓库是否可以添加自定义白名单规则

  1. 点击 自定义白名单

  2. 添加您希望包含在白名单中的地址。您可以包括

    • 域名(例如 packages.contoso.corp)。流量将被允许访问指定的域以及其所有子域。

      示例packages.contoso.corp 将允许流量访问 packages.contoso.corpprod.packages.contoso.corp,但不包括 artifacts.contoso.corp

    • URL(例如 https://packages.contoso.corp/project-1/)。流量仅在指定的协议(https)和主机(packages.contoso.corp)上被允许,并且限制在指定的路径及其子路径内。

      示例https://packages.contoso.corp/project-1/ 将允许流量访问 https://packages.contoso.corp/project-1/https://packages.contoso.corp/project-1/tags/latest,但不包括 https://packages.contoso.corp/project-2ftp://packages.contoso.corphttps://artifacts.contoso.corp

  3. 点击 添加规则

  4. 验证列表后,点击 保存更改

延伸阅读

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