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

影響

この構成は、特定の機能や迅速なトラブルシューティングのために匿名アクセスに依存しているユーザの利便性にわずかな影響を与える可能性があります。さらに、各リクエストに対する追加の認証手順により、パフォーマンスに最小限のオーバーヘッドが発生する可能性があります。

監査

監査方法1:
Kubeletsは設定ファイルを介して設定を受け入れることができ、場合によってはCommand Line引数を介して設定を受け入れることもできます。Command Line引数として提供されたパラメータは、設定ファイル内の対応するパラメータを上書きすることに注意してください。詳細については、Kubelet CLIレファレンス/参照情報--configの詳細を参照してください。どの設定パラメータがCommand Line引数として提供できるかも確認できます。
これを念頭に置いて、Kubeletの設定を監査する際には、Command Line引数の存在と設定ファイルのエントリを確認することが重要です。
  1. 各ノードにSSHで接続し、次のコマンドを実行してKubeletプロセスを見つけます。
    ps -ef | grep kubelet
    上記のコマンドの出力は、アクティブなKubeletプロセスの詳細を提供します。これにより、プロセスに提供されたCommand Line引数を確認できます。また、--config引数で指定された設定ファイルの場所にも注意してください。これは設定を確認するために必要です。
  2. ファイルはmorelessのようなコマンドで表示できます。
    sudo less /path/to/kubelet-config.json
  3. 匿名認証が有効になっていないことを確認してください。これは、kubeletサービスへのCommand Line引数として--anonymous-auth=falseを使用するか、kubelet設定ファイルで"authentication": { "anonymous": { "enabled": false } }を通じて設定できます。
監査方法2:
Kubernetes APIの/configzエンドポイントを通じて、Kubeletの実行中の設定を確認することも可能です。これはkubectlを使用してAPIへのリクエストをプロキシすることで実現できます。
  1. 次のコマンドを実行して、クラスター内のすべてのノードを発見してください。
    kubectl get nodes
  2. kubectlを使用して任意のローカルポートでプロキシを開始します。この例では8080を使用します。
    kubectl proxy --port=8080
  3. これを実行した状態で、別のターミナルで各ノードに対して次のコマンドを実行してください。
    export NODE_NAME=my-node-name
    curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz
    curlコマンドは、Kubelet構成を表すJSON形式の文字列であるAPI対応を返します。
  4. "authentication": { "anonymous": { "enabled": false } }がAPI対応に含まれていることを確認して、匿名認証が有効になっていないことを確認してください。

修復

修復方法1:
  1. Kubelet設定ファイルを使用して構成する場合、各ノードにSSHで接続し、次のコマンドを実行してkubeletプロセスを見つけてください。
    ps -ef | grep kubelet
    出力にはアクティブなkubeletプロセスの詳細が含まれており、--config引数でkubeletサービスに提供された設定ファイルの場所が確認できます。
  2. ファイルはmorelessのようなコマンドで表示できます。
    sudo less /path/to/kubelet-config.json
  3. 次のパラメータを設定して匿名認証を無効にします:
    "authentication": { "anonymous": { "enabled": false } }
修復方法2:
実行可能な引数を使用する場合、各ワーカーノードのkubeletサービスファイルを編集し、以下のパラメータがKUBELET_ARGS変数文字列の一部であることを確認してください。
systemdを使用するシステム、例えばAmazon EKS Optimised Amazon LinuxやBottlerocket AMIsの場合、このファイルは/etc/systemd/system/kubelet.service.d/10-kubelet-args.confにあります。それ以外の場合は、選択したOSのドキュメントを参照して、どのサービスマネージャが設定されているかを確認する必要があります。
--anonymous-auth=false
両方の修復手順について:
お使いのシステムに基づいて、kubeletサービスを再起動し、サービスの状態を確認してください。以下の例は、Amazon EKS Optimised Amazon LinuxやBottlerocket AMIなど、systemdを使用するOS向けであり、systemctlコマンドを呼び出します。systemctlが利用できない場合は、選択したOSのドキュメントを調べて、どのサービスマネージャが設定されているかを確認する必要があります。
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l