Skip to main content

조직에서 GitHub 호스트형 실행기를 사용하여 개인 네트워킹 정보

조직이 Azure VNET(Virtual Network)에서 GitHub 호스트형 실행기를 사용하도록 개인 네트워크 구성을 만들 수 있습니다.

누가 이 기능을 사용할 수 있나요?

GitHub Team 플랜을 사용하는 조직 소유자는 조직 수준에서 GitHub 호스트형 실행기용 Azure 개인 네트워킹을 구성할 수 있습니다.

GitHub 호스트형 실행기에 대한 Azure 개인 네트워킹 구성

Azure VNET에서 GitHub 호스트형 실행기를 사용할 수 있습니다. 이렇게 하면 실행기 네트워킹 정책의 모든 권한을 제공하면서 CI/CD의 GitHub관리 인프라를 사용할 수 있습니다. Azure VNET에 대한 자세한 내용은 Azure 문서의 Azure Virtual Network란?을 참조하세요.

여러 VNET 서브넷을 GitHub에 연결하고 실행기 그룹을 통해 실행기에 대한 프라이빗 리소스 액세스를 관리할 수 있습니다. 실행기 그룹에 대한 자세한 내용은 "더 큰 실행기 액세스 제어"을(를) 참조하세요.

Azure VNET 내에서 GitHub 호스트 실행기를 사용하면 다음 작업을 할 수 있습니다.

  • 인터넷 포트를 열지 않고 실행기를 Azure VNET 내의 리소스에 비공개로 연결하며, 여기에는 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는 이러한 컴퓨터에 대한 인바운드 연결이 필요하지 않습니다.

NIC를 사용하면 Azure VM(가상 머신)에서 인터넷, Azure 및 온-프레미스 리소스와 통신할 수 있습니다. 이렇게 하면 모든 통신이 네트워크 경계 내에서 비공개로 유지되고 VNET에 적용된 네트워킹 정책도 실행기에 적용됩니다. 네트워크 인터페이스를 관리하는 방법에 대한 자세한 내용은 Microsoft Learn의 네트워크 인터페이스 설정 변경을 참조하세요.

Note

GitHub Actions 서비스가 작업을 실행하기 위해 리소스를 과도하게 프로비전하므로 구독에서 단일 작업에 대해 여러 NIC가 나타날 수 있습니다. 실행기를 유휴 상태로 설정하면 GitHub 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 서비스와 서브넷 간의 통신을 용이하게 하려면 서브넷이 지원되는 다음 지역 중 하나에 있어야 합니다.

Note

GHE.com에서 데이터 보존를 사용하는 경우 지원되는 지역은 다릅니다. "GHE.com의 네트워크 세부 정보" 항목을 참조하세요.

다음 지역은 GitHub.com에서 지원됩니다.

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

Azure 프라이빗 네트워킹은 다음 지역에서 GPU 실행기를 지원합니다.

  • EastUs
  • WestUs
  • NorthCentralUs

Azure 개인 네트워킹은 다음 지역에서 arm64 실행기를 지원합니다.

  • EastUs
  • EastUs2
  • WestUs2
  • WestUs3
  • NorthCentralUs

원하는 지역이 지원되지 않는 경우 이 GitHub 양식에서 새 지역 가용성에 대한 요청을 제출하세요. 또한 글로벌 가상 네트워크 피어링을 사용하여 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
  • 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

다음 권한은 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의 기본 아웃바운드 액세스를 사용하는 경우 IP는 예측할 수 없으며 GitHub IP 허용 목록에 추가할 수 없습니다. 안정적인 아웃바운드 IP 사용에 대한 권장 사항은 Azure 설명서의 기본 아웃바운드 액세스를 참조하세요.

Azure VNET에서 GitHub 호스트 실행기 사용

Azure VNET에서 GitHub 호스트형 실행기를 사용하려면 Azure 리소스를 구성한 다음 GitHub에서 네트워킹 구성을 만들어야 합니다.

조직 수준에서 Azure 개인 네트워킹을 구성하는 절차는 "조직에서 GitHub 호스트형 실행기를 사용하여 개인 네트워킹 구성”을 참조하세요.