Profilanwendbarkeit: Stufe 1
Stellen Sie sicher, dass die kubelet-Konfigurationsdatei, falls vorhanden, Berechtigungen
von 644 hat.
Der Kubelet liest verschiedene Parameter, einschließlich Sicherheitseinstellungen,
aus einer Konfigurationsdatei, die durch das Argument
--config
angegeben wird. Wenn diese Datei existiert, sollten Sie die Dateiberechtigungen einschränken,
um die Integrität der Datei zu wahren. Die Datei sollte nur von den Administratoren
des Systems beschreibbar sein.![]() |
HinweisDie Standardberechtigungen für die kubelet-Konfigurationsdatei sind 600.
|
Auswirkung
Übermäßig großzügiger Dateizugriff erhöht das Sicherheitsrisiko für die Plattform.
Prüfung
Google Cloud-Konsole verwenden
- Gehen Sie zu Kubernetes Engine.
- Klicken Sie auf den gewünschten Cluster, um die Detailseite zu öffnen, und klicken Sie dann auf den gewünschten Node-Pool, um die Detailseite des Node-Pools zu öffnen.
- Notieren Sie den Namen des gewünschten Knotens.
- Gehen Sie zu VM-Instanzen.
- Suchen Sie den gewünschten Knoten und klicken Sie auf SSH, um eine SSH-Verbindung zum Knoten herzustellen.
Verwendung der Befehlszeile
Methode 1: SSH zu den Worker-Knoten
- Um zu überprüfen, ob der Kubelet-Dienst läuft:
sudo systemctl status kubelet
- Die Ausgabe sollte
Active: active (running) since...
zurückgeben. Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei zu finden:ps -ef | grep kubelet
- Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie
--config/etc/kubernetes/kubelet-config.yaml
zurückgeben, was der Speicherort der Kubelet-Konfigurationsdatei ist. - Führen Sie folgenden Befehl aus:
stat -c %a /etc/kubernetes/kubelet-config.yaml
- Die Ausgabe des obigen Befehls zeigt die Berechtigungen der Kubelet-Konfigurationsdatei. Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
Methode 2: Erstellen und Ausführen eines privilegierten Pods
- Führen Sie ein Pod aus, das ausreichend privilegiert ist, um auf das Dateisystem des
Hosts zuzugreifen, indem Sie ein Pod bereitstellen, das das hostPath-Volume verwendet,
um das Dateisystem des Knotens in das Pod einzubinden. Hier ist ein Beispiel für eine
einfache Pod-Definition, die das Root-Verzeichnis des Hosts in /host innerhalb des
Pods 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, können Sie sich in das Pod einloggen, um die Dateibesitzrechte
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/etc/kubernetes/kubelet-config.yaml
- Überprüfen Sie, ob, falls eine Datei angegeben ist und existiert, die Berechtigungen 644 oder restriktiver sind.
Wiederherstellung
Führen Sie den folgenden Befehl aus (unter Verwendung des Dateispeicherorts der kubelet-Konfigurationsdatei):
chmod 644 <kubelet_config_file>