檢視次數:
設定檔適用性:等級 1
確保如果 kubelet 配置檔案存在,其權限設置為 644。
kubelet 從由 --config 參數指定的配置檔案中讀取各種參數,包括安全設定。如果此檔案存在,您應限制其檔案權限以維護檔案的完整性。該檔案應僅允許系統管理員寫入。
注意
注意
kubelet 配置檔案的預設權限為 600。

影響

過度寬鬆的檔案存取權限會增加平台的安全風險。

稽核

使用 Google Cloud 主控台
  1. 前往 Google Cloud Console Kubernetes Engine 頁面,以進入 Kubernetes Engine。
  2. 點擊所需的叢集以打開詳細資訊頁面,然後點擊所需的節點池以打開節點池詳細資訊頁面。3.
  3. 請記下所需節點的名稱
  4. 前往Google Cloud Console VM 實例頁面查看 VM 實例
  5. 尋找所需的節點並點擊SSH以開啟與該節點的SSH連接。
使用命令列
方法 1
首先,SSH 到相關的工作節點。
檢查 kubelet 服務是否正在運行:
sudo systemctl status kubelet
輸出應返回Active: active (running) since..
在每個節點上執行以下命令以找到適當的 Kubelet 配置檔:
ps -ef | grep kubelet
上述命令的輸出應該會返回類似於 --config /etc/kubernetes/kubelet-config.yaml 的內容,這是 Kubelet 配置檔案的位置信息。
執行下列命令:
stat -c %a /etc/kubernetes/kubelet-config.yaml
上述命令的輸出是kubelet配置檔案的權限。請確認權限為644或更嚴格。
方法二
建立並執行特權 Pod。
您將需要運行一個具有足夠權限以存取主機檔案系統的 Pod。這可以透過部署一個使用 hostPath 卷將節點的檔案系統掛載到 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/etc/kubernetes/kubelet-config.yaml
確認如果指定了檔案且該檔案存在,權限應為 644 或更嚴格。

補救

執行以下指令(使用 kubelet 設定檔案位置):
chmod 644 <kubelet_config_file>