プロファイル適用性: レベル1
kubeletが実行中で、kubeconfigファイルによって設定されている場合、プロキシkubeconfigファイルの権限が644以上の制限であることを確認してください。kubelet kubeconfigファイルは、ワーカーノードのkubeletサービスの様々なパラメータを制御します。ファイルの整合性を維持するために、ファイルの権限を制限する必要があります。ファイルはシステムの管理者のみが書き込み可能であるべきです。kubeletをファイルではなくKubernetesのConfigMapとして構成されたkubeconfigパラメータで実行することが可能です。この場合、プロキシkubeconfigファイルは存在しません。
注意GKEのドキュメントでデフォルト値を確認してください。
|
影響
kubeconfigファイルの権限を644またはそれ以上に制限することで、Kubernetes環境のセキュリティ状態を大幅に強化し、不正な変更を防ぎます。これにより、
kubeconfigファイルへの書き込みアクセスが制限され、管理者のみが重要なkubelet設定を変更できるようになり、クラスターの整合性を損なう可能性のある悪意のある変更のリスクが軽減されます。ただし、この構成は、非管理者ユーザが
kubelet設定を迅速に調整する能力を制限するため、使いやすさにわずかに影響を与える可能性があります。管理者は、セキュリティニーズと運用の柔軟性をバランスさせる必要があり、
kubelet構成を管理するためのワークフローの調整が必要になる可能性があります。監査
Google Cloud Consoleを使用する
- Google CloudコンソールKubernetes EngineページにアクセスしてKubernetes Engineに移動します。
- 目的のクラスターをクリックして詳細ページを開き、次に目的のノードプールをクリックしてノードプールの詳細ページを開きます。3.
- 目的のノードの名前をメモしてください
- Google CloudコンソールのVMインスタンスページにアクセスして、VMインスタンスに移動します
- 目的のノードを見つけてSSHをクリックし、そのノードへのSSH接続を開いてください。
コマンドラインを使用する
方法1
ワーカーノードへのSSH。
kubeletサービスが実行中かどうかを確認するには:sudo systemctl status kubelet
出力は
Active: active (running) since..を返す必要があります各ノードで次のコマンドを実行して適切な
kubeconfigファイルを見つけてください。ps -ef | grep kubelet
上記のコマンドの出力は、
--kubeconfig /var/lib/kubelet/kubeconfigのようなものを返すはずです。これはkubeconfigファイルの場所です。このコマンドを実行して
kubeconfigファイルの権限を取得します。stat -c %a /var/lib/kubelet/kubeconfig
上記のコマンドの出力は
kubeconfigファイルの権限を示します。ファイルが指定されていて存在する場合、権限が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
Podが実行されている場合、ノード上のファイル権限を確認するためにexecできます。
kubectl exec -it file-check -- sh
現在、Pod内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
ls -l /host/var/lib/kubelet/kubeconfig
ファイルが指定されていて存在する場合、パーミッションが644以上に制限されていることを確認してください。
修復
各ワーカーノードで (システム上のファイルの場所に基づいて) 以下のコマンドを実行してください。例えば:
chmod 644 <kubeconfig file>
