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
--config-Argument 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 Knotenpool, um die Detailseite des Knotenpools zu öffnen.
- Notieren Sie den Namen des gewünschten Knotens.
- Gehe 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.yamlzurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt. - Führen Sie den 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
- Run a pod that is privileged enough to access the host's file system by deploying
a pod that uses the hostPath volume to mount the node's file system into the pod.
Here's an example of a simple pod definition that mounts the root of the host to /host
within the pod:
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 eine Datei angegeben ist und existiert, und ob 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>
