Profilanwendbarkeit: Stufe 1
Deaktiviert anonyme Anfragen an den Kubelet-Server.
Wenn aktiviert, werden Anfragen, die nicht durch andere konfigurierte Authentifizierungsmethoden
abgelehnt werden, als anonyme Anfragen behandelt und vom Kubelet-Server bedient. Sie
sollten sich auf die Authentifizierung verlassen, um den Zugriff zu autorisieren und
anonyme Anfragen zu verbieten.
![]() |
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Auswirkung
Anonyme Anfragen werden abgelehnt.
Prüfung
Audit Method 1:
Wenn eine Kubelet-Konfigurationsdatei verwendet wird, überprüfen Sie, ob ein Eintrag
für
authentication: anonymous: enabled
auf false
gesetzt ist.-
SSH zu jedem Knoten und führen Sie den folgenden Befehl aus, um den Kubelet-Prozess zu finden:
ps -ef | grep kubelet
Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie--config /etc/kubernetes/kubelet/kubelet-config.json
zurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt. -
Öffnen Sie die Kubelet-Konfigurationsdatei:
sudo more /etc/kubernetes/kubelet/kubelet-config.json
-
Überprüfen Sie, ob das Argument
"authentication": { "anonymous": { "enabled": false }
auffalse
gesetzt ist.
Audit Method 2:
- Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
authentication... "anonymous":{"enabled":false}
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen. -
Legen Sie die lokale Proxy-Portnummer und die folgenden Variablen fest und geben Sie die Proxy-Portnummer und den Knotennamen an:
HOSTNAME_PORT="localhost-and-port-number"
NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" from the output of "kubectl get nodes"
kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 (example host and port number) export NODE_NAME=ip-192.168.31.226.aks.internal (example node name from "kubectl get nodes") curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Remediation Method 1:
Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die kubelet-config.json-Datei
/etc/kubernetes/kubelet/kubelet-config.json
und setzen Sie den untenstehenden Parameter auf false:"anonymous": "enabled": false
Remediation Method 2:
Wenn ausführbare Argumente verwendet werden, bearbeiten Sie die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
auf jedem Worker-Knoten und fügen Sie den untenstehenden Parameter am Ende der KUBELET_ARGS
-Variablenzeichenfolge hinzu.--anonymous-auth=false
Remediation Method 3:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"authentication.*anonymous":{"enabled":false}"
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.**Siehe detaillierte Schritt-für-Schritt-Anweisungen zur Configmap in Reconfigure
a Node's Kubelet in a Live Cluster und führen Sie dann die Curl-Anweisung aus dem
Audit-Prozess erneut aus, um Änderungen an der Kubelet-Konfiguration zu überprüfen:**
kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 (example host and port number) export NODE_NAME=ip-192.168.31.226.aks.internal (example node name from "kubectl get nodes") curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all three remediations:
Starten Sie den
kubelet
-Dienst neu und überprüfen Sie den Dienststatus:systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l