プロファイル適用性: レベル1
kubeletが
--config
引数で設定ファイルを参照する場合、そのファイルがroot:root
によって所有されていることを確認してください。kubeletは、
--config
引数で指定された設定ファイルから、セキュリティ設定を含むさまざまなパラメータを読み取ります。このファイルが指定されている場合、ファイルの整合性を維持するためにファイルの権限を制限する必要があります。ファイルはシステムの管理者のみが書き込み可能であるべきです。![]() |
注意デフォルト値については、AWS EKSのドキュメントを参照してください。
|
監査
方法 1
- 関連するワーカーノードにSSH接続します。
- Kubeletサービスが実行中かどうかを確認するには、次のコマンドを入力してください:
sudo systemctl status kubelet
出力はActive: active (running) since..
を返す必要があります。 - 各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。
ps -ef | grep kubelet
上記のコマンドの出力は、Kubeletの設定ファイルの場所である--config/etc/kubernetes/kubelet/kubelet-config.json
に類似したものを返すはずです。 - このコマンドを実行してKubelet構成ファイルの所有権を取得します:
stat -c %U:%G /etc/kubernetes/kubelet/kubelet-config.json
-
所有権が
root:root
に設定されていることを確認してください。
方法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
- 現在、ポッド内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、azure.jsonファイルの所有権を確認できます:
ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
- 所有権が
root:root
に設定されていることを確認してください。
修復
次のコマンドを実行してください (監査ステップで特定された設定ファイルの場所を使用):
chown root:root /etc/kubernetes/kubelet/kubelet-config.json