Skip to main content

关于企业中的 GitHub 托管的运行器的 Azure 专用网络

可为企业创建专用网络配置,以便在 Azure 虚拟网络 (VNET) 中使用 GitHub 托管的运行器。

谁可以使用此功能?

Enterprise owners can create private network configurations at the enterprise level to use GitHub-hosted runners with an Azure VNET.

关于 GitHub 托管的运行器的 Azure 私有网络

可在 Azure Vnet 中使用 GitHub 托管的运行器。 这样就将 GitHub 托管基础结构用于 CI/CD,同时取得对运行器网络策略的完全控制。 有关 Azure VNET 的详细信息,请参阅 Azure 文档中的什么是 Azure 虚拟网络?

可以将多个 VNET 子网连接到 GitHub.com 并通过运行器组来管理运行器的专用资源访问权限。 有关运行器组的详细信息,请参阅“控制对较大运行器的访问”。

在 Azure VNET 中使用 GitHub 托管运行器可执行以下操作。

  • 以私密方式将运行器连接到 Azure VNET 内的资源,而无需打开 Internet 端口,包括可从 Azure VNET 访问的本地资源。
  • 通过对出站网络策略的完全控制来限制 GitHub 托管运行器可以访问或连接的内容。
  • 监视 GitHub 托管运行器的网络日志,并查看与运行器之间的所有连接。

关于将大型运行器与 Azure VNET 配合使用

Azure VNET 仅支持 2-64 vCPU Ubuntu 和 Windows 运行器。 有关这些运行器类型的详细信息,请参阅“关于较大的运行器”。

GitHub 托管的运行器专用网络不支持将静态 IP 地址用于大型运行器。必须使用动态 IP 地址,这是大型运行器的默认配置。 有关适用于大型运行器的网络的详细信息,请参阅“关于较大的运行器”。

关于网络通信

为便于在 GitHub 网络与 VNET 之间进行通信,GitHub 托管的运行器网络接口卡 (NIC) 将会部署到你的 Azure VNET。

由于 NIC 位于 VNET 中,GitHub 无法阻止入站连接。 默认情况下,Azure 虚拟机会接受来自同一 VNET 的入站连接。 有关详细信息,请访问 Microsoft Learn 上的 AllowVNetInBound。 建议显式阻止指向运行器的所有入站连接。 GitHub 永远不会需要到这些计算机的入站连接。

Azure 虚拟机 (VM) 通过 NIC 与互联网、Azure 及本地资源通信。 通过此方式,所有通信都在网络边界内保持私密,应用于 VNET 的网络策略也适用于运行器。 有关如何管理网络接口的详细信息,请参阅 Microsoft Learn 上的更改网络接口设置

Note

订阅中的单个作业可能会出现多个 NIC,因为 GitHub Actions 服务预配过多资源来运行作业。 待运行程序空闲后,% data variables.product.prodname_actions %} 服务会自动取消预配资源并删除相应的 NIC。

GitHub 网络与专用网络之间的网络通信体系结构示意图。 此图描述了将 GitHub 托管的运行器连接到 Azure VNET 的每个步骤。 每个步骤都有编号,这些数字对应于关系图下面列出的步骤的编号说明。

  1. GitHub Actions 工作流被触发。
  2. GitHub Actions 服务创建运行器。
  3. 运行器服务将 GitHub 托管运行器网络接口卡 (NIC) 被部署到 Azure VNET 中。
  4. 运行器代理会选取工作流作业。 GitHub Actions 服务会对作业进行排队。
  5. 运行器将日志发送回 GitHub Actions 服务。
  6. NIC 访问本地资源。

关于支持的区域

GitHub Actions 服务支持 Azure 提供的所有区域中的一部分区域。 为了方便 GitHub Actions 服务与你的子网之间进行通信,你的子网必须位于以下受支持区域之中的一个区域。

  • EastUs
  • EastUs2
  • WestUs2
  • AustraliaEast
  • CentralUs
  • FranceCentral
  • NorthEurope
  • NorwayEast
  • SoutheastAsia
  • SwitzerlandNorth
  • UkSouth

Azure 专用网络支持以下区域中的 GPU 运行程序。

  • EastUs
  • WestUs
  • NorthCentralUs
  • SouthCentralUs

你也可以使用全局虚拟网络对等互连连接不同 Azure 区域间的虚拟网络。 有关详细信息,请参阅 Azure 文档中的虚拟网络对等互连

关于 GitHub Actions 服务权限

为了成功部署 NIC 并将 NIC 加入子网,GitHub Actions 服务在你的 Azure 订阅中维持了下列 Azure 基于角色的访问控制 (RBAC) 权限。 有关 Azure 资源精细访问管理的详细信息,请参阅 Azure 文档中的 Azure RBAC

  • GitHub.Network/operations/read
  • GitHub.Network/networkSettings/read
  • GitHub.Network/networkSettings/write
  • GitHub.Network/networkSettings/delete
  • Microsoft.Network/locations/operations/read
  • Microsoft.Network/locations/operationResults/read
  • Microsoft.Network/locations/usages/read
  • Microsoft.Network/networkInterfaces/read
  • Microsoft.Network/networkInterfaces/write
  • Microsoft.Network/networkInterfaces/delete
  • Microsoft.Network/networkInterfaces/join/action
  • Microsoft.Network/networkSecurityGroups/join/action
  • Microsoft.Network/networkSecurityGroups/read
  • Microsoft.Network/publicIpAddresses/read
  • Microsoft.Network/publicIpAddresses/write
  • Microsoft.Network/publicIPAddresses/join/action
  • Microsoft.Network/routeTables/join/action
  • Microsoft.Network/virtualNetworks/read
  • Microsoft.Network/virtualNetworks/subnets/join/action
  • Microsoft.Network/virtualNetworks/subnets/read
  • Microsoft.Network/virtualNetworks/subnets/write
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/delete
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/details/read
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action
  • Microsoft.Resources/subscriptions/resourceGroups/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/write
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/operationStatuses/read

Azure 租户中的两个企业应用程序上将显示以下权限。 配置 Azure 专用网络后,会看到 Azure 租户的企业应用程序。

  • GitHub CPS Network Service ID:85c49807-809d-4249-86e7-192762525474
  • GitHub Actions API ID:4435c199-c3da-46b9-a61d-76de3f2c9f82

使用 VNET 的网络策略

由于 GitHub 托管的运行器 NIC 已部署在 Azure VNET 中,因此应用于 VNET 的网络策略也适用于运行器。

例如,如果将 VNET 配置为使用 Azure ExpressRoute 来提供对本地资源的访问(例如 Artifactory)或连接到 VPN 隧道以提供对其他基于云的资源的访问,则这些访问策略也适用于运行器。 此外,适用于 VNET 网络安全组 (NSG) 的任何出站规则也适用,使你能够控制运行器的出站访问。

如果为 VNET 启用了任何网络日志监视,还可以监视运行器的网络流量。

将 GitHub 托管的运行器与 Azure VNET 结合使用

若要将 GitHub 托管的运行器与 Azure VNET 一起使用,则需要配置 Azure 资源,然后在 GitHub 中创建网络配置。

有关配置企业级 Azure 专用网络的过程,请参阅“为企业中的 GitHub 托管的运行器配置专用网络”。