檢視次數:
設定檔適用性:等級 1 - 叢集 / 控制平面
確保叢集在建立時啟用私人端點並停用公共存取,以增強 Kubernetes API 的安全性。在私人叢集中,主節點具有私人和公共端點。私人端點是位於 VPC 網路內部負載平衡器後的內部 IP 位址,便於節點與主節點之間的通訊,而公共端點則允許從主節點的 VPC 網路外部存取 Kubernetes API。雖然 Kubernetes API 需要授權的權杖來進行敏感操作,但弱點仍可能使其公開暴露,讓攻擊者有可能識別叢集及其 API 版本以利用已知的弱點。通過停用公共端點,您可以限制此類風險,迫使攻擊者必須在主節點的 VPC 網路內才能發動攻擊。如果需要公共存取,應配置為僅允許指定的白名單 CIDR 區塊,以提供受控的存取,同時保持所有內部流量通過安全配置的跨帳戶 ENI 在叢集的 VPC 中進行 kubelet 和 Kubernetes API 之間的通訊。

影響

將 EKS 叢集端點配置為私有。
  1. 將叢集端點保持為公開,並指定哪些 CIDR 區塊可以與叢集端點通信。這些區塊實際上是一組允許存取叢集端點的白名單公共 IP 位址。
  2. 使用一組白名單 CIDR 區塊配置公共訪問,並將私人端點訪問設置為已啟動。這允許來自特定範圍的公共 IP 的公共訪問,同時強制所有在 kubelet(工作者)和 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