ビュー:
プロファイル適用性: レベル1
Kubeletサーバへの匿名リクエストを無効にする。
有効にすると、他の設定された認証方法によって拒否されないリクエストは匿名リクエストとして扱われ、Kubeletサーバによって処理されます。アクセスを許可するために認証に依存し、匿名リクエストを許可しないようにするべきです。
注意
注意
Azure AKSのドキュメントでデフォルト値を確認してください。

影響

匿名リクエストは拒否されます。

監査

Audit Method 1:
Kubeletの設定ファイルを使用している場合、authentication: anonymous: enabledfalseに設定されていることを確認してください。
  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": { "anonymous": { "enabled": false } 引数が false に設定されていることを確認してください。
Audit Method 2:
  1. api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して、authentication... "anonymous":{"enabled":false}のステータスを検索することを検討してください。
  2. ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください。
    • 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を編集し、以下のパラメータをfalseに設定してください。
"anonymous": "enabled": false
Remediation Method 2:
実行可能な引数を使用する場合、各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf を編集し、KUBELET_ARGS 変数文字列の末尾に以下のパラメータを追加してください。
--anonymous-auth=false
Remediation Method 3:
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して、"authentication.*anonymous":{"enabled":false}"のステータスを検索することを検討してください。
**ライブクラスターでノードのKubeletを再構成する際の詳細な手順を参照し、その後、監査プロセスから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