Skip to main content

組織内の GitHub ホスト ランナー向けの Azure プライベート ネットワークについて

Azure Virtual Network (VNET) で組織が GitHub ホスト型ランナーを使用するため、プライベート ネットワーク構成を作成できます。

この機能を使用できるユーザーについて

Enterprise 内の Organization の Organization オーナーは、GitHub ホステッド ランナーの Azure プライベート ネットワークを Organization レベルで構成できます。

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 では、Ubuntu および Windows ランナーは 2 から 64 個の vCPU がサポートされています。 これらのランナーの種類の詳細については、「より大きなランナーの概要」を参照してください。

GitHub でホストされたランナーのプライベート ネットワークでは、larger runner の静的 IP アドレスはサポートされていません。 larger runner の既定の構成である動的 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 サービスは、ジョブの実行でリソースを過剰にプロビジョニングするので、サブスクリプション内の 1 つのジョブ内で複数の 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 サービスとサブネットの間のコミュニケーションを支援するには、次のサポートされているリージョンのいずれかに、サブネットが存在する必要があります。

  • 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 テナント内の 2 つのエンタープライズ アプリケーションに存在します。 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 がオンプレミスのリソース (例:Artifactory) へのアクセスを提供するように Azure ExpressRoute で構成されている場合、または他のクラウドベースのリソースへのアクセスを提供するために VPN トンネルに接続されている場合、これらのアクセス ポリシーはランナーにも適用されます。 さらに、VNET のネットワーク セキュリティ グループ (NSG) に適用される送信規則も適用され、ランナーの送信アクセスを制御できます。

VNET のネットワーク ログ監視を有効にしている場合は、ランナーのネットワーク トラフィックを監視することもできます。

GitHub ホストランナーは、ネットワークで使用されている送信制御を使用します。 ネットワークが Azure の既定の送信アクセスに依存している場合、IP は予測できず、GitHub IP 許可リストに追加できません。 安定した送信 IP の使用に関する推奨事項については、Azure ドキュメントの「既定の送信アクセス」を参照してください。

Azure VNET での GitHub ホストランナーの使用

Azure VNET で GitHub ホストランナーを使用するには、Azure リソースを構成してから、GitHub にネットワーク構成を作成する必要があります。

既定では、Enterprise 内の Organization は新しいネットワーク構成を作成できず、Enterprise レベルのネットワーク構成を継承するだけです。 Enterprise オーナーは、Enterprise 内の Organization が Enterprise から独立したネットワーク構成を作成できるようにするポリシーを設定できます。 詳しくは、「企業内の GitHub ホストランナーのプライベート ネットワークの構成」を参照してください。

エンタープライズ レベルで Azure プライベート ネットワークを構成する手順については、「企業内の GitHub ホストランナーのプライベート ネットワークの構成」を参照してください。

組織レベルで Azure プライベート ネットワークを構成する手順については、「組織内の GitHub ホスト ランナーのプライベート ネットワークの構成」を参照してください。