Profilanwendbarkeit: Stufe 1 - Cluster / Steuerungsebene
Stellen Sie sicher, dass Cluster mit aktiviertem privaten Endpunkt und deaktiviertem
öffentlichem Zugriff erstellt werden, um die Sicherheit der Kubernetes-API zu verbessern.
In privaten Clustern verfügt der Master-Knoten sowohl über einen privaten als auch
einen öffentlichen Endpunkt. Der private Endpunkt, eine interne IP-Adresse hinter
dem internen Load-Balancer eines VPC-Netzwerks, erleichtert die Kommunikation zwischen
Knoten und Master, während der öffentliche Endpunkt externen Zugriff auf die Kubernetes-API
von außerhalb des VPC-Netzwerks des Masters ermöglicht. Obwohl die Kubernetes-API
ein autorisiertes Token für sensible Operationen erfordert, können Schwachstellen
sie dennoch öffentlich zugänglich machen, wodurch Angreifer möglicherweise den Cluster
und seine API-Version identifizieren können, um bekannte Schwachstellen auszunutzen.
Durch das Deaktivieren des öffentlichen Endpunkts begrenzen Sie solche Risiken, sodass
Angreifer innerhalb des VPC-Netzwerks des Masters sein müssen, um Angriffe zu starten.
Wenn öffentlicher Zugriff erforderlich ist, sollte er so konfiguriert werden, dass
nur bestimmte, auf der Whitelist stehende CIDR-Blöcke zugelassen werden, um kontrollierten
Zugriff zu ermöglichen, während der gesamte interne Verkehr zwischen Kubelets und
der Kubernetes-API über sicher bereitgestellte Cross-Account-ENIs im VPC des Clusters
erfolgt.
Auswirkung
Konfigurieren Sie den EKS-Cluster-Endpunkt als privat.
-
Lassen Sie den Endpunkt des Clusters öffentlich und geben Sie an, welche CIDR-Blöcke mit dem Endpunkt des Clusters kommunizieren können. Die Blöcke sind effektiv eine Whitelist von öffentlichen IP-Adressen, die Zugriff auf den Endpunkt des Clusters haben.
-
Konfigurieren Sie den öffentlichen Zugriff mit einer Reihe von zugelassenen CIDR-Blöcken und setzen Sie den privaten Endpunktzugriff auf Aktiviert. Dies ermöglicht öffentlichen Zugriff aus einem bestimmten Bereich öffentlicher IPs, während der gesamte Netzwerkverkehr zwischen den Kubelets (Arbeiter) und der Kubernetes-API durch die bereichsübergreifenden ENIs geleitet wird, die in die Cluster-VPC bereitgestellt werden, wenn die Steuerungsebene bereitgestellt wird.
Prüfung
Überprüfen Sie den privaten Endpunktzugriff auf den Kubernetes-API-Server. Überprüfen
Sie, ob die folgenden auf 'aktiviert: false' gesetzt sind
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPublicAccess"
Überprüfen Sie, ob die folgenden auf 'aktiviert: true' gesetzt sind
export CLUSTER_NAME=<your cluster name>
aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.resourcesVpcConfig.endpointPrivateAccess"
Wiederherstellung
Durch Aktivieren des privaten Endpunktzugriffs auf den Kubernetes-API-Server bleibt
die gesamte Kommunikation zwischen Ihren Knoten und dem API-Server innerhalb Ihres
VPC. Mit diesem Wissen können Sie Ihr Cluster entsprechend aktualisieren, indem Sie
die AWS CLI verwenden, um sicherzustellen, dass der private Endpunktzugriff aktiviert
ist.
Zum Beispiel würde der folgende Befehl privaten Zugriff auf die Kubernetes-API ermöglichen
und sicherstellen, dass kein öffentlicher Zugriff gestattet ist:
aws eks update-cluster-config --region $AWS_REGION --name $CLUSTER_NAME --resources-vpc-config endpointPrivateAccess=true,endpointPublicAccess=false
