設定檔適用性:等級 1
啟用 kubelet 伺服器憑證輪換。
RotateKubeletServerCertificate
使 kubelet 在引導其客戶端憑證後請求服務憑證,並在現有憑證過期時旋轉憑證。這種自動定期旋轉確保不會因憑證過期而導致停機,從而解決 CIA 安全三元組中的可用性問題。此建議僅適用於您讓 kubelet 從 API 伺服器獲取其憑證的情況。如果您的 kubelet 憑證來自外部授權機構/工具(例如密碼保險箱),則您需要自行處理憑證輪換。
![]() |
注意請參閱 Azure AKS 文件以獲取預設值。
|
稽核
Audit Method 1:
如果使用 Kubelet 配置檔案,請檢查是否有
RotateKubeletServerCertificate
的項目設置為 true
。-
SSH 到相關節點,並在每個節點上運行以下命令以找到適當的 Kubelet 配置文件:
ps -ef | grep kubelet
上述命令的輸出應返回類似於--config /etc/kubernetes/kubelet/kubelet-config.json
的內容,這是 Kubelet 配置檔案的 位置資訊。 -
開啟 Kubelet 配置檔:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
驗證
RotateKubeletServerCertificate
參數是否存在並設為true
。
Audit Method 2:
如果使用 API configz 端點,請考慮透過從運行 Kubelet 的節點中提取即時配置來搜尋
"RotateKubeletServerCertificate":true
的狀態。-
設定本地 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
並確保以下參數設為 true:"RotateKubeletServerCertificate":true
Remediation Method 2:
如果使用 Kubelet 配置檔,請編輯檔案以將
RotateKubeletServerCertificate 設定為 true
。如果使用可執行參數,請在每個工作節點上編輯 kubelet 服務檔案
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
,並在 KUBELET_ARGS
變數字串的末尾添加以下參數:--rotate-kubelet-server-certificate=true
Remediation Method 3:
如果使用 API configz 端點,請考慮透過從運行 kubelet 的節點中提取即時配置來搜尋
"RotateKubeletServerCertificate":
的狀態。在 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