設定檔適用性:等級 1 - 叢集 / 控制平面
確保在建立叢集時啟用私人端點並停用公共訪問,以增強 Kubernetes API 的安全性。在私人叢集中,主節點具有私人和公共端點。私人端點是 VPC 網路內部負載平衡器後面的內部
IP 位址,便於節點與主節點之間的通信,而公共端點則允許從主節點的 VPC 網路外部訪問 Kubernetes API。雖然 Kubernetes API 需要授權的令牌來進行敏感操作,但弱點仍可能使其公開暴露,讓攻擊者有可能識別叢集及其
API 版本以利用已知的弱點。通過停用公共端點,您可以限制此類風險,迫使攻擊者必須在主節點的 VPC 網路內才能發動攻擊。如果需要公共訪問,應配置為僅允許指定的白名單
CIDR 區塊,提供受控訪問,同時保持所有 kubelet 和 Kubernetes API 之間的內部流量通過安全配置的跨帳戶 ENI 在叢集的 VPC 中進行。
影響
將 EKS 叢集端點配置為私有。
1. 保持叢集端點公開,並指定哪些 CIDR 區塊可以與叢集端點通信。這些區塊實際上是一組允許訪問叢集端點的白名單公共 IP 位址。
2. 使用一組白名單 CIDR 區塊配置公共訪問,並將私有端點訪問設置為已啟動。這允許從特定範圍的公共 IP 進行公共訪問,同時強制所有在 kubelets(工作者)和
Kubernetes API 之間的網絡流量通過跨帳戶 ENI,這些 ENI 在控制平面配置時會被配置到集群 VPC 中。
稽核
檢查 Kubernetes API 伺服器的私有端點訪問。檢查以下項目是否為已啟動:false
export CLUSTER_NAME=<your cluster name> aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPublicAccess"
檢查以下項目是否為已啟動:true
export CLUSTER_NAME=<your cluster name> aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPrivateAccess"
補救措施
透過啟用對 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