プロファイル適用性: レベル1
kubelet構成ファイルが存在する場合、権限が644に設定されていることを確認する。
kubeletは、
--config引数で指定された設定ファイルからセキュリティ設定を含むさまざまなパラメータを読み取ります。このファイルが存在する場合、ファイルの整合性を維持するためにファイルの権限を制限する必要があります。このファイルは、システムの管理者のみが書き込み可能であるべきです。
注意kubelet構成ファイルのデフォルトの権限は600です。
|
影響
過度に許可されたファイルアクセスは、プラットフォームのセキュリティリスクを高めます。
監査
Google Cloud Consoleを使用する
- 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-config.yamlに類似したものを返すはずです。 - 次のコマンドを実行します。
stat -c %a /etc/kubernetes/kubelet-config.yaml
- 上記のコマンドの出力はKubelet設定ファイルの権限です。権限が644以上の制限であることを確認してください。
方法2: 特権ポッドを作成して実行する
- ホストのファイルシステムにアクセスするために十分な権限を持つポッドを実行するには、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
- これをファイル (例: file-check-pod.yaml) に保存し、ポッドを作成します。
kubectl apply -f file-check-pod.yaml
- ポッドが実行されているときに、その中にexecしてノード上のファイル所有権を確認できます。
kubectl exec -it file-check -- sh
- 現在、Pod内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
ls -l /host/etc/kubernetes/kubelet-config.yaml
- ファイルが指定されていて存在する場合、パーミッションが644またはそれより制限されていることを確認してください。
修復
次のコマンドを実行してください (kubelet設定ファイルの場所を使用):
chmod 644 <kubelet_config_file>
