Azure Kubernetes Service (AKS) クラスターのアウトバウンド ネットワークと FQDN の規則

この記事では、Azure Kubernetes Service (AKS) からの送信トラフィックをセキュリティで保護するために必要な詳細情報について説明します。 基になる AKS のデプロイのクラスター要件と、オプションのアドオンと機能に対する追加要件が含まれています。 この情報はあらゆるアウトバウンド制限の方法またはアプライアンスに適用できます。

Azure Firewall を使用した構成例については、「AKS で Azure Firewall を使用してエグレス トラフィックを制御する」を参照してください。

バックグラウンド

AKS クラスターは仮想ネットワークにデプロイされます。 このネットワークは、お客様がカスタマイズして事前に構成することも、AKS が作成・管理することも可能です。 どちらの場合も、クラスターは、仮想ネットワーク外のサービスに対してアウトバウンド、つまりエグレスの依存関係を持つことになります。

管理と運用上の目的から、AKS クラスター内のノードは特定のポートと完全修飾ドメイン名 (FQDN) にアクセスする必要があります。 これらのエンドポイントは、ノードが API サーバーと通信するため、またはコア Kubernetes クラスター コンポーネントとノードのセキュリティ更新プログラムをダウンロードしてからインストールするために必要です。 たとえば、クラスターでは Microsoft Container Registry (MCR) から基本システムのコンテナー イメージをプルする必要があります。

AKS の送信依存関係は、ほぼすべて、背後に静的アドレスがない FQDN を使用して定義されています。 静的アドレスがないということは、ネットワーク セキュリティ グループ (NSG) を使用して AKS クラスターからのアウトバウンド トラフィックをロック ダウンすることができないことを意味します。

既定で、AKS クラスターは、送信インターネット アクセスが無制限です。 このレベルのネットワーク アクセスでは、実行しているノードやサービスから必要に応じて外部リソースにアクセスできます。 エグレス トラフィックを制限する場合は、正常なクラスター メンテナンス タスクを維持するために、アクセスできるポートとアドレスの数を制限する必要があります。 アウトバウンド アドレスをセキュリティで保護する最も簡単なソリューションは、ドメイン名に基づいてアウトバウンド トラフィックを制御できるファイアウォール デバイスを使用することです。 Azure Firewall では、宛先の FQDN に基づいて送信 HTTP および HTTPS トラフィックを制限できます。 また、適切なファイアウォール規則とセキュリティ規則を構成し、これらの必要なポートとアドレスを許可することができます。

重要

このドキュメントでは、AKS サブネットから出て行くトラフィックをロックダウンする方法についてのみ説明します。 既定では、AKS にはイングレス要件はありません。 ネットワーク セキュリティ グループ (NSG) とファイアウォールを使用して内部サブネット トラフィックをブロックすることは、サポートされていません。 クラスター内のトラフィックを制御およびブロックするには、「AKS のネットワーク ポリシーを使用してポッド間のトラフィックをセキュリティ保護する」を参照してください。

AKS クラスターに必要な送信ネットワーク規則と FQDN

AKS クラスターには、次のネットワーク規則と FQDN/アプリケーションの規則が必要です。 Azure Firewall 以外のソリューションを構成する場合は、これらの規則を使用できます。

  • IP アドレスの依存関係が HTTP/S 以外のトラフィック (TCP トラフィックと UDP トラフィックの両方) に対応しています。
  • FQDN HTTP/HTTPS エンドポイントは、ファイアウォール デバイスに配置することができます。
  • HTTP と HTTPS のワイルドカード エンドポイントは、いくつかの修飾子に基づき、AKS クラスターによって異なる場合がある依存関係です。
  • AKS では、アドミッション コントローラーを使用して、kube-system と gatekeeper-system の下にあるすべてのデプロイに対し、FQDN が環境変数として挿入されます。 これにより、ノードと API サーバー間のすべてのシステム通信において、API サーバーの IP ではなく、API サーバーの FQDN が使用されるようになります。 ポッド仕様に kubernetes.azure.com/set-kube-service-host-fqdn という注釈を付けることで、どの名前空間でも独自のポッド上で同じ動作を実現できます。 この注釈がある場合、AKS は、KUBERNETES_SERVICE_HOST 変数をクラスター内サーバーの IP ではなく API サーバーのドメイン名に設定します。 これは、クラスターのエグレスがレイヤー 7 ファイアウォールを経由する場合に便利です。
  • API サーバーと通信する必要があるアプリまたはソリューションがある場合、API サーバーの IP のポート 443 に対する TCP 通信を許可する新しいネットワーク規則を追加する必要があります。または、API サーバーのドメイン名へのトラフィックを許可するようにレイヤー 7 のファイアウォールを構成している場合は、ポッド仕様で kubernetes.azure.com/set-kube-service-host-fqdn を設定します。
  • まれに、メンテナンスが行われると、API サーバーの IP が変わる可能性があります。 API サーバーの IP が変わる可能性がある計画メンテナンス操作は、常に事前に通知されます。
  • 特定の状況では、"md-*.blob.storage.azure.net" へのトラフィックが必要になることがあります。 この依存関係は、Azure Managed Disks のいくつかの内部メカニズムが原因です。 Storage のサービス タグを使用することもできます。

Azure Global に必要なネットワーク規則

送信先エンドポイント Protocol Port 用途
*:1194
Or
ServiceTag - AzureCloud.<Region>:1194
Or
リージョンの CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。 プライベート クラスター、または konnectivity-agent が有効になっているクラスターには必要ありません。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
リージョンの CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。 プライベート クラスター、または konnectivity-agent が有効になっているクラスターには必要ありません。
*:123 または ntp.ubuntu.com:123 (Azure Firewall ネットワーク規則を使用している場合) UDP 123 Linux ノードでのネットワーク タイム プロトコル (NTP) の時刻同期に必要です。 2021 年 3 月以降にプロビジョニングされたノードでは必要ありません。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 カスタム DNS サーバーを使用している場合は、クラスター ノードからそれらにアクセスできることを確認する必要があります。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 API サーバーにアクセスするポッドとデプロイを実行する場合に必要です。それらのポッドとデプロイでは API IP が使用されます。 このポートは、プライベート クラスターでは必要ありません。

Azure Global に必要な FQDN とアプリケーションの規則

送信先 FQDN Port 用途
*.hcp.<location>.azmk8s.io HTTPS:443 ノード <-> API サーバーの間の通信に必要です。 <location> は、AKS クラスターがデプロイされているリージョンに置き換えてください。 これは、konnectivity-agent が有効になっているクラスターでは必要です。 Konnectivity では、Application-Layer Protocol Negotiation (ALPN) を使用して、エージェントとサーバー間の通信も行います。 ALPN 拡張機能をブロックするかまたは書き換えると、エラーが発生します。 これは、プライベート クラスターでは必要ありません。
mcr.microsoft.com HTTPS:443 Microsoft Container Registry (MCR) のイメージにアクセスするために必要です。 このレジストリには、ファーストパーティのイメージとグラフ (coreDNS など) が含まれます。 これらのイメージは、スケーリング操作やアップグレード操作など、クラスターの適切な作成と機能のために必要です。
*.data.mcr.microsoft.com HTTPS:443 Azure Content Delivery Network (CDN) によってサポートされる MCR ストレージに必要です。
management.azure.com HTTPS:443 Azure API に対する Kubernetes の操作に必要です。
login.microsoftonline.com HTTPS:443 Microsoft Entra 認証に必要です。
packages.microsoft.com HTTPS:443 このアドレスは、キャッシュされた apt-get 操作に使用される Microsoft パッケージ リポジトリです。 パッケージの例としては、Moby、PowerShell、Azure CLI などがあります。
acs-mirror.azureedge.net HTTPS:443 このアドレスは、kubernet や Azure CNI などの必要なバイナリをダウンロードしてインストールするために必要なリポジトリ用です。

21Vianet によって運営される Microsoft Azure で必要なネットワーク規則

送信先エンドポイント Protocol Port 用途
*:1194
Or
ServiceTag - AzureCloud.Region:1194
Or
リージョンの CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
リージョンの CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。
*:22
Or
ServiceTag - AzureCloud.<Region>:22
Or
リージョンの CIDR - RegionCIDRs:22
Or
APIServerPublicIP:22 (only known after cluster creation)
TCP 22 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。
*:123 または ntp.ubuntu.com:123 (Azure Firewall ネットワーク規則を使用している場合) UDP 123 Linux ノードでのネットワーク タイム プロトコル (NTP) の時刻同期に必要です。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 カスタム DNS サーバーを使用している場合は、クラスター ノードからそれらにアクセスできることを確認する必要があります。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 API サーバーにアクセスするポッドとデプロイを実行する場合に必要です。それらのポッドとデプロイでは API IP が使用されます。

21Vianet によって運営される Microsoft Azure で必要な FQDN とアプリケーションの規則

送信先 FQDN Port 用途
*.hcp.<location>.cx.prod.service.azk8s.cn HTTPS:443 ノード <-> API サーバーの間の通信に必要です。 <location> は、AKS クラスターがデプロイされているリージョンに置き換えてください。
*.tun.<location>.cx.prod.service.azk8s.cn HTTPS:443 ノード <-> API サーバーの間の通信に必要です。 <location> は、AKS クラスターがデプロイされているリージョンに置き換えてください。
mcr.microsoft.com HTTPS:443 Microsoft Container Registry (MCR) のイメージにアクセスするために必要です。 このレジストリには、ファーストパーティのイメージとグラフ (coreDNS など) が含まれます。 これらのイメージは、スケーリング操作やアップグレード操作など、クラスターの適切な作成と機能のために必要です。
.data.mcr.microsoft.com HTTPS:443 Azure Content Delivery Network (CDN) によってサポートされる MCR ストレージに必要です。
management.chinacloudapi.cn HTTPS:443 Azure API に対する Kubernetes の操作に必要です。
login.chinacloudapi.cn HTTPS:443 Microsoft Entra 認証に必要です。
packages.microsoft.com HTTPS:443 このアドレスは、キャッシュされた apt-get 操作に使用される Microsoft パッケージ リポジトリです。 パッケージの例としては、Moby、PowerShell、Azure CLI などがあります。
*.azk8s.cn HTTPS:443 このアドレスは、kubernet や Azure CNI などの必要なバイナリをダウンロードしてインストールするために必要なリポジトリ用です。

Azure US Government に必要なネットワーク規則

送信先エンドポイント Protocol Port 用途
*:1194
Or
ServiceTag - AzureCloud.<Region>:1194
Or
リージョンの CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
リージョンの CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 ノードとコントロール プレーンの間のセキュリティで保護されたトンネル通信の場合。
*:123 または ntp.ubuntu.com:123 (Azure Firewall ネットワーク規則を使用している場合) UDP 123 Linux ノードでのネットワーク タイム プロトコル (NTP) の時刻同期に必要です。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 カスタム DNS サーバーを使用している場合は、クラスター ノードからそれらにアクセスできることを確認する必要があります。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 API サーバーにアクセスするポッドとデプロイを実行する場合に必要です。それらのポッドとデプロイでは API IP が使用されます。

Azure US Government に必要な FQDN とアプリケーションの規則

送信先 FQDN Port 用途
*.hcp.<location>.cx.aks.containerservice.azure.us HTTPS:443 ノード <-> API サーバーの間の通信に必要です。 <location> は、AKS クラスターがデプロイされているリージョンに置き換えてください。
mcr.microsoft.com HTTPS:443 Microsoft Container Registry (MCR) のイメージにアクセスするために必要です。 このレジストリには、ファーストパーティのイメージとグラフ (coreDNS など) が含まれます。 これらのイメージは、スケーリング操作やアップグレード操作など、クラスターの適切な作成と機能のために必要です。
*.data.mcr.microsoft.com HTTPS:443 Azure Content Delivery Network (CDN) によってサポートされる MCR ストレージに必要です。
management.usgovcloudapi.net HTTPS:443 Azure API に対する Kubernetes の操作に必要です。
login.microsoftonline.us HTTPS:443 Microsoft Entra 認証に必要です。
packages.microsoft.com HTTPS:443 このアドレスは、キャッシュされた apt-get 操作に使用される Microsoft パッケージ リポジトリです。 パッケージの例としては、Moby、PowerShell、Azure CLI などがあります。
acs-mirror.azureedge.net HTTPS:443 このアドレスは、kubernet や Azure CNI などの必要なバイナリをインストールするために必要なリポジトリ用です。

以下の FQDN/アプリケーション規則は必須ではありませんが、AKS クラスターでは推奨されます。

送信先 FQDN Port 用途
security.ubuntu.comazure.archive.ubuntu.comchangelogs.ubuntu.com HTTP:80 このアドレスを使用すると、Linux クラスター ノードから必要なセキュリティ パッチと更新プログラムをダウンロードできます。

これらの FQDN をブロックして許可しない場合、ノード イメージのアップグレードまたはクラスターのアップグレードを行うと、ノードは OS の更新プログラムのみを受け取ります。 ノード イメージのアップグレードは、セキュリティ修正を含む、更新後のパッケージにも付属することにご留意ください。

GPU 対応 AKS クラスターに必要な FQDN/アプリケーションの規則

送信先 FQDN Port 用途
nvidia.github.io HTTPS:443 このアドレスは、GPU ベースのノード上のドライバーの適切なインストールと操作に使用されます。
us.download.nvidia.com HTTPS:443 このアドレスは、GPU ベースのノード上のドライバーの適切なインストールと操作に使用されます。
download.docker.com HTTPS:443 このアドレスは、GPU ベースのノード上のドライバーの適切なインストールと操作に使用されます。

Windows Server ベースのノード プールに必要な FQDN/アプリケーション規則

送信先 FQDN Port 用途
onegetcdn.azureedge.net, go.microsoft.com HTTPS:443 Windows 関連のバイナリをインストールするため
*.mp.microsoft.com, www.msftconnecttest.com, ctldl.windowsupdate.com HTTP:80 Windows 関連のバイナリをインストールするため

これらの FQDN をブロックして許可しない場合、ノード イメージのアップグレードまたはクラスターのアップグレードを行うと、ノードは OS の更新プログラムのみを受け取ります。 ノード イメージのアップグレードは、セキュリティ修正を含む、更新後のパッケージにも付属することにご留意ください。

AKS のアドオンと統合

Microsoft Defender for Containers

必要な FQDN とアプリケーションの規則

FQDN Port 用途
login.microsoftonline.com
login.microsoftonline.us (Azure Government)
login.microsoftonline.cn(21Vianet によって運営される Azure)
HTTPS:443 Active Directory 認証に必要です。
*.ods.opinsights.azure.com
*.ods.opinsights.azure.us (Azure Government)
*.ods.opinsights.azure.cn(21Vianet によって運営される Azure)
HTTPS:443 Microsoft Defender がセキュリティ イベントをクラウドにアップロードするために必要です。
*.oms.opinsights.azure.com
*.oms.opinsights.azure.us (Azure Government)
*.oms.opinsights.azure.cn(21Vianet によって運営される Azure)
HTTPS:443 LogAnalytics ワークスペースで認証するために必要です。

CSI シークレット ストア

必要な FQDN とアプリケーションの規則

FQDN Port 用途
vault.azure.net HTTPS:443 CSI シークレット ストア アドオン ポッドが Azure KeyVault サーバーと通信するために必要です。

コンテナーに対する Azure Monitor

コンテナー用 Azure Monitor へのアクセスを提供するには、次の 2 つのオプションがあります。

  • Azure Monitor の ServiceTag を許可します。
  • 必要な FQDN/アプリケーション規則へのアクセスを提供します。

必要なネットワーク規則

送信先エンドポイント Protocol Port 用途
ServiceTag - AzureMonitor:443 TCP 443 このエンドポイントは、メトリック データとログを Azure Monitor および Log Analytics に送信するために使用されます。

必要な FQDN とアプリケーションの規則

FQDN Port 用途
dc.services.visualstudio.com HTTPS:443 このエンドポイントは、Azure Monitor を使用するメトリックと監視テレメトリに使用されます。
*.ods.opinsights.azure.com HTTPS:443 このエンドポイントは、ログ分析データを取り込むために Azure Monitor によって使用されます。
*.oms.opinsights.azure.com HTTPS:443 このエンドポイントは、ログ分析サービスの認証に使用される omsagent によって使用されます。
*.monitoring.azure.com HTTPS:443 このエンドポイントは、メトリック データを Azure Monitor に送信するために使用されます。
<cluster-region-name>.ingest.monitor.azure.com HTTPS:443 このエンドポイントは、Prometheus メトリックインジェストのために Azure Monitor マネージド サービスによって使用されます。
<cluster-region-name>.handler.control.monitor.azure.com HTTPS:443 このエンドポイントは、特定のクラスターのデータ収集規則をフェッチするために使用されます。

21Vianet によって運営される Microsoft Azure で必要な FQDN とアプリケーションの規則

FQDN Port 用途
dc.services.visualstudio.com HTTPS:443 このエンドポイントは、Azure Monitor を使用するメトリックと監視テレメトリに使用されます。
*.ods.opinsights.azure.cn HTTPS:443 このエンドポイントは、ログ分析データを取り込むために Azure Monitor によって使用されます。
*.oms.opinsights.azure.cn HTTPS:443 このエンドポイントは、ログ分析サービスの認証に使用される omsagent によって使用されます。
global.handler.control.monitor.azure.cn HTTPS:443 このエンドポイントは、コントロール サービスにアクセスするために Azure Monitor によって使用されます。
<cluster-region-name>.handler.control.monitor.azure.cn HTTPS:443 このエンドポイントは、特定のクラスターのデータ収集規則をフェッチするために使用されます。

Azure US Government に必要な FQDN とアプリケーションの規則

FQDN Port 用途
dc.services.visualstudio.com HTTPS:443 このエンドポイントは、Azure Monitor を使用するメトリックと監視テレメトリに使用されます。
*.ods.opinsights.azure.us HTTPS:443 このエンドポイントは、ログ分析データを取り込むために Azure Monitor によって使用されます。
*.oms.opinsights.azure.us HTTPS:443 このエンドポイントは、ログ分析サービスの認証に使用される omsagent によって使用されます。
global.handler.control.monitor.azure.us HTTPS:443 このエンドポイントは、コントロール サービスにアクセスするために Azure Monitor によって使用されます。
<cluster-region-name>.handler.control.monitor.azure.us HTTPS:443 このエンドポイントは、特定のクラスターのデータ収集規則をフェッチするために使用されます。

Azure Policy

必要な FQDN とアプリケーションの規則

FQDN Port 用途
data.policy.core.windows.net HTTPS:443 このアドレスは、Kubernetes ポリシーをプルし、クラスターのコンプライアンス状態をポリシー サービスにレポートするために使用されます。
store.policy.core.windows.net HTTPS:443 このアドレスは、組み込みポリシーの Gatekeeper アーティファクトをプルするために使用されます。
dc.services.visualstudio.com HTTPS:443 テレメトリ データを Application Insights エンドポイントに送信するAzure Policy アドオン。

21Vianet によって運営される Microsoft Azure で必要な FQDN とアプリケーションの規則

FQDN Port 用途
data.policy.azure.cn HTTPS:443 このアドレスは、Kubernetes ポリシーをプルし、クラスターのコンプライアンス状態をポリシー サービスにレポートするために使用されます。
store.policy.azure.cn HTTPS:443 このアドレスは、組み込みポリシーの Gatekeeper アーティファクトをプルするために使用されます。

Azure US Government に必要な FQDN とアプリケーションの規則

FQDN Port 用途
data.policy.azure.us HTTPS:443 このアドレスは、Kubernetes ポリシーをプルし、クラスターのコンプライアンス状態をポリシー サービスにレポートするために使用されます。
store.policy.azure.us HTTPS:443 このアドレスは、組み込みポリシーの Gatekeeper アーティファクトをプルするために使用されます。

クラスター拡張機能

必要な FQDN とアプリケーションの規則

FQDN Port 用途
<region>.dp.kubernetesconfiguration.azure.com HTTPS:443 このアドレスは、クラスター拡張機能サービスから構成情報を取得し、サービスに拡張状態をレポートするために使用されます。
mcr.microsoft.com, *.data.mcr.microsoft.com HTTPS:443 このアドレスは、クラスター拡張機能エージェントを AKS クラスターにインストールするためにコンテナーイメージをプルするために必要です。
arcmktplaceprod.azurecr.io HTTPS:443 このアドレスは、AKS クラスターにマーケットプレース拡張機能をインストールするためのコンテナー イメージをプルするために必要です。
arcmktplaceprod.centralindia.data.azurecr.io HTTPS:443 このアドレスは、インド中部リージョンのデータ エンドポイント用であり、AKS クラスターにマーケットプレース拡張機能をインストールするコンテナー イメージをプルするために必要です。
arcmktplaceprod.japaneast.data.azurecr.io HTTPS:443 このアドレスは、東日本リージョンのデータ エンドポイント用であり、AKS クラスターにマーケットプレース拡張機能をインストールするコンテナー イメージをプルするために必要です。
arcmktplaceprod.westus2.data.azurecr.io HTTPS:443 このアドレスは、米国西部 2 リージョンのデータ エンドポイント用であり、AKS クラスターにマーケットプレース拡張機能をインストールするコンテナー イメージをプルするために必要です。
arcmktplaceprod.westeurope.data.azurecr.io HTTPS:443 このアドレスは、西ヨーロッパ リージョンのデータ エンドポイント用であり、AKS クラスターにマーケットプレース拡張機能をインストールするコンテナー イメージをプルするために必要です。
arcmktplaceprod.eastus.data.azurecr.io HTTPS:443 このアドレスは、米国東部リージョンのデータ エンドポイント用であり、AKS クラスターにマーケットプレース拡張機能をインストールするコンテナー イメージをプルするために必要です。
*.ingestion.msftcloudes.com, *.microsoftmetrics.com HTTPS:443 このアドレスは、エージェントのメトリック データを Azure に送信するために使用されます。
marketplaceapi.microsoft.com HTTPS: 443 このアドレスは、カスタム測定ベースの使用状況をコマース測定 API に送信するために使用されます。

Azure US Government に必要な FQDN とアプリケーションの規則

FQDN Port 用途
<region>.dp.kubernetesconfiguration.azure.us HTTPS:443 このアドレスは、クラスター拡張機能サービスから構成情報を取得し、サービスに拡張状態をレポートするために使用されます。
mcr.microsoft.com, *.data.mcr.microsoft.com HTTPS:443 このアドレスは、クラスター拡張機能エージェントを AKS クラスターにインストールするためにコンテナーイメージをプルするために必要です。

Note

ここに明示的に記載されていないアドオンについては、コア要件でカバーしています。

次のステップ

この記事では、クラスターのエグレス トラフィックを制限する場合に許可するポートとアドレスについて学習しました。

ポッド間の通信方法の制限、およびクラスター内の East-West トラフィックの制限については、「Azure Kubernetes Service (AKS) のネットワーク ポリシーを使用したポッド間のトラフィックの保護」を参照してください。