Profilanwendbarkeit: Stufe 1
Aktivieren Sie die Rotation des kubelet-Serverzertifikats.
RotateKubeletServerCertificate
veranlasst den Kubelet, sowohl ein Dienstzertifikat nach dem Bootstrapping seiner
Client-Anmeldeinformationen anzufordern als auch das Zertifikat zu rotieren, wenn
seine bestehenden Anmeldeinformationen ablaufen. Diese automatisierte periodische
Rotation stellt sicher, dass es keine Ausfallzeiten aufgrund abgelaufener Zertifikate
gibt und somit die Verfügbarkeit im CIA-Sicherheitsdreieck gewährleistet wird.Diese Empfehlung gilt nur, wenn Sie kubelets ihre Zertifikate vom API-Server beziehen
lassen. Falls Ihre kubelet-Zertifikate von einer externen Autorität/Tool (z.B. Vault)
stammen, müssen Sie sich selbst um die Rotation kümmern.
![]() |
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Prüfung
Audit Method 1:
Wenn eine Kubelet-Konfigurationsdatei verwendet wird, überprüfen Sie, ob ein Eintrag
für
RotateKubeletServerCertificate
auf true
gesetzt ist.-
SSH zum entsprechenden Knoten und führen Sie den folgenden Befehl auf jedem Knoten aus, um die passende Kubelet-Konfigurationsdatei 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:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
Überprüfen Sie, ob das Argument
RotateKubeletServerCertificate
existiert und auftrue
gesetzt ist.
Audit Method 2:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"RotateKubeletServerCertificate":true
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.-
Legen Sie den lokalen Proxy-Port 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
/etc/kubernetes/kubelet/kubelet-config.json
und stellen Sie sicher, dass der untenstehende Parameter auf true gesetzt ist:"RotateKubeletServerCertificate":true
Remediation Method 2:
Wenn Sie eine Kubelet-Konfigurationsdatei verwenden, bearbeiten Sie die Datei, um
RotateKubeletServerCertificate to true
festzulegen.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 am Ende der KUBELET_ARGS
-Variablenzeichenfolge den folgenden Parameter hinzu:--rotate-kubelet-server-certificate=true
Remediation Method 3:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"RotateKubeletServerCertificate":
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.Siehe schrittweise ConfigMap-Verfahren in der Kubernetes-Dokumentation und führen Sie den Curl-Befehl 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 Status:systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l