Profilanwendbarkeit: Stufe 1
Aktivieren Sie die Rotation des kubelet-Serverzertifikats.
RotateKubeletServerCertificate veranlasst den Kubelet, sowohl ein Serverzertifikat nach dem Bootstrapping seiner
Client-Anmeldedaten anzufordern als auch das Zertifikat zu rotieren, wenn seine bestehenden
Anmeldedaten 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 Behörde/einem externen Tool
(z. B. Vault) stammen, müssen Sie sich selbst um die Rotation kümmern.
HinweisWeitere Informationen zum Standardwert finden Sie in der Dokumentation des AKS.
|
Prüfung
Audit Method 1Wenn eine Kubelet-Konfigurationsdatei verwendet wird, überprüfen Sie, ob ein Eintrag
für
RotateKubeletServerCertificate auf true gesetzt ist.-
SSH zum entsprechenden Knoten.
-
Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei zu finden:
ps -ef | grep kubelet
Die Ausgabe sollte etwas Ähnliches wie--config /etc/kubernetes/kubelet/kubelet-config.jsonzurü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
RotateKubeletServerCertificatevorhanden ist und auftruegesetzt ist.
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von
"RotateKubeletServerCertificate":true, 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-und-Portnummer" NODE_NAME="Der-Name-des-Knotens-zur-Konfigurationsausgabe"
aus der Ausgabe von "kubectl get nodes"kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Remediation Method 1Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die Datei
kubelet-config.json /etc/kubernetes/kubelet/kubelet-config.json und setzen Sie den folgenden Parameter auf true:"RotateKubeletServerCertificate":trueRemediation Method 2
Wenn Sie eine Kubelet-Konfigurationsdatei verwenden, bearbeiten Sie die Datei, um
RotateKubeletServerCertificate auf true zu setzen.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=trueRemediation Method 3
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von
"RotateKubeletServerCertificate":, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.Siehe detaillierte Schritt-für-Schritt-Anweisungen zur ConfigMap in Neukonfiguration eines Node-Kubelets in einem 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
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all three remediations: Basierend auf Ihrem System, starten Sie den Kubelet-Dienst neu und überprüfen Sie
den Status:
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
