Azure Kubernetes Services (AKS) 叢集的輸出網路和 FQDN 規則

本文提供必要的詳細資料,可讓您保護來自 Azure Kubernetes Service (AKS) 的輸出流量。 其中包含基底 AKS 部署的叢集需求,以及選擇性附加元件和功能的其他需求。 您可以將此資訊應用於任何輸出限制方法或設備。

若要查看使用 Azure 防火牆的設定範例,請參閱在 AKS 中使用 Azure 防火牆控制輸出流量 (機器翻譯)。

背景

AKS 叢集部署在虛擬網路上。 此網路可由您自訂及預先設定,也可以由 AKS 建立和管理。 不論是哪一種情況,叢集對虛擬網路外部的服務都具有連出 (或輸出) 相依性。

基於管理和操作目的,AKS 叢集中的節點需要存取特定連接埠和完整網域名稱 (FQDN)。 這些端點是節點必要項目,用於與 API 伺服器通訊,或下載並安裝核心 Kube 叢集元件和節點安全性更新。 例如,叢集必須從 Microsoft 容器登錄 (MCR) 提取基礎系統容器映像。

AKS 輸出相依性幾乎完全使用 FQDN 定義,其背後並沒有靜態位址。 缺乏靜態位址表示您無法使用網路安全性群組鎖定來自 AKS 叢集的連出流量。

根據預設,AKS 叢集具有不受限制的連出網際網路存取。 此網路存取層級可讓您執行的節點和服務視需要存取外部資源。 如果您想要限制連出流量,則必須能夠存取有限數量的連接埠和位址,才能維持狀況良好的叢集維護工作。 保護連出位址的最簡單解決方案,是使用可以根據網域名稱控制連出流量的防火牆裝置。 Azure 防火牆可以依據目的地的 FQDN 限制 HTTP 和 HTTPS 流量輸出。 您也可設定慣用的防火牆和安全性規則,以允許這些必要的連接埠和位址。

重要

此文件僅涵蓋如何鎖定離開 AKS 子網路的流量。 AKS 預設沒有連入需求。 不支援使用網路安全性群組 (NSG) 和防火牆封鎖內部子網路流量。 若要控制及封鎖叢集中的流量,請參閱使用 AKS 中的網路原則保護 Pod 之間的流量 (機器翻譯)。

參考:AKS 叢集所需的輸出網路規則和 FQDN

以下為對 AKS 叢集而言必要的網路和 FQDN/應用程式規則。 如果您想要設定 Azure 防火牆以外的解決方案,可以使用這些規則。

  • IP 位址相依性適用於非 HTTP/S 流量 (TCP 與 UDP 流量)。
  • FQDN HTTP/HTTPS 端點可以放在您的防火牆裝置。
  • 萬用字元 HTTP/HTTPS 端點是根據一些限定條件,可能隨著 AKS 叢集而變的相依性。
  • AKS 會使用許可控制器,將 FQDN 作為環境變數插入 kube-system 與 gatekeeper-system 下的所有部署, 以確保節點與 API 伺服器之間的所有系統通訊都使用 API 伺服器 FQDN,而不是 API 伺服器 IP。 只要使用名為 kubernetes.azure.com/set-kube-service-host-fqdn 的註釋標註 Pod 規格,便可於任何命名空間中,在自己的 Pod 上取得相同的行為。 如果已經有註釋,AKS 會將 KUBERNETES_SERVICE_HOST 變數設定為 API 伺服器的網域名稱,而非叢集內服務 IP, 這在叢集輸出是透過第 7 層防火牆完成的情況下,就能派上用場。
  • 如果您的應用程式或解決方案需要與 API 伺服器通訊,您必須新增額外網路規則,以允許 TCP 與您 API 伺服器 IP 的 443 通訊埠進行通訊或者,若您已設定第 7 層防火牆,以允許對 API 伺服器網域名稱的流量,請在 Pod 規格中設定 kubernetes.azure.com/set-kube-service-host-fqdn
  • 在少數情況下,如果有維護作業,API 伺服器 IP 可能會變更。 可變更 API 伺服器 IP 的計劃性維護作業一律會事先通訊。
  • 在某些情況下,可能需要流向「md-*.blob.storage.azure.net」的流量。 此相依性是因 Azure 受控磁碟的部分內部機制而造成。 也建議您使用儲存體服務標籤

Azure 全域所需的網路規則

目的地端點 通訊協定 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」的叢集不需要此項目。
*:123ntp.ubuntu.com:123 (如果使用 Azure 防火牆網路規則) UDP 123 網路時間通訊協定 (NTP) 時間同步處理 (在 Linux 節點上) 所必要。 在 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 伺服器的 Pod/部署,這些 Pod/部署會使用 API IP。 私人叢集不需要此連接埠。

Azure 全域必要 FQDN/應用程式規則

目的地 FQDN 連接埠 使用
*.hcp.<location>.azmk8s.io HTTPS:443 節點 <-> 與 API 伺服器之間的通訊所必須。 以您 AKS 叢集部署所在的區域取代 <位置>。 已啟用 konnectivity-agent 的叢集需要此項目。 Konnectivity 也會使用應用程式層通訊協定交涉 (ALPN),以在代理程式與伺服器之間進行通訊。 封鎖或重寫 ALPN 延伸模組將會導致失敗。 私人叢集不需要此項目。
mcr.microsoft.com HTTPS:443 需要存取 Microsoft Container Registry (MCR) 中的映像。 此登錄包含第一方映像/圖表 (例如 coreDNS 等)。 這些映像是正確建立和運作叢集的必要映像,包括調整和升級作業。
*.data.mcr.microsoft.com HTTPS:443 Azure 內容傳遞網路 (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 此位址適用於下載和安裝必要的二進位檔 (例如 kubenet 和 Azure CNI) 所需的存放庫。

由 21Vianet 營運的 Microsoft Azure 需要網路規則

目的地端點 通訊協定 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 節點與控制平面之間的通道安全通訊。
*:123ntp.ubuntu.com:123 (如果使用 Azure 防火牆網路規則) UDP 123 網路時間通訊協定 (NTP) 時間同步處理 (在 Linux 節點上) 所必要。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 如果您使用自訂 DNS 伺服器,則必須確定叢集節點可以存取這些伺服器。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 如果執行可存取 API 伺服器的 Pod/部署,這些 Pod/部署會使用 API IP。

由 21Vianet 營運的 Microsoft Azure 需要 FQDN/應用程式規則

目的地 FQDN 連接埠 使用
*.hcp.<location>.cx.prod.service.azk8s.cn HTTPS:443 節點 <-> 與 API 伺服器之間的通訊所必須。 以您 AKS 叢集部署所在的區域取代 <位置>
*.tun.<location>.cx.prod.service.azk8s.cn HTTPS:443 節點 <-> 與 API 伺服器之間的通訊所必須。 以您 AKS 叢集部署所在的區域取代 <位置>
mcr.microsoft.com HTTPS:443 存取 Microsoft Container Registry (MCR) 中的映像所必須。 此登錄包含第一方映像/圖表 (例如 coreDNS 等)。 這些映像是正確建立和運作叢集的必要映像,包括調整和升級作業。
.data.mcr.microsoft.com HTTPS:443 Azure 內容傳遞網路 (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 此位址適用於下載和安裝必要的二進位檔 (例如 kubenet 和 Azure CNI) 所需的存放庫。

Azure 美國政府所需的網路規則

目的地端點 通訊協定 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 節點與控制平面之間的通道安全通訊。
*:123ntp.ubuntu.com:123 (如果使用 Azure 防火牆網路規則) UDP 123 網路時間通訊協定 (NTP) 時間同步處理 (在 Linux 節點上) 所必要。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 如果您使用自訂 DNS 伺服器,則必須確定叢集節點可以存取這些伺服器。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 如果執行可存取 API 伺服器的 Pod/部署,這些 Pod/部署會使用 API IP。

Azure 美國政府所需的 FQDN/應用程式規則

目的地 FQDN 連接埠 使用
*.hcp.<location>.cx.aks.containerservice.azure.us HTTPS:443 節點 <-> 與 API 伺服器之間的通訊所必須。 以您 AKS 叢集部署所在的區域取代 <位置>
mcr.microsoft.com HTTPS:443 存取 Microsoft Container Registry (MCR) 中的映像所必須。 此登錄包含第一方映像/圖表 (例如 coreDNS 等)。 這些映像是正確建立和運作叢集的必要映像,包括調整和升級作業。
*.data.mcr.microsoft.com HTTPS:443 Azure 內容傳遞網路 (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 此位址適用於安裝必要的二進位檔 (例如 kubenet 和 Azure CNI) 所需的存放庫。

下列 FQDN/應用程式規則並非必要,但建議 AKS 叢集採用:

目的地 FQDN 連接埠 使用
security.ubuntu.com, azure.archive.ubuntu.com, changelogs.ubuntu.com HTTP:80 此位址可讓 Linux 叢集節點下載所需的安全性修補程式和更新。

如果您選擇封鎖/不允許這些 FQDN,節點只會在您執行節點映像升級叢集升級時收到 OS 更新。 請記住,節點映像升級也隨附更新的套件,包括安全性修正。

已啟用 GPU 的 AKS 叢集需要 FQDN/應用程式規則

目的地 FQDN 連接埠 使用
nvidia.github.io HTTPS:443 此位址是用來在以 GPU 為基礎的節點上進行正確的驅動程式安裝和運作。
us.download.nvidia.com HTTPS:443 此位址是用來在以 GPU 為基礎的節點上進行正確的驅動程式安裝和運作。
download.docker.com HTTPS:443 此位址是用來在以 GPU 為基礎的節點上進行正確的驅動程式安裝和運作。

Windows Server 型節點集區需要 FQDN/應用程式規則

目的地 FQDN 連接埠 使用
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

必要的 FQDN/應用程式規則

FQDN 連接埠 使用
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 連接埠 使用
vault.azure.net HTTPS:443 CSI 祕密存放區附加元件 Pod 與 Azure KeyVault 伺服器通訊的必要項目。

適用於容器的 Azure 監視器

您可透過兩種選項存取適用於容器的 Azure 監視器:

  • 允許 Azure 監視器服務標籤
  • 將存取權提供給必要的 FQDN/應用程式規則。

所需網路規則

目的地端點 通訊協定 Port 使用
ServiceTag - AzureMonitor:443 TCP 443 此端點用來將計量資料和記錄傳送至 Azure 監視器與 Log Analytics。

必要的 FQDN/應用程式規則

FQDN 連接埠 使用
dc.services.visualstudio.com HTTPS:443 此端點是用來使用 Azure 監視器取得正確計量和監視遙測。
*.ods.opinsights.azure.com HTTPS:443 Azure 監視器會使用此端點來內嵌記錄分析資料。
*.oms.opinsights.azure.com HTTPS:443 omsagent 會使用此端點來驗證記錄分析服務。
*.monitoring.azure.com HTTPS:443 此端點是用來將計量資料傳送至 Azure 監視器。
<cluster-region-name>.ingest.monitor.azure.com HTTPS:443 Azure 監視器適用於 Prometheus 的受管理服務會使用此端點擷取計量。
<cluster-region-name>.handler.control.monitor.azure.com HTTPS:443 此端點用於擷取特定叢集的資料收集規則。

由 21Vianet 營運的 Microsoft Azure 需要 FQDN/應用程式規則

FQDN 連接埠 使用
dc.services.visualstudio.com HTTPS:443 此端點是用來使用 Azure 監視器取得正確計量和監視遙測。
*.ods.opinsights.azure.cn HTTPS:443 Azure 監視器會使用此端點來內嵌記錄分析資料。
*.oms.opinsights.azure.cn HTTPS:443 omsagent 會使用此端點來驗證記錄分析服務。
global.handler.control.monitor.azure.cn HTTPS:443 Azure 監視器會使用此端點存取控制服務。
<cluster-region-name>.handler.control.monitor.azure.cn HTTPS:443 此端點用於擷取特定叢集的資料收集規則。

Azure 美國政府所需的 FQDN/應用程式規則

FQDN 連接埠 使用
dc.services.visualstudio.com HTTPS:443 此端點是用來使用 Azure 監視器取得正確計量和監視遙測。
*.ods.opinsights.azure.us HTTPS:443 Azure 監視器會使用此端點來內嵌記錄分析資料。
*.oms.opinsights.azure.us HTTPS:443 omsagent 會使用此端點來驗證記錄分析服務。
global.handler.control.monitor.azure.us HTTPS:443 Azure 監視器會使用此端點存取控制服務。
<cluster-region-name>.handler.control.monitor.azure.us HTTPS:443 此端點用於擷取特定叢集的資料收集規則。

Azure 原則

必要的 FQDN/應用程式規則

FQDN 連接埠 使用
data.policy.core.windows.net HTTPS:443 此位址是用來提取 Kubernetes 原則,並將叢集合規性狀態回報給原則服務。
store.policy.core.windows.net HTTPS:443 此位址是用來提取內建原則的 Gatekeeper 成品。
dc.services.visualstudio.com HTTPS:443 Azure 原則附加元件,其會將遙測資料傳送至 Application Insights 端點。

由 21Vianet 營運的 Microsoft Azure 需要 FQDN/應用程式規則

FQDN 連接埠 使用
data.policy.azure.cn HTTPS:443 此位址是用來提取 Kubernetes 原則,並將叢集合規性狀態回報給原則服務。
store.policy.azure.cn HTTPS:443 此位址是用來提取內建原則的 Gatekeeper 成品。

Azure 美國政府所需的 FQDN/應用程式規則

FQDN 連接埠 使用
data.policy.azure.us HTTPS:443 此位址是用來提取 Kubernetes 原則,並將叢集合規性狀態回報給原則服務。
store.policy.azure.us HTTPS:443 此位址是用來提取內建原則的 Gatekeeper 成品。

叢集擴充功能

必要的 FQDN/應用程式規則

FQDN 連接埠 使用
<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 美國政府所需的 FQDN/應用程式規則

FQDN 連接埠 使用
<region>.dp.kubernetesconfiguration.azure.us HTTPS:443 此位址可用來從叢集延伸模組服務擷取組態資訊,並向服務報告擴充功能狀態。
mcr.microsoft.com, *.data.mcr.microsoft.com HTTPS:443 需要此位址,才能提取容器映像,並在 AKS 叢集上安裝叢集擴充代理程式。

注意

未於此處明確說明的任何附加元件,須滿足核心需求。

下一步

在此文章中,您已了解在希望限制叢集的連出流量時,要允許哪些連接埠和位址。

如果您想要限制 Pod 在本身與叢集內東-西流量限制之間的通訊方式,請參閱在 AKS 中使用網路原則來保護 Pod 之間的流量