Ansichten:
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