Ansichten:
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.
Hinweis
Hinweis
Die 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
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen.
  2. 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. 3.
  3. Notieren Sie den Namen des gewünschten Knotens
  4. Gehen Sie zu VM-Instanzen, indem Sie die Google Cloud Console VM-Instanzen-Seite besuchen
  5. Finden Sie den gewünschten Knoten und klicken Sie auf 'SSH', um eine SSH-Verbindung zum Knoten zu öffnen.
Verwendung der Befehlszeile
Methode 1
Zuerst per SSH zum entsprechenden Worker-Knoten verbinden.
Um zu überprüfen, ob der kubelet-Dienst läuft:
sudo systemctl status kubelet
Die Ausgabe sollte Aktiv: aktiv (läuft) seit.. 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 den Speicherort der kubelet-Konfigurationsdatei darstellt.
Führen Sie den folgenden Befehl aus:
stat -c %U:%G /etc/kubernetes/kubelet-config.yaml
Die Ausgabe des obigen Befehls zeigt die Eigentümerschaft der kubelet-Konfigurationsdatei. Überprüfen Sie, dass die Eigentümerschaft auf root:root gesetzt ist.
Methode 2
Erstellen und Ausführen eines privilegierten Pods.
Sie müssen ein Pod ausführen, das über ausreichende Berechtigungen verfügt, um auf das Dateisystem des Hosts zuzugreifen. Dies kann erreicht werden, indem ein Pod bereitgestellt wird, der 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 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, 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 Eigentümerschaft der Datei überprüfen:
ls -l /etc/kubernetes/kubelet-config.yaml
Die Ausgabe des obigen Befehls zeigt Ihnen die Dateibesitzrechte. Überprüfen Sie, dass die Besitzrechte auf root:root gesetzt sind.

Wiederherstellung

Führen Sie den folgenden Befehl aus (unter Verwendung des im Audit-Schritt identifizierten Dateispeicherorts der Konfigurationsdatei):
chown root:root <kubelet_config_file>