Ansichten:
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.
Hinweis
Hinweis
Die 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
  1. Gehen Sie zu Kubernetes Engine.
  2. 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.
  3. Notieren Sie den Namen des gewünschten Knotens.
  4. Gehen Sie zu VM-Instanzen.
  5. 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
  1. Um zu überprüfen, ob der Kubelet-Dienst läuft:
    sudo systemctl status kubelet
  2. 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
  3. Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie --config/etc/kubernetes/kubelet-config.yaml zurückgeben, was der Speicherort der Kubelet-Konfigurationsdatei ist.
  4. Führen Sie folgenden Befehl aus:
    stat -c %a /etc/kubernetes/kubelet-config.yaml
  5. 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
  1. 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
  2. Speichern Sie dies in einer Datei (z.B. file-check-pod.yaml) und erstellen Sie das Pod:
    kubectl apply -f file-check-pod.yaml
  3. 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
  4. 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
  5. Ü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>