檢視次數:
設定檔適用性:等級 2
應捕捉安全相關資訊。可以使用 Kubelet 上的 --eventRecordQPS 標誌來限制事件收集的速率。設置過低可能導致相關事件未被記錄,但設置為 0 的無限制可能導致 kubelet 的服務拒絕。
捕捉所有事件並不限制事件創建是很重要的。事件是安全資訊和分析的重要來源,確保使用事件資料持續監控您的環境。
注意
注意
請參閱 Azure AKS 文件以了解預設值。

稽核

Audit Method 1:
  1. SSH 到相關節點,並在每個節點上運行以下命令以查找 Kubelet 進程:
    ps -ef | grep kubelet
  2. 在上述命令的輸出中,檢查 --eventRecordQPS 參數的設定值,並確定這是否已設定為集群的適當水平。可以使用值 0 來確保捕獲所有事件。
  3. 如果 --eventRecordQPS 參數不存在,請檢查是否有由 --config 指定的 Kubelet 配置檔案,並檢閱此位置的值。
    上述命令的輸出應返回類似於 --config /etc/kubernetes/kubelet/kubelet-config.json 的內容,這是 Kubelet 配置檔案的位置信息。
  4. 開啟 Kubelet 配置檔:
    cat /etc/kubernetes/kubelet/kubelet-config.json
  5. 驗證 "eventRecordQPS" 是否設為 0 或其他適合叢集的級別。
Audit Method 2:
如果使用 API configz 端點,請透過從執行 Kubelet 的節點提取即時配置來搜尋 eventRecordQPS 的狀態。
  1. 設定本地 Proxy 通訊埠及以下變數,並提供 Proxy 通訊埠號碼和節點名稱:
    • HOSTNAME_PORT="localhost-和-端口號"
    • NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" 來自 "kubectl get nodes" 的輸出
    kubectl proxy --port=8001 & 
    
    export HOSTNAME_PORT=localhost:8001 (example host and port number) 
    export NODE_NAME=ip-192.168.31.226.aks.internal (example node name 
    from "kubectl get nodes") 
    
    curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"

矯正性處理

Remediation Method 1:
如果修改 Kubelet 配置文件,請編輯 /etc/kubernetes/kubelet/kubelet-config.json 並將以下參數設置為 5 或大於或等於 0 的值:
"eventRecordQPS": 5
檢查 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 是否未定義 eventRecordQPS 的可執行參數,因為這會覆蓋您 Kubelet 的配置。
Remediation Method 2:
如果使用可執行參數,請在每個工作節點上編輯 Kubelet 服務檔案 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf,並在 KUBELET_ARGS 變數字串的末尾添加以下參數:
--eventRecordQPS=5
Remediation Method 3:
如果使用 API configz 端點,請透過從執行 Kubelet 的節點提取即時配置來搜尋 "eventRecordQPS" 的狀態。
Kubernetes 文件中查看 configmap 步驟,然後重新執行審核過程中的 curl 命令以檢查 kubelet 配置變更:
     kubectl proxy --port=8001 &
     
     export HOSTNAME_PORT=localhost:8001 (example host and port number) 
     export NODE_NAME=ip-192.168.31.226.aks.internal (example node name from 
     "kubectl get nodes")
     
     curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
    
For all three remediations:
重新啟動kubelet服務並檢查狀態:
     systemctl daemon-reload
     systemctl restart kubelet.service
     systemctl status kubelet -l