Profilanwendbarkeit: Stufe 1
Wenn
kubelet
läuft und durch eine kubeconfig-Datei konfiguriert ist, stellen Sie sicher, dass
die Proxy-kubeconfig-Datei Berechtigungen von 644 oder restriktiver hat.Die
kubelet
kubeconfig-Datei steuert verschiedene Parameter des kubelet
-Dienstes im Worker-Knoten. Sie sollten die Dateiberechtigungen einschränken, um die
Integrität der Datei zu wahren. Die Datei sollte nur von den Administratoren des Systems
beschreibbar sein. Es ist möglich, kubelet
mit den als Kubernetes ConfigMap konfigurierten kubeconfig-Parametern anstelle einer
Datei auszuführen. In diesem Fall gibt es keine Proxy-kubeconfig-Datei.![]() |
HinweisSiehe die AWS EKS-Dokumentation für den Standardwert.
|
Prüfung
Methode 1
- SSH zu den Worker-Knoten.
- Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Kubelet-Dienst läuft:
sudo systemctl status kubelet
Die Ausgabe sollteActive: active (running) since..
zurückgeben. - Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende kubeconfig-Datei
zu finden:
ps -ef | grep kubelet
Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie--kubeconfig/var/lib/kubelet/kubeconfig
zurückgeben, was den Speicherort der kubeconfig-Datei darstellt. - Führen Sie diesen Befehl aus, um die Berechtigungen der kubeconfig-Datei zu erhalten:
stat -c %a /var/lib/kubelet/kubeconfig
- Überprüfen Sie, ob eine Datei angegeben ist und existiert, und ob die Berechtigungen 644 oder restriktiver sind.
Methode 2
Erstellen und Ausführen eines privilegierten Pods
- Führen Sie einen Pod aus, der ausreichend privilegiert ist, um auf das Dateisystem
des Hosts zuzugreifen. Um dies zu tun, deployen Sie einen Pod, der das hostPath-Volume
verwendet, um das Dateisystem des Knotens in den Pod einzubinden.
Ein Beispiel für eine einfache Pod-Definition, die das Root-Verzeichnis des Hosts im Pod unter /host einbindet:
apiVersion: v1 kind: Pod metadata: name: file-check spec: volumes: - name: host-root hostPath: path: / type: Directory containers: - name: nsenter image: busybox command: ["sleep", "3600"] volumeMounts: - name: host-root mountPath: /host securityContext: privileged: true
- Speichern Sie dies in einer Datei (z. B. file-check-pod.yaml) und erstellen Sie das
Pod:
kubectl apply -f file-check-pod.yaml
- Sobald das Pod läuft, führen Sie einen Exec-Befehl aus, um die Dateiberechtigungen
auf dem Knoten zu überprüfen:
kubectl exec -it file-check -- sh
- Jetzt befinden Sie sich in einer Shell innerhalb des Pods, aber Sie können über das
/host-Verzeichnis auf das Dateisystem des Knotens zugreifen und die Berechtigungsstufe
der Datei überprüfen:
ls -l /host/var/lib/kubelet/kubeconfig
- Überprüfen Sie, ob eine Datei angegeben ist und existiert, und ob die Berechtigungen 644 oder restriktiver sind.
Wiederherstellung
Führen Sie den folgenden Befehl (basierend auf dem Dateispeicherort auf Ihrem System)
auf jedem Worker-Knoten aus:
chmod 644 <kubeconfig file>