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.
- Um fluxo de trabalho do GitHub Actions é acionado.
- O serviço GitHub Actions cria um executor.
- O serviço do executor implanta a placa de interface de rede (NIC) do executor hospedado pelo GitHub em sua VNET do Azure.
- O agente de execução seleciona o trabalho de fluxo de trabalho. O serviço GitHub Actions coloca o trabalho na fila.
- O executor envia os registros de volta para o serviço GitHub Actions.
- 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".