プロファイル適用性: レベル2
セキュリティ関連情報は記録されるべきです。Kubeletの
--eventRecordQPSフラグを使用して、イベントが収集される速度を制限できます。これを低く設定しすぎると、関連するイベントが記録されない可能性がありますが、0の無制限設定はkubeletのサービス拒否を引き起こす可能性があります。イベントをすべて記録し、イベントの作成を制限しないことが重要です。イベントはセキュリティ情報と分析の重要な情報源であり、イベントデータを使用して環境が常に監視されていることを保証します。
注意AKSのドキュメントでデフォルト値を確認してください。
|
影響
このパラメータを0に設定すると、過剰なイベントが作成されることによりサービス拒否状態が発生する可能性があります。クラスターのイベント処理およびストレージシステムは、予想されるイベント負荷に対応できるようにスケーリングする必要があります。
監査
Audit Method 1-
各ノードへのSSH。
-
各ノードで次のコマンドを実行してKubeletプロセスを見つけてください。
ps -ef | grep kubelet
--eventRecordQPS引数に設定された値を確認し、クラスタに対して適切なレベルに設定されているかどうかを判断してください。すべてのイベントをキャプチャするためには、0の値を使用することができます。 -
--eventRecordQPS引数が存在しない場合、--configで指定されたKubelet設定ファイルがあるか確認し、その場所の値を確認してください。上記のコマンドの出力は、Kubelet設定ファイルの場所である--config /etc/kubernetes/kubelet/kubelet-config.jsonに似たものを返すはずです。 -
Kubelet設定ファイルを開く:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
eventRecordQPSのエントリがある場合は、それが0またはクラスタに適したレベルに設定されていることを確認してください。
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して
eventRecordQPSのステータスを検索してください。ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください:
HOSTNAME_PORT="localhost-and-port-number" NODE_NAME="The-Name-Of-Node-To-Extract-Configuration"
from the output of "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 1Kubeletの設定ファイルを変更する場合、
kubelet-config.jsonファイル/etc/kubernetes/kubelet/kubelet-config.jsonを編集し、以下のパラメータを5または0以上の値に設定してください。"eventRecordQPS": 5
/etc/systemd/system/kubelet.service.d/10-kubelet-args.confがeventRecordQPSの実行可能な引数を定義していないことを確認してください。これはKubeletの設定を上書きする可能性があります。実行可能な引数を使用する場合、各ワーカーノードの kubelet サービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf を編集し、KUBELET_ARGS 変数文字列の末尾に以下のパラメータを追加してください。--eventRecordQPS=5Remediation Method 3
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して
"eventRecordQPS"のステータスを検索してください。詳細な手順については、ライブクラスターでノードのKubeletを再構成するを参照し、監査プロセスから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
