ビュー:
プロファイル適用性: レベル1
kubeletが--config引数で設定ファイルを参照する場合、そのファイルの権限が644またはそれよりも制限されていることを確認してください。
kubeletは、--config引数で指定された設定ファイルから、セキュリティ設定を含むさまざまなパラメータを読み取ります。このファイルが指定されている場合、ファイルの整合性を維持するためにファイルのアクセス許可を制限する必要があります。ファイルはシステムの管理者のみが書き込み可能であるべきです。
注意
注意
AWS EKS のドキュメントでデフォルト値を確認してください。

監査

方法 1
  1. 関連するワーカーノードにSSH接続します。
  2. Kubeletサービスが実行中かどうかを確認するには、次のコマンドを入力してください:
    sudo systemctl status kubelet
    出力はActive: active (running) since..を返す必要があります。
  3. 各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください:
    ps -ef | grep kubelet
    上記のコマンドの出力は、Kubeletの設定ファイルの場所である--config/etc/kubernetes/kubelet/kubelet-config.jsonに類似したものを返すはずです。
  4. このコマンドを実行してKubelet構成ファイルの権限を取得します:
    stat -c %a /etc/kubernetes/kubelet/kubelet-config.json
  5. 権限が644またはそれよりも制限されていることを確認してください。
方法 2
特権ポッドを作成して実行
  1. ホストのファイルシステムにアクセスするために十分な特権を持つポッドを実行します。これを行うには、hostPathボリュームを使用してノードのファイルシステムをポッドにマウントするポッドをデプロイします。
    ホストのルートをポッド内の /host にマウントするシンプルなポッド定義の例:
    apiVersion: v1
    kind: Pod
    metadata:
      name: file-check
    spec:
      volumes:
      - name: host-root
        hostPath:
          path: /
          type: Directory
      containers:
      - name: nsenter
        image: busybox
        command: ["sleep", "3600"]
        volumeMounts:
        - name: host-root
          mountPath: /host
        securityContext:
          privileged: true
  2. これをファイル (例: file-check-pod.yaml) に保存して、ポッドを作成してください:
    kubectl apply -f file-check-pod.yaml
  3. ポッドが実行されている場合、ノード上のファイル権限を確認するためにexecでアクセスしてください。
    kubectl exec -it file-check -- sh
  4. 現在、ポッド内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
    ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
  5. ファイルが指定されていて存在する場合、パーミッションが644またはそれより厳しいことを確認してください。

修復

次のコマンドを実行します (監査ステップで特定された構成ファイルの場所を使用):
chmod 644 /etc/kubernetes/kubelet/kubelet-config.json