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

影響

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

稽核

使用 Google 雲端主控台
  1. 前往Kubernetes 引擎
  2. 點擊所需的叢集以打開詳細資訊頁面,然後點擊所需的節點池以打開節點池詳細資訊頁面。
  3. 記下所需節點的名稱。
  4. 前往VM 實例
  5. 尋找所需的節點並點擊SSH以開啟與該節點的SSH連接。
使用命令列
方法一:SSH 到工作節點
  1. 檢查 Kubelet 服務是否正在運行:
    sudo systemctl status kubelet
  2. 輸出應返回Active: active (running) since...。在每個節點上執行以下命令以找到適當的 Kubelet 配置文件:
    ps -ef | grep kubelet
  3. 上述命令的輸出應返回類似於 --config/etc/kubernetes/kubelet-config.yaml 的內容,這是 Kubelet 配置檔案的位置信息。
  4. 執行下列命令:
    stat -c %a /etc/kubernetes/kubelet-config.yaml
  5. 上述命令的輸出是 Kubelet 配置文件的權限。請確認權限是 644 或更嚴格。
方法二:建立並執行特權 Pod
  1. 透過部署使用 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
  2. 將此保存到檔案中(例如,file-check-pod.yaml)並創建 Pod:
    kubectl apply -f file-check-pod.yaml
  3. 一旦 pod 運行,您可以執行進入以檢查節點上的文件所有權:
    kubectl exec -it file-check -- sh
  4. 現在您在 Pod 的 Shell 中,但您可以透過 /host 目錄存取節點的檔案系統並檢查檔案的權限等級:
    ls -l /host/etc/kubernetes/kubelet-config.yaml
  5. 確認如果指定了檔案且該檔案存在,則其權限應為644或更嚴格。

補救

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