檢視次數:
設定檔適用性:等級 1
請勿允許所有請求。啟用明確授權。
Kubelets 預設允許所有已驗證的請求(即使是匿名的)而不需要 apiserver 的明確授權檢查。您應該限制此行為,僅允許明確授權的請求。
注意
注意
請參閱 Azure AKS 文件以獲取預設值。

影響

未經授權的請求將被拒絕。

稽核

Audit Method 1:
如果使用 Kubelet 配置檔案,請檢查是否有 "authentication": { "webhook": { "enabled": true } 的條目。
  1. SSH 到相關節點並執行以下命令以查找 Kubelet 配置文件:
    ps -ef | grep kubelet
    輸出應返回類似於 --config /etc/kubernetes/kubelet/kubelet-config.json 的內容,這是 Kubelet 配置檔案的 位置資訊。
  2. 打開 Kubelet 配置文件:
    sudo more /etc/kubernetes/kubelet/kubelet-config.json
  3. 確認 "authentication": {"webhook": {"enabled": true}} 存在,並且 "authentication": {"mode": { 未設定為 AlwaysAllow
    如果存在 "authentication": {"mode": { 參數,請檢查其未設置為 AlwaysAllow。如果不存在,請檢查是否有由 --config 指定的 Kubelet 配置文件,並且該文件將 "authentication": {"mode": { 設置為非 AlwaysAllow 的其他值。
Audit Method 2:
如果使用 API configz 端點,請考慮透過從運行 Kubelet 的節點提取即時配置來搜尋 "authentication"... "webhook":{"enabled":true} 的狀態。
  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 配置檔案,請編輯 kubelet-config.json 檔案 /etc/kubernetes/kubelet/kubelet-config.json,並確保參數設置正確:
"authentication"... "webhook":{"enabled":true
Remediation Method 2:
如果使用可執行參數,請在每個工作節點上編輯 Kubelet 服務檔案 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf,並在 KUBELET_ARGS 變數字串中新增以下內容:
--authorization-mode=Webhook
Remediation Method 3:
如果使用 API configz 端點,請透過從執行 Kubelet 的節點提取即時配置,確認 "authentication.*webhook":{"enabled":true} 是否存在。
在運行中的叢集中重新配置節點的Kubelet中查看逐步的configmap程序,並重新運行審核過程中的curl語句以檢查配置更改:
"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