Skip to main content

Sobre redes privadas para executores hospedados no GitHub em sua organização

Você pode criar uma configuração de rede privada para sua organização usar executores hospedados no GitHub em suas redes virtuais (VNET) do Azure.

Quem pode usar esse recurso?

Os proprietários da organização com o plano GitHub Team podem configurar a rede privada do Azure para executores hospedados da GitHub no nível da organização.

Sobre redes privadas do Azure com executores hospedados por GitHub

Você pode usar executores hospedados no GitHub em uma VNET do Azure. Isso permite usar a infraestrutura gerenciada pela GitHub para CI/CD e, ao mesmo tempo, fornece controle total sobre as políticas de rede dos seus executores. Para obter mais informações sobre VNETs do Azure, consulte O que é uma Rede Virtual do Azure?, na documentação do Azure.

Você pode conectar várias sub-redes VNET ao GitHub e gerenciar o acesso aos recursos privados para seus executores por meio de grupos de executores. Para obter mais informações sobre os grupos de executores, confira "Como controlar o acesso a executores maiores".

O uso de executores hospedados em GitHub na VNET do Azure permite que você execute as seguintes ações.

  • Conectar um executor de forma privada a recursos dentro de uma VNET do Azure sem abrir portas da Internet, incluindo recursos locais acessíveis a partir da VNET do Azure.
  • Restrinja o que os executores hospedados em GitHub podem acessar ou se conectar com controle total sobre as políticas de rede de saída.
  • Monitore os logs de rede dos executores hospedados em GitHub e exiba toda a conectividade de e para um executor.

Sobre o uso de executores avançados com a VNET do Azure

2 executores de 64 vCPU, Ubuntu e Windows têm suporte com o Azure VNET. Para obter mais informações sobre esses tipos de executores, consulte "Sobre executores maiores".

A rede privada para executores hospedados pela GitHub não oferece suporte para endereços IP estáticos para executores avançados. Você deve usar endereços IP dinâmicos, que é a configuração padrão de executores avançados. Para saber mais sobre redes para executores maiores, confira "Sobre executores maiores".

Sobre a comunicação em rede

Para facilitar a comunicação entre as redes do GitHub e sua VNET, uma placa de interface de rede (NIC) do executor hospedado pela GitHub é implantada na VNET do Azure.

Como a NIC vive dentro da sua VNET, a GitHub não pode bloquear conexões de entrada. Por padrão, as máquinas virtuais do Azure aceitarão conexões de entrada da mesma VNET. Para obter mais informações, confira AllowVNetInBound no Microsoft Learn. Recomenda-se bloquear explicitamente todas as conexões de entrada para os corredores. O GitHub nunca exigirá conexões de entrada para essas máquinas.

Uma NIC permite que uma VM (máquina virtual) do Azure comunique-se com a Internet, com o Azure e com recursos locais. Dessa forma, toda a comunicação é mantida privada dentro dos limites da rede, e as políticas de rede aplicadas à VNET também se aplicam ao executor. Para obter mais informações sobre como gerenciar uma interface de rede, consulte Alterar configurações da interface de rede no Microsoft Learn.

Note

Várias NICs podem aparecer para um único trabalho em sua assinatura porque o serviço GitHub Actions provisiona recursos em excesso para executar trabalhos. Assim que um executor estiver ocioso, o serviço GitHub Actions desprovisiona automaticamente o recurso e remove a NIC correspondente.

Diagrama da arquitetura de comunicação de rede entre as redes do GitHub e suas redes privadas. O diagrama descreve cada etapa da conexão de executores hospedados no GitHub a uma VNET do Azure. Cada etapa é numerada e os números correspondem às descrições numeradas da etapa listada abaixo do diagrama.

  1. Um fluxo de trabalho do GitHub Actions é acionado.
  2. O serviço GitHub Actions cria um executor.
  3. O serviço do executor implanta a placa de interface de rede (NIC) do executor hospedado pelo GitHub em sua VNET do Azure.
  4. O agente de execução seleciona o trabalho de fluxo de trabalho. O serviço GitHub Actions coloca o trabalho na fila.
  5. O executor envia os registros de volta para o serviço GitHub Actions.
  6. A NIC acessa recursos no local.

