Ansichten:
Profilanwendbarkeit: Stufe 1
Wenn kube-proxy ausgeführt wird, stellen Sie sicher, dass die Dateieigentümerschaft der kubeconfig-Datei auf root:root gesetzt ist.
Die kubeconfig-Datei für kube-proxy steuert verschiedene Parameter für den kube-proxy-Dienst im Arbeitsknoten. Sie sollten die Dateieigentümerschaft festlegen, um die Integrität der Datei zu gewährleisten. Die Datei sollte im Besitz von root:root sein.
Hinweis
Hinweis
Die Standardbesitzrechte der Proxy-Kubeconfig-Datei sind root:root.

Auswirkung

Übermäßig großzügiger Dateizugriff erhöht das Sicherheitsrisiko für die Plattform.

Prüfung

Google Cloud-Konsole verwenden
  1. Gehe zu Kubernetes Engine.
  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. Notieren Sie den Namen des gewünschten Knotens.
  4. Gehe 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 kubeconfig-Datei zu finden:
    ps -ef | grep kubelet
  3. Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie --kubeconfig/var/lib/kubelet/kubeconfig zurückgeben, was den Speicherort der kubeconfig-Datei darstellt.
  4. Führen Sie diesen Befehl aus, um die Eigentümerschaft der kubeconfig-Datei zu erhalten:
    stat -c %U:%G /var/lib/kubelet/kubeconfig
  5. Die Ausgabe des obigen Befehls zeigt Ihnen die Eigentümerschaft der kubeconfig-Datei. Überprüfen Sie, dass die Eigentümerschaft auf root:root gesetzt ist.
Methode 2: Erstellen und Ausführen eines privilegierten Pods
  1. 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
  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 Eigentümerschaft der Datei überprüfen:
    ls -l /host/var/lib/kubelet/kubeconfig
  5. Überprüfen Sie, ob die Eigentümerschaft auf root:root festgelegt ist.

Wiederherstellung

Führen Sie den folgenden Befehl (basierend auf dem Dateispeicherort auf Ihrem System) auf jedem Worker-Knoten aus:
chown root:root <proxy kubeconfig file>