Profilanwendbarkeit: Stufe 1
Stellen Sie sicher, dass, wenn die Kubelet-Konfigurationsdatei existiert, sie im Besitz
von
root:root ist.Der Kubelet liest verschiedene Parameter, einschließlich Sicherheitseinstellungen,
aus einer Konfigurationsdatei, die durch das Argument
--config angegeben wird. Wenn diese Datei angegeben ist, sollten Sie die Dateiberechtigungen
einschränken, um die Integrität der Datei zu wahren. Die Datei sollte im Besitz von
root:root sein.
HinweisDie standardmäßige Dateibesitzerschaft ist
root:root. |
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/kubelet-config.yamlzurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt. - Führen Sie diesen Befehl aus:
stat -c %U:%G /etc/kubernetes/kubelet/kubelet-config.yaml
- Die Ausgabe des obigen Befehls gibt Ihnen die Eigentümerschaft der Kubelet-Konfigurationsdatei.
Überprüfen Sie, dass die Eigentümerschaft auf
root:rootgesetzt ist.
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 es 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 Eigentümerschaft
der Datei überprüfen:
ls -l /etc/kubernetes/kubelet/kubelet-config.yaml
- Überprüfen Sie, ob der Besitz auf
root:rootfestgelegt ist.
Wiederherstellung
Führen Sie den folgenden Befehl aus (unter Verwendung des im Audit-Schritt ermittelten
Dateispeicherorts der Konfigurationsdatei):
chown root:root <kubelet_config_file>