Sobre regiões com suporte

O serviço GitHub Actions oferece suporte a um subconjunto de todas as regiões oferecidas pelo Azure. Para facilitar a comunicação entre o serviço GitHub Actions e sua sub-rede, ela deve estar em uma das seguintes regiões suportadas.

  • EastUs
  • EastUs2
  • WestUs2
  • WestUs3
  • CentralUs
  • NorthCentralUs
  • AustraliaEast
  • JapanEast
  • FranceCentral
  • GermanyWestCentral
  • NorthEurope
  • NorwayEast
  • SwedenCentral
  • SwitzerlandNorth
  • UkSouth
  • SoutheastAsia
  • KoreaCentral

A rede privada do Azure oferece suporte a executores de GPU nas seguintes regiões.

  • EastUs
  • WestUs
  • NorthCentralUs

A rede privada do Azure oferece suporte a executores de arm64 nas regiões a seguir.

  • EastUs
  • EastUs2
  • WestUs2
  • WestUs3
  • NorthCentralUs

Se não houver suporte à região desejada, envie uma solicitação de disponibilidade de nova região neste formulário do GitHub. Você também pode usar emparelhamento de rede virtual global para conectar redes virtuais em diferentes regiões do Azure. Para obter mais informações, consulte Emparelhamento de Rede Virtual na documentação do Azure.

Sobre as permissões do serviço GitHub Actions

Para implantar com êxito uma NIC e ingressar uma NIC em uma sub-rede, o serviço GitHub Actions mantém as seguintes permissões de controle de acesso baseado em função (RBAC) do Azure na sua assinatura do Azure. Para obter mais informações sobre o gerenciamento de acesso refinado de recursos do Azure, consulte RBAC do Azure na documentação do Azure.

  • GitHub.Network/operations/read
  • GitHub.Network/networkSettings/read
  • GitHub.Network/networkSettings/write
  • GitHub.Network/networkSettings/delete
  • GitHub.Network/RegisteredSubscriptions/read
  • 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

As permissões a seguir estarão presentes em dois aplicativos empresariais em seu locatário do Azure. Você verá os aplicativos empresariais do seu locatário do Azure depois de configurar a rede privada do Azure.

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

Usando políticas de rede da sua VNET

Como a NIC do executor hospedado no GitHub é implantada em sua VNET do Azure, as políticas de rede aplicadas à VNET também se aplicam ao executor.

Por exemplo, se a sua VNET estiver configurada com um Azure ExpressRoute para fornecer acesso a recursos locais (por exemplo, Artifactory) ou conectada a um túnel VPN para fornecer acesso a outros recursos baseados em nuvem, essas políticas de acesso também se aplicarão aos seus executores. Além disso, todas as regras de saída aplicadas ao grupo de segurança de rede (NSG) da VNET também se aplicam, o que lhe dá a capacidade de controlar o acesso de saída dos seus executores.

Se você tiver ativado qualquer monitoramento de logs de rede para a VNET, também poderá monitorar o tráfego de rede para seus executores.

Os executores hospedados pelo GitHub usam qualquer controle de saída que sua rede esteja usando. Se sua rede depender do acesso de saída padrão do Azure, os IPs não serão previsíveis e não poderão ser adicionados à lista de permissões de IP do GitHub. Para obter recomendações sobre como usar um IP de saída estável, consulte Acesso de saída padrão na documentação do Azure.

Usando executores hospedados no GitHub com uma VNET do Azure

Para usar executores hospedados em GitHub com uma VNET do Azure, você precisará configurar seus recursos do Azure e criar uma configuração de rede em GitHub.

Para obter procedimentos para configurar a rede privada do Azure no nível da organização, consulte "Configurar redes privadas para executores hospedados no GitHub na sua organização".