設定檔適用性:等級 1
確保如果 kubelet 使用
--config 參數引用配置檔案,該檔案的權限設置為 644 或更嚴格。kubelet 從由
--config 參數指定的配置檔案中讀取各種參數,包括安全設定。如果指定了此檔案,您應限制其檔案權限以維護檔案的完整性。該檔案應僅允許系統管理員寫入。
注意請參閱 AWS EKS 文件以了解預設值。
|
稽核
方法一
- SSH到相關的工作節點。
- 輸入以下指令以檢查 Kubelet 服務是否正在運行:
sudo systemctl status kubelet
輸出應返回Active: active (running) since..。 - 在每個節點上執行以下命令以找到適當的 Kubelet 配置檔案:
ps -ef | grep kubelet
上述指令的輸出應返回類似於--config/etc/kubernetes/kubelet/kubelet-config.json的內容,這是 Kubelet 設定檔的位置信息。 - 執行此命令以獲取 Kubelet 配置文件的權限:
stat -c %a /etc/kubernetes/kubelet/kubelet-config.json
-
確認權限是否為644或更嚴格。
方法二
建立並執行特權 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 運行,執行進入以檢查節點上的文件權限:
kubectl exec -it file-check -- sh
- 現在您在 Pod 的 Shell 中,但您可以透過 /host 目錄存取節點的檔案系統,並檢查檔案的權限等級:
ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
- 驗證指定的檔案是否存在,並確認其權限為 644 或更嚴格。
補救
執行以下指令(使用在稽核步驟中識別的設定檔案位置):
chmod 644 /etc/kubernetes/kubelet/kubelet-config.json
