設定檔適用性:級別 1
確保如果 kubelet 配置檔案存在,則其所有者為
root:root
。kubelet 從由
--config
參數指定的配置文件中讀取各種參數,包括安全設置。如果指定了此文件,您應限制其文件權限以維護文件的完整性。該文件應由 root:root
擁有。![]() |
注意預設的檔案擁有者是
root:root 。 |
影響
過度寬鬆的檔案存取權限會增加平台的安全風險。
稽核
使用 Google 雲端主控台
- 前往Kubernetes 引擎。
- 點擊所需的叢集以打開詳細資訊頁面,然後點擊所需的節點池以打開節點池詳細資訊頁面。
- 記下所需節點的名稱。
- 前往VM 實例。
- 尋找所需的節點並點擊SSH以開啟與該節點的SSH連接。
使用命令列
方法 1:SSH 到工作節點
- 檢查 Kubelet 服務是否正在運行:
sudo systemctl status kubelet
- 輸出應返回
Active: active (running) since...
。在每個節點上執行以下命令以找到適當的 Kubelet 配置文件:ps -ef | grep kubelet
- 上述命令的輸出應返回類似於
--config/etc/kubernetes/kubelet/kubelet-config.yaml
的內容,這是Kubelet配置檔案的位置信息。 - 執行此命令:
stat -c %U:%G /etc/kubernetes/kubelet/kubelet-config.yaml
- 上述命令的輸出會提供 Kubelet 配置文件的所有權。請確認所有權設置為
root:root
。
方法二:建立並執行特權 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 /etc/kubernetes/kubelet/kubelet-config.yaml
- 確認所有權已設定為
root:root
。
補救
執行以下命令(使用在稽核步驟中識別的設定檔案位置):
chown root:root <kubelet_config_file>