Profilanwendbarkeit: Stufe 1 - Cluster / Steuerungsebene
Stellen Sie sicher, dass Cluster mit aktiviertem privatem 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 exponieren, sodass 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.
1. Lassen Sie den Cluster-Endpunkt öffentlich und geben Sie an, welche CIDR-Blöcke
mit dem Cluster-Endpunkt kommunizieren können. Die Blöcke sind effektiv eine Whitelist
von öffentlichen IP-Adressen, die auf den Cluster-Endpunkt zugreifen dürfen.
2. 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 von 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 das Folgende auf 'Aktiviert: false' gesetzt ist
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 das 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 Ihren 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