プロファイル適用性: レベル1
すべてのリクエストを許可しないでください。明示的な承認を有効にしてください。
デフォルトでは、Kubeletはすべての認証済みリクエスト (匿名リクエストも含む) をapiserverからの明示的な認可チェックなしで許可します。この動作を制限し、明示的に認可されたリクエストのみを許可するべきです。
![]() |
注意Azure AKSのドキュメントでデフォルト値を確認してください。
|
影響
不正なリクエストは拒否されます。
監査
Audit Method 1:
Kubelet構成ファイルを使用している場合、
"authentication": { "webhook": { "enabled": true }
のエントリがあることを確認してください。-
該当するノードにSSHで接続し、次のコマンドを実行してKubeletの設定ファイルを見つけてください。
ps -ef | grep kubelet
出力は、Kubeletの設定ファイルの場所である--config /etc/kubernetes/kubelet/kubelet-config.json
に類似したものを返す必要があります。 -
Kubeletの設定ファイルを開く:
sudo more /etc/kubernetes/kubelet/kubelet-config.json
-
"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}
のステータスを検索することを検討してください。-
ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください。
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