檢視次數:
設定檔適用性:級別 1
如果 kubelet 正在運行,並且是由 kubeconfig 文件配置的,請確保 Proxy kubeconfig 文件的權限為 644 或更嚴格。
kubelet kubeconfig 檔案控制工作節點中 kubelet 服務的各種參數。您應限制其檔案權限以維護檔案的完整性。該檔案應僅由系統上的管理員寫入。可以將 kubeconfig 參數配置為 Kubernetes ConfigMap 而不是檔案來運行 kubelet。在這種情況下,沒有 proxy kubeconfig 檔案。
注意
注意
請參閱 Azure AKS 文件以了解預設值。

稽核

Method 1
  1. SSH 到工作節點。
  2. 輸入以下命令以檢查 Kubelet 服務是否正在運行:
    sudo systemctl status kubelet
    輸出應返回Active: active (running)
  3. 在每個節點上執行以下命令以找到適當的 kubeconfig 檔案:
    ps -ef | grep kubelet
    輸出應返回類似於 --kubeconfig /var/lib/kubelet/kubeconfig 的內容,這是 kubeconfig 文件的位置信息。
  4. 執行此命令以獲取 kubeconfig 文件的權限:
    stat -c %a /var/lib/kubelet/kubeconfig
  5. 確認如果指定了檔案且該檔案存在,則其權限為644或更嚴格。
Method 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 運行,執行進入以檢查節點上的文件權限:
    kubectl exec -it file-check -- sh
  4. 現在您在 Pod 的 shell 中,但您可以通過 /host 目錄訪問節點的檔案系統,並檢查檔案的權限級別:
    ls -l /host/var/lib/kubelet/kubeconfig
  5. 確認如果指定了檔案且該檔案存在,則其權限為644或更嚴格。

矯正性處理

在每個工作節點上執行以下命令(根據您系統上的檔案位置):
chmod 644 <kubeconfig file>