ビュー:
プロファイル適用性: レベル2
セキュリティ関連情報は記録されるべきです。Kubeletの--eventRecordQPSフラグを使用して、イベントが収集される速度を制限できます。これを低く設定しすぎると、関連するイベントが記録されない可能性がありますが、0の無制限設定はkubeletのサービス拒否を引き起こす可能性があります。
すべてのイベントをキャプチャし、イベントの作成を制限しないことが重要です。イベントはセキュリティ情報と分析の重要な情報源であり、イベントデータを使用して環境が一貫してモニタされていることを保証します。
注意
注意
Azure AKSのドキュメントでデフォルト値を確認してください。

監査

Audit Method 1:
  1. 関連するノードにSSHで接続し、各ノードで次のコマンドを実行してKubeletプロセスを見つけてください。
    ps -ef | grep kubelet
  2. 上記のコマンドの出力で、--eventRecordQPS 引数に設定された値を確認し、クラスターに対して適切なレベルに設定されているかどうかを判断してください。すべてのイベントをキャプチャするには、値を0に設定することができます。
  3. --eventRecordQPS引数が存在しない場合、--configで指定されたKubelet設定ファイルがあることを確認し、この場所の値を確認してください。
    上記のコマンドの出力は、Kubeletの設定ファイルの場所である--config /etc/kubernetes/kubelet/kubelet-config.jsonに類似したものを返すはずです。
  4. Kubeletの設定ファイルを開く:
    cat /etc/kubernetes/kubelet/kubelet-config.json
  5. "eventRecordQPS"0またはクラスタに適した他のレベルに設定されていることを確認してください。
Audit Method 2:
APIのconfigzエンドポイントを使用する場合、Kubeletを実行しているノードからライブ構成を抽出してeventRecordQPSのステータスを検索してください。
  1. ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください。
    • 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 (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.confeventRecordQPSの実行可能な引数を定義していないことを確認してください。これは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