ビュー:
プロファイル適用性: レベル1 - ワーカーノード
Kubeletサーバへの匿名認証を無効にすることで、すべてのリクエストに認証が必要となり、Kubernetesワーカーノードのセキュリティが強化され、許可されていないアクセスのリスクが軽減されます。

影響

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

監査

監査方法1:
重要
重要
Kubeletは、設定ファイルまたはコマンドライン引数を使用して構成できます。コマンドライン引数は、設定ファイルで設定された同じパラメータよりも優先されます。Kubeletの設定を監査する際は、コマンドライン引数と設定ファイルのエントリの両方を確認してください。
  1. 各ノードにSSHで接続し、次のコマンドを実行して、コマンドライン引数を含むアクティブなKubeletプロセスの詳細を表示します。
    ps -ef | grep kubelet
  2. --config引数で指定された出力から設定ファイルの場所を特定します。ファイルを表示するには、次を使用します:
    sudo less /path/to/kubelet-config.json
  3. 匿名認証が無効になっていることを確認してください:
    • コマンドライン引数を確認してください:
      --anonymous-auth=false
    • Kubelet設定ファイルに、次の設定が含まれていることを確認してください。
              {
              "authentication": {
              "anonymous": {
              "enabled": false
              }
              }
              }
             
監査方法2:
kubectlを使用してKubernetes APIの"/configz"エンドポイントを介してKubeletの実行中の構成を確認します。
  1. クラスター内のすべてのノードを発見する:
    kubectl get nodes
  2. ローカルポート (例: 8080) でkubectlを使用してプロキシを開始します。
    kubectl proxy --port=8080
  3. 別のターミナルで、各ノードに対して次のコマンドを実行してください。
    export NODE_NAME=my-node-name
          curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz
  4. API対応で次の項目を確認し、匿名認証が無効になっていることを確認してください。
          {
          "authentication": {
          "anonymous": {
          "enabled": false
          }
          }
          }
         

修復

方法 1:
  1. 各ノードにSSHで接続してください。
  2. Kubelet構成ファイルを使用する場合、ファイルを見つけてください。
    ps -ef | grep kubelet
  3. 次のコマンドで設定ファイルを表示します:
    sudo less /path/to/kubelet-config.json
  4. 構成ファイルで次のパラメータを設定して匿名認証を無効にします。
          {
          "authentication": {
          "anonymous": {
          "enabled": false
          }
          }
          }
         
  5. kubeletサービスを再起動し、そのステータスを確認します (systemdを使用しているシステムの例):
    systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l
方法2:
  1. コマンドライン引数を使用する場合、kubeletサービスファイルを編集して以下を含めてください:
    --anonymous-auth=false
  2. systemdを使用しているシステムの場合、/etc/systemd/system/kubelet.service.d/10-kubelet-args.confにあるファイルを編集してください。
  3. kubeletサービスを再起動し、そのステータスを確認します (systemdを使用しているシステムの例):
    systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l