ビュー:
プロファイル適用性: レベル1
すべてのリクエストを許可しないでください。明示的な承認を有効にしてください。
Kubeletはデフォルトで、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を実行しているノードからライブ構成を抽出して、認証... "webhook":{"enabled":true}のステータスを検索してください。
  1. ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください: 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 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を再構成するを参照し、監査プロセスから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