Profilanwendbarkeit: Stufe 1
Wenn
kube-proxy
läuft, stellen Sie sicher, dass die Dateibesitzrechte seiner kubeconfig-Datei auf
root:root
gesetzt sind.Die kubeconfig-Datei für
kube-proxy
steuert verschiedene Parameter für den kube-proxy
-Dienst im Arbeitsknoten. Sie sollten die Dateibesitzrechte festlegen, um die Integrität
der Datei zu gewährleisten. Die Datei sollte im Besitz von root:root
sein.![]() |
HinweisDer Standardbesitz der Proxy-Kubeconfig-Datei 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 Node-Pool, um die Detailseite des Node-Pools zu öffnen.
- Notieren Sie den Namen des gewünschten Knotens.
- Gehen Sie 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 kubeconfig-Datei zu finden:ps -ef | grep kubelet
- Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie
--kubeconfig/var/lib/kubelet/kubeconfig
zurückgeben, was den Speicherort der kubeconfig-Datei darstellt. - Führen Sie diesen Befehl aus, um die Eigentümerschaft der kubeconfig-Datei zu erhalten:
stat -c %U:%G /var/lib/kubelet/kubeconfig
- Die Ausgabe des obigen Befehls gibt 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
- 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
- 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 /host/var/lib/kubelet/kubeconfig
- Überprüfen Sie, ob der Besitz 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>