プロファイル適用性: レベル1
kubeletの設定ファイルが存在する場合は、所有者が
root:root
であることを確認してください。kubeletは
--config
引数で指定された設定ファイルからセキュリティ設定を含む様々なパラメータを読み取ります。このファイルが指定されている場合、ファイルの整合性を維持するためにファイルのアクセス権を制限する必要があります。ファイルはroot:root
によって所有されるべきです。![]() |
注意デフォルトのファイル所有者は
root:root です。 |
影響
過度に許可されたファイルアクセスはプラットフォームのセキュリティリスクを高めます。
監査
Google Cloudコンソールを使用
- Kubernetes Engineに移動します。
- 目的のクラスターをクリックして詳細ページを開き、次に目的のノードプールをクリックしてノードプールの詳細ページを開きます。
- 目的のノードの名前をメモしてください。
- VMインスタンスに移動します。
- 目的のノードを見つけて、ノードへのSSH接続を開くために[SSH]をクリックしてください。
コマンドラインの使用
方法1: ワーカーノードにSSHする
- Kubeletサービスが実行されているか確認するには:
sudo systemctl status kubelet
- 出力は
Active: active (running) since...
を返す必要があります。各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。ps -ef | grep kubelet
- 上記のコマンドの出力は、Kubeletの設定ファイルの場所である
--config/etc/kubernetes/kubelet/kubelet-config.yaml
に類似したものを返すはずです。 - このコマンドを実行してください:
stat -c %U:%G /etc/kubernetes/kubelet/kubelet-config.yaml
- 上記のコマンドの出力は、Kubelet設定ファイルの所有権を示します。所有権が
root:root
に設定されていることを確認してください。
方法2: 特権ポッドを作成して実行する
- ホストのファイルシステムにアクセスするために十分な権限を持つPodを実行するには、hostPathボリュームを使用してノードのファイルシステムをPodにマウントするPodをデプロイします。以下は、ホストのルートをPod内の/hostにマウントするシンプルなPod定義の例です。
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
- これをファイル (例: file-check-pod.yaml) に保存して、ポッドを作成してください。
kubectl apply -f file-check-pod.yaml
- Podが実行されると、ノード上のファイル所有権を確認するためにPodにexecできます。
kubectl exec -it file-check -- sh
- 現在、ポッド内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの所有権を確認できます。
ls -l /etc/kubernetes/kubelet/kubelet-config.yaml
- 所有権が
root:root
に設定されていることを確認してください。
修復
監査手順で特定された設定ファイルの場所を使用して、以下のコマンドを実行してください。
chown root:root <kubelet_config_file>