配置檔適用性:級別 1
如果
kubelet
正在運行,並且它是由 kubeconfig 文件配置的,請確保代理的 kubeconfig 文件具有 644 或更具限制性的權限。kubelet
的 kubeconfig 檔案控制著工作節點中 kubelet
服務的各種參數。您應該限制其檔案權限以維護檔案的完整性。該檔案應僅可由系統上的管理員寫入。可以將 kubelet
以 Kubernetes ConfigMap 的形式運行,配置 kubeconfig 參數,而不是使用檔案。在這種情況下,沒有代理 kubeconfig 檔案。![]() |
注意請參閱 AWS EKS 文檔以獲取預設值。
|
審計
方法 1
- SSH 連接到工作節點。
- 輸入以下命令以檢查 Kubelet 服務是否正在運行:
sudo systemctl status kubelet
輸出應返回活動:活動(運行中)自..
。 - 在每個節點上運行以下命令以查找適當的 kubeconfig 文件:
ps -ef | grep kubelet
上述命令的輸出應該返回類似於--kubeconfig/var/lib/kubelet/kubeconfig
的內容,這是 kubeconfig 文件的位置資訊。 - 執行此命令以獲取 kubeconfig 檔案的權限:
stat -c %a /var/lib/kubelet/kubeconfig
- 驗證如果指定了文件且該文件存在,則其權限為 644 或更嚴格。
方法 2
建立並執行特權 Pod
- 運行一個具有足夠特權以訪問主機檔案系統的 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
- 將此保存到文件中(例如,file-check-pod.yaml)並創建該 pod:
kubectl apply -f file-check-pod.yaml
- 一旦 Pod 運行,請進入 Pod 以檢查節點上的檔案權限:
kubectl exec -it file-check -- sh
- 現在您在 pod 內的 shell 中,但您可以通過 /host 目錄訪問節點的檔案系統並檢查檔案的權限級別:
ls -l /host/var/lib/kubelet/kubeconfig
- 驗證如果指定了文件且該文件存在,則其權限為 644 或更嚴格。
補救
在每個工作節點上執行以下命令(根據您系統上的檔案位置):
chmod 644 <kubeconfig file>