設定檔適用性:等級 1 - 工作節點
停用對 Kubelet 伺服器的匿名驗證可增強 Kubernetes 工作節點的安全性,確保所有請求都需要驗證,從而減少未經授權的訪問風險。
影響
匿名請求將被拒絕。
稽核
稽核方法 1:
重要Kubelets 可以透過配置檔案或命令列參數進行配置。命令列參數的優先級高於配置檔案中設定的相同參數。在審核 Kubelet 配置時,請確保檢查命令列參數和配置檔案條目。
|
-
SSH進入每個節點並執行以下命令,以查看活躍的Kubelet進程的詳細信息,包括命令行參數:
ps -ef | grep kubelet
-
從輸出中識別由 --config 參數指定的配置檔案位置資訊。使用以下方式查看檔案:
sudo less /path/to/kubelet-config.json
-
確認已停用匿名驗證:
-
檢查命令列參數:
--anonymous-auth=false
-
在 Kubelet 配置檔案中,確保存在以下設定:
{ "authentication": { "anonymous": { "enabled": false } } }
-
稽核方法 2:
使用 kubectl 通過 Kubernetes API 的 "/configz" 端點檢查 Kubelet 的運行配置:
-
在您的叢集中發現所有節點:
kubectl get nodes
-
使用 kubectl 在本地端口(例如 8080)啟動 Proxy:
kubectl proxy --port=8080
-
在另一個終端中,為每個節點執行以下命令:
export NODE_NAME=my-node-name curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz -
透過檢查 API 回應中的以下項目,確認匿名驗證已被停用:
{ "authentication": { "anonymous": { "enabled": false } } }
補救
方法一:
-
SSH 進入每個節點。
-
如果使用 Kubelet 配置檔案,請找到該檔案:
ps -ef | grep kubelet
-
使用以下方式查看配置檔案:
sudo less /path/to/kubelet-config.json
-
透過在配置檔案中設定以下參數來關閉匿名驗證:
{ "authentication": { "anonymous": { "enabled": false } } } -
重新啟動 kubelet 服務並檢查其狀態(適用於使用 systemd 的系統範例):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
方法二:
-
如果使用命令列參數,請編輯 kubelet 服務檔案以包含:
--anonymous-auth=false
-
對於使用 systemd 的系統,請編輯位於 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 的檔案。
-
重新啟動 kubelet 服務並檢查其狀態(適用於使用 systemd 的系統範例):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
