プロファイルの適用範囲:レベル1 - ワーカーノード
--authorization-mode
引数がAlwaysAllow
に設定されていないことを確認し、明示的な認可を有効にすることでセキュリティを強化してください。apiserverからの明示的な認可チェックなしで、すべての認証済みリクエスト(匿名リクエストを含む)を許可するように構成されたKubeletsは、セキュリティリスクを引き起こす可能性があります。明示的に認可されたリクエストのみが許可されるようにこの動作を制限することが重要です。より制限的な設定に--authorization-mode
を設定することで、認可されていないリクエストがシステム的に拒否され、Kubernetes環境のセキュリティが強化されます。」影響
不正なリクエストは拒否されます。
監査
監査方法1:
注意Kubeletは、設定ファイルまたはコマンドライン引数を介して構成できます。コマンドライン引数が優先されます。Kubeletの構成を監査する際には、コマンドライン引数と構成ファイルのエントリの両方を確認してください。
|
-
各ノードにSSH接続し、アクティブなKubeletプロセスの詳細を表示するには、次のコマンドを実行してください
ps -ef | grep kubelet
-
--config引数から設定ファイルの場所を特定し、出力からファイルを表示します
sudo less /path/to/kubelet-config.json
-
Webhook認証が有効になっていることを確認してください
-
Kubeletサービスへのコマンドライン引数:
--authentication-token-webhook
-
Kubelet設定ファイルで:
{ "authentication": { "webhook": { "enabled": true } } }
-
-
認証モードがWebHookに設定されていることを確認してください
-
Kubeletサービスへのコマンドライン引数:
--authorization-mode=Webhook
-
Kubelet設定ファイルで:
{ "authorization": { "mode": "Webhook" } }
-
監査方法2:
kubectlを使用して、Kubernetes APIの"/configz"エンドポイントを介してKubeletの実行構成を確認してください
-
クラスター内のすべてのノードを検出します:
kubectl get nodes
-
ローカルポート(例:8080)でkubectlを使用してプロキシを開始します
kubectl proxy --port=8080
-
別のターミナルで、各ノードに対して以下のコマンドを実行してください
export NODE_NAME=my-node-name curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz
-
API 対応を確認するには、Webhook認証が有効になっていることを確認してください
{ "authentication": { "webhook": { "enabled": true } } }
-
API 対応を確認するには、認証モードがWebHookに設定されていることを確認してください
{ "authorization": { "mode": "Webhook" } }
修復
方法1:
-
各ノードにSSH接続してください。
-
Kubeletの設定ファイルを検索してください:
ps -ef | grep kubelet
-
設定ファイルを表示するには、次を使用してください:
sudo less /path/to/kubelet-config.json
-
以下のパラメータを設定して、Webhook認証を有効にします
{ "authentication": { "webhook": { "enabled": true } }, "authorization": { "mode": "Webhook" } }
-
kubeletサービスを再起動し、そのステータスを確認してください(systemdを使用するシステムの例):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
メソッド2:
-
コマンドライン引数を使用する場合は、kubeletサービスファイルを編集して、次のパラメーターを含めてください
--authentication-token-webhook --authorization-mode=Webhook
-
systemdを使用するシステムの場合、/ etc/systemd/system/kubelet .service.d / 10-kubelet-args.confにあるファイルを編集してください。
-
kubeletサービスを再起動し、そのステータスを確認してください(systemdを使用するシステムの例):
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l