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

影響

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

稽核

Audit Method 1
如果使用 Kubelet 配置檔案,請檢查是否有 "authentication": "webhook": "enabled" 的項目設置為 true
  1. SSH 到相關的節點。
  2. 在每個節點上執行以下命令以找到適當的 Kubelet 配置檔案:
    ps -ef | grep kubelet
    輸出應返回類似於 --config /etc/kubernetes/kubelet/kubelet-config.json 的內容,這是 Kubelet 配置檔案的 位置資訊。
  3. 打開 Kubelet 配置檔案:
    sudo more /etc/kubernetes/kubelet/kubelet-config.json
  4. 確認 "authentication": {"webhook": { "enabled": 設定為 true
    如果存在 "authentication": {"mode": 參數,請檢查其是否未設定為 AlwaysAllow。如果未存在,請檢查是否有由 --config 指定的 Kubelet 配置檔案,並確認該檔案將 "authentication": {"mode": 設定為非 AlwaysAllow
Audit Method 2
如果使用 api configz 端點,請透過從運行 kubelet 的節點中提取即時配置,搜尋 authentication... "webhook":{"enabled":true} 的狀態。
  1. 設定本地 Proxy 通訊埠及以下變數,並提供 Proxy 通訊埠號碼及節點名稱:HOSTNAME_PORT="localhost-and-port-number" NODE_NAME="The- Name-Of-Node-To-Extract-Configuration" 從 "kubectl get nodes" 的輸出中獲取
    kubectl proxy --port=8001 &
    
    export HOSTNAME_PORT=localhost:8001
    export NODE_NAME=ip-192.168.31.226.aks.internal
    
    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 語句以檢查 kubelet 配置變更:
kubectl proxy --port=8001 &

export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal

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