檢視次數:
配置檔適用性:級別 1
確保如果 kubelet 參考了帶有 --config 參數的配置文件,該文件的權限為 644 或更具限制性。
kubelet 會從由 --config 參數指定的配置文件中讀取各種參數,包括安全設置。如果指定了此文件,您應該限制其文件權限以維護文件的完整性。該文件應僅可由系統上的管理員寫入。
注意
注意
請參閱 AWS EKS 文檔以獲取預設值。

審計

方法 1
  1. SSH 到相關的工作節點。
  2. 輸入以下命令以檢查 Kubelet 服務是否正在運行:
    sudo systemctl status kubelet
    輸出應返回 活動:活動(運行中)自..
  3. 在每個節點上運行以下命令以查找適當的 Kubelet 配置文件:
    ps -ef | grep kubelet
    上述命令的輸出應該返回類似於 --config/etc/kubernetes/kubelet/kubelet-config.json 的內容,這是 Kubelet 配置文件的位置資訊。
  4. 執行此命令以獲取 Kubelet 配置文件的權限:
    stat -c %a /etc/kubernetes/kubelet/kubelet-config.json
  5. 請確認權限為 644 或更嚴格。
方法 2
建立並執行特權 Pod
  1. 運行一個具有足夠特權以訪問主機檔案系統的 Pod。為此,部署一個使用 hostPath 卷將節點的檔案系統掛載到 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 運行,請進入 Pod 以檢查節點上的文件權限:
    kubectl exec -it file-check -- sh
  4. 現在您在 pod 內的 shell 中,但您可以通過 /host 目錄訪問節點的檔案系統並檢查檔案的權限級別:
    ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
  5. 驗證如果指定了文件且該文件存在,則其權限為 644 或更嚴格。

補救

執行以下命令(使用在審核步驟中識別的配置檔案位置):
chmod 644 /etc/kubernetes/kubelet/kubelet-config.json