設定檔適用性:級別 1
如果
kube-proxy
正在運行,並且是由 kubeconfig 文件配置的,請確保 Proxy kubeconfig 文件的權限為 644 或更嚴格。kube-proxy
kubeconfig 檔案控制工作節點上 kube-proxy
服務的各種參數。您應該限制其檔案權限以維護檔案的完整性。該檔案應僅允許系統管理員寫入。![]() |
注意Proxy kubeconfig 檔案的預設權限是 644。
|
影響
過度寬鬆的檔案權限會增加平台的安全風險。
稽核
使用 Google 雲端主控台
- 前往Kubernetes 引擎。
- 點擊所需的叢集以打開詳細資訊頁面,然後點擊所需的節點池以打開節點池詳細資訊頁面。
- 記下所需節點的名稱。
- 前往VM 實例。
- 尋找所需的節點並點擊SSH以開啟與該節點的SSH連接。
使用命令列
方法 1:SSH 到工作節點
- 檢查 Kubelet 服務是否正在運行:
sudo systemctl status kubelet
- 輸出應返回
Active: active (running) since...
。在每個節點上運行以下命令以找到適當的 kubeconfig 文件:ps -ef | grep kubelet
- 上述命令的輸出應返回類似於
--kubeconfig/var/lib/kubelet/kubeconfig
的內容,這是 kubeconfig 文件的 位置資訊。 - 執行此命令以獲取 kubeconfig 文件的權限:
stat -c %a /var/lib/kubelet/kubeconfig
- 上述命令的輸出會提供 kubeconfig 文件的權限。請確認如果指定了文件且文件存在,則其權限應為 644 或更嚴格。
方法二:建立並執行特權 Pod
- 通過部署一個使用 hostPath 卷將節點的檔案系統掛載到 pod 中的 pod,運行一個有足夠權限訪問主機檔案系統的 pod。以下是一個簡單的 pod 定義範例,將主機的根目錄掛載到
pod 中的 /host:
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
- 將此保存到檔案中(例如,file-check-pod.yaml)並建立 Pod:
kubectl apply -f file-check-pod.yaml
- 一旦 pod 運行,您可以執行進入以檢查節點上的文件權限:
kubectl exec -it file-check -- sh
- 現在您在 Pod 的 shell 中,但您可以通過 /host 目錄訪問節點的檔案系統,並檢查檔案的權限級別:
ls -l /host/var/lib/kubelet/kubeconfig
- 確認如果指定了檔案且該檔案存在,則其權限為644或更嚴格。
補救
在每個工作節點上執行以下命令(根據您系統上的檔案位置):
chmod 644 <proxy kubeconfig file>