Profilanwendbarkeit: Stufe 1 - Worker-Knoten
Stellen Sie sicher, dass das Argument
--authorization-mode in Kubelets nicht auf AlwaysAllow gesetzt ist, um die Sicherheit durch explizite Autorisierung zu erhöhen. Kubelets,
die so konfiguriert sind, dass sie alle authentifizierten Anfragen, einschließlich
anonymer, ohne explizite Autorisierungsprüfungen vom Apiserver zulassen, können ein
Sicherheitsrisiko darstellen. Es ist entscheidend, dieses Verhalten einzuschränken,
sodass nur explizit autorisierte Anfragen erlaubt sind. Indem Sie --authorization-mode auf eine restriktivere Einstellung setzen, stellen Sie sicher, dass unautorisierte
Anfragen systematisch abgelehnt werden, wodurch die Sicherheit Ihrer Kubernetes-Umgebung
gestärkt wird.Auswirkung
Unbefugte Anfragen werden abgelehnt.
Prüfung
Prüfmethode 1:
HinweisKubelets können über eine Konfigurationsdatei oder Befehlszeilenargumente konfiguriert
werden. Befehlszeilenargumente haben Vorrang. Überprüfen Sie sowohl die Befehlszeilenargumente
als auch die Einträge in der Konfigurationsdatei, wenn Sie Kubelet-Konfigurationen
prüfen.
|
-
SSH in jeden Knoten und führen Sie den folgenden Befehl aus, um Details des aktiven Kubelet-Prozesses anzuzeigen:
ps -ef | grep kubelet
-
Identifizieren Sie den Speicherort der Konfigurationsdatei aus dem --config-Argument in der Ausgabe. Sehen Sie die Datei an mit:
sudo less /path/to/kubelet-config.json
-
Überprüfen Sie, ob die Webhook-Authentifizierung aktiviert ist:
-
Befehlszeilenargument für den Kubelet-Dienst:
--authentication-token-webhook
-
In der Kubelet-Konfigurationsdatei:
{ "authentication": { "webhook": { "enabled": true } } }
-
-
Überprüfen Sie, ob der Autorisierungsmodus auf WebHook eingestellt ist:
-
Befehlszeilenargument für den Kubelet-Dienst:
--authorization-mode=Webhook
-
In der Kubelet-Konfigurationsdatei:
{ "authorization": { "mode": "Webhook" } }
-
Prüfmethode 2:
Überprüfen Sie die laufende Konfiguration eines Kubelet über den "/configz"-Endpunkt
der Kubernetes-API mit kubectl:
-
Entdecken Sie alle Knoten in Ihrem Cluster:
kubectl get nodes
-
Initialisieren Sie einen Proxy mit kubectl auf einem lokalen Port (z. B. 8080):
kubectl proxy --port=8080
-
Führen Sie in einem separaten Terminal den folgenden Befehl für jeden Knoten aus:
export NODE_NAME=my-node-name curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz -
Überprüfen Sie, ob die Webhook-Authentifizierung aktiviert ist, indem Sie die API-Antwort überprüfen:
{ "authentication": { "webhook": { "enabled": true } } } -
Überprüfen Sie, ob der Autorisierungsmodus auf WebHook eingestellt ist, indem Sie die API-Antwort überprüfen:
{ "authorization": { "mode": "Webhook" } }
Wiederherstellung
Methode 1:
-
{SS} in jeden Knoten.
-
Suchen Sie die Kubelet-Konfigurationsdatei:
ps -ef | grep kubelet
-
Zeigen Sie die Konfigurationsdatei an mit:
sudo less /path/to/kubelet-config.json
-
Aktivieren Sie die Webhook-Authentifizierung, indem Sie den folgenden Parameter festlegen:
{ "authentication": { "webhook": { "enabled": true } }, "authorization": { "mode": "Webhook" } } -
Starten Sie den Kubelet-Dienst neu und überprüfen Sie seinen Status (Beispiel für Systeme, die systemd verwenden):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
Methode 2:
-
Wenn Sie Befehlszeilenargumente verwenden, bearbeiten Sie die Kubelet-Dienstdatei, um die folgenden Parameter einzuschließen:
--authentication-token-webhook --authorization-mode=Webhook -
Für Systeme, die systemd verwenden, bearbeiten Sie die Datei unter /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf.
-
Starten Sie den Kubelet-Dienst neu und überprüfen Sie seinen Status (Beispiel für Systeme, die systemd verwenden):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
