ビュー:
プロファイル適用性: レベル1
すべてのリクエストを許可しないでください。明示的な承認を有効にしてください。
デフォルトでは、Kubeletはすべての認証済みリクエスト (匿名リクエストも含む) をapiserverからの明示的な認可チェックなしで許可します。この動作を制限し、明示的に認可されたリクエストのみを許可するべきです。
注意
注意
Azure AKSのドキュメントでデフォルト値を確認してください。

影響

不正なリクエストは拒否されます。

監査

Audit Method 1:
Kubelet構成ファイルを使用している場合、"authentication": { "webhook": { "enabled": true }のエントリがあることを確認してください。
  1. 該当するノードにSSHで接続し、次のコマンドを実行してKubeletの設定ファイルを見つけてください。
    ps -ef | grep kubelet
    出力は、Kubeletの設定ファイルの場所である--config /etc/kubernetes/kubelet/kubelet-config.jsonに類似したものを返す必要があります。
  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. ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください。
    • 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の設定ファイルを変更する場合、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ステートメントを再実行して構成変更を確認してください。
"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