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 Actions ワークフローをトリガーします。
- GitHub Actions サービスはランナーを作成します。
- このランナー サービスにより、GitHubでホストされているランナーのネットワーク インターフェイス カード (NIC) が Azure VNet にデプロイされます。
- ランナー エージェントがワークフロー ジョブを取得します。 GitHub Actions サービスはジョブをキューします。
- ランナーは、ログを GitHub Actions サービスに送り返します。
- 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 にネットワーク構成を作成する必要があります。
組織レベルで Azure プライベート ネットワークを構成する手順については、「組織内の GitHub ホスト ランナーのプライベート ネットワークの構成」を参照してください。