檢視次數:
設定檔適用性:等級 1
啟用端點私人存取以限制對叢集控制平面的存取,僅允許授權 IP 的允許清單。
授權網路是一種指定允許存取您叢集控制平面的 IP 位址範圍的方法。Kubernetes 引擎使用傳輸層安全性 (TLS) 和驗證來提供從公共網路安全存取您叢集的控制平面。這使您能夠從任何地方管理您的叢集;然而,您可能希望進一步限制存取至您控制的一組 IP 位址。您可以透過指定授權網路來設定此限制。
限制對授權網路的存取可以為您的容器叢集提供額外的安全效益,包括:
  • 更好的外部攻擊保護:授權網路透過限制外部存取至您指定的一組地址(例如來自您場所的地址),提供額外的安全層。這有助於在叢集的驗證或授權機制出現弱點時保護對您叢集的存取。
  • 更好的內部攻擊防護:授權網路有助於保護您的叢集,防止公司內部的主憑證意外洩漏。從 Azure 虛擬機外部和授權 IP 範圍外(例如,來自公司外部的地址)使用的洩漏憑證仍然會被拒絕訪問。
注意
注意
預設情況下,端點私密存取是停用的。

影響

在實施端點私有存取時,請小心確保所有所需的網路都在允許清單(白名單)上,以防止意外阻止外部訪問您的叢集控制平面。
限制:IP 授權範圍無法應用於私有 API 伺服器端點,它們僅適用於公共 API 伺服器。可用性區域目前僅支援某些地區。Azure Private Link 服務限制適用於私有叢集。私有叢集不支援 Azure DevOps Microsoft 託管代理。建議使用自託管代理。若客戶需要啟用 Azure Container Registry 與私有 AKS 一同運作,則 Container Registry 虛擬網路必須與代理叢集虛擬網路對等。

稽核

檢查以下設定是否適當:
export CLUSTER_NAME=<your cluster name>
export RESOURCE_GROUP=<your resource group name>

az aks show \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --query "{enablePrivateCluster:apiServerAccessProfile.enablePrivateCluster, enablePublicFqdn:apiServerAccessProfile.enablePublicFqdn, authorizedIpRanges:apiServerAccessProfile.authorizedIpRanges}" \
  --output json
輸出將類似於:
{
  "enablePrivateCluster": true,
  "enablePublicFqdn": false,
  "authorizedIpRanges": [
    "203.0.113.10/32",
    "198.51.100.0/24"
  ]
}
此命令查詢您AKS Cluster的apiServerAccessProfile中的enablePrivateCluster屬性。如果endpointPublicAccess已啟動,輸出將為true,允許從網路訪問AKS Cluster API伺服器。如果為false,則表示endpointPublicAccess已停用,意味著API伺服器無法透過網路訪問,這是私人Cluster的常見配置。
此指令查詢您 AKS Cluster 的 apiServerAccessProfile 中的 enablePrivateCluster 屬性。如果輸出為 true,表示已啟動 endpointPrivateAccess,且 AKS Cluster API 伺服器僅能透過私人端點存取。如果輸出為 false,則集群未配置為僅限私人存取,API 伺服器可能根據其他設定透過網路存取。
此命令查詢您AKS Cluster的apiServerAccessProfile中的authorizedIpRanges屬性。輸出將列出獲准通過網路訪問AKS Cluster的API伺服器的IP範圍。如果列表為空,則表示沒有任何限制,任何IP都可以訪問AKS Cluster的API伺服器,前提是其他網路和安全配置允許。

補救

透過啟用 Kubernetes API 伺服器的私人端點存取,您節點與 API 伺服器之間的所有通信都將保持在您的 VPC 內。您也可以限制從網路存取 API 伺服器的 IP 位址,或完全關閉 API 伺服器的網路存取。
考慮到這一點,您可以使用 AKS CLI 相應地更新您的叢集,以確保已啟動私人端點存取。
如果您選擇同時啟用公共端點存取,則您還應配置允許的 CIDR 區塊列表,以限制來自網路的存取。如果您未指定任何 CIDR 區塊,則公共 API 伺服器端點將預設為 ['0.0.0.0/0'],能夠接收和處理來自所有 IP 位址的請求。
例如,以下指令將啟用對 Kubernetes API 的私人存取,並允許從單一 IP 位址透過網路進行有限的公共存取(注意 /32 CIDR 後綴)。