檢視次數:
設定檔適用性:等級 1
如果不需要,請關閉從節點網路外部訪問 Kubernetes API 的權限。
在私人叢集中,主節點有兩個端點,一個是私人端點,另一個是公共端點。私人端點是主節點的內部 IP 位址,位於主節點 VPC Network 的內部負載平衡器後方。節點使用私人端點與主節點進行通訊。公共端點則允許從主節點的 VPC Network 外部存取 Kubernetes API。
雖然 Kubernetes API 需要授權的令牌來執行敏感操作,但一個弱點可能會將 Kubernetes 公開暴露,允許不受限制的訪問。此外,攻擊者可能能夠識別當前的叢集和 Kubernetes API 版本,並確定其是否易受攻擊。除非必要,否則禁用公共端點將有助於防止此類威脅,並要求攻擊者必須在主節點的 VPC Network 上才能對 Kubernetes API 進行任何攻擊。
注意
注意
預設情況下,公共端點是停用的。

影響

將 EKS 叢集端點配置為私有。
  1. 將叢集端點設為公開,並指定哪些 CIDR 區塊可以與叢集端點通信。這些區塊實際上是一組被允許訪問叢集端點的公開 IP 位址白名單。
  2. 使用一組白名單 CIDR 區塊配置公共訪問,並將私人端點訪問設置為已啟動。這將允許來自特定範圍的公共 IP 的公共訪問,同時強制所有在 kubelet(工作節點)和 Kubernetes API 之間的網路流量通過跨帳戶 ENI,這些 ENI 在控制平面配置時被配置到叢集 VPC 中。

稽核

檢查對 Kubernetes API 伺服器的私人端點訪問:
export CLUSTER_NAME=<your cluster name>
export REGION_CODE=<your region>
aws eks describe-cluster \
--name "${CLUSTER_NAME}" \
--region "${REGION_CODE}" \
--query \
"cluster.resourcesVpcConfig.{endpointPublicAccess:endpointPublicAccess,endpointPrivateAccess:endpointPrivateAccess}" \
--output json
檢查以下項目是否為"endpointPrivateAccess": true
檢查以下項目是否為"endpointPublicAccess": true

補救

透過啟用對 Kubernetes API 伺服器的私有端點存取,您的節點與 API 伺服器之間的所有通信將保持在您的 VPC 內。
考慮到這一點,您可以使用 AWS CLI 相應地更新您的叢集,以確保已啟動私有端點存取。
例如,以下命令將啟用對 Kubernetes API 的私有訪問,並確保不允許公共訪問:
aws eks update-cluster-config \
--region $AWS_REGION \
--name $CLUSTER_NAME \
--resources-vpc-config endpointPrivateAccess=true,endpointPublicAccess=false
注意
注意
如需更詳細的資訊,請參閱參考資料部分中的 EKS 叢集端點文件連結。