プロファイル適用性: レベル1
kubelet
が実行中で、kubeconfigファイルによって設定されている場合、プロキシkubeconfigファイルの権限が644またはそれよりも制限されていることを確認してください。kubelet
kubeconfigファイルは、ワーカーノードのkubelet
サービスのさまざまなパラメータを制御します。ファイルの整合性を維持するために、ファイルの権限を制限する必要があります。ファイルはシステムの管理者のみが書き込み可能であるべきです。kubelet
をファイルの代わりにKubernetesのConfigMapとして構成されたkubeconfigパラメータで実行することも可能です。この場合、プロキシkubeconfigファイルは存在しません。![]() |
注意Azure AKS のドキュメントでデフォルト値を確認してください。
|
監査
Method 1-
ワーカーノードにSSHで接続します。
-
Kubeletサービスが実行中かどうかを確認するには、次のコマンドを入力してください。
sudo systemctl status kubelet
出力はActive: active (running)
を返す必要があります。 -
各ノードで次のコマンドを実行して、適切なkubeconfigファイルを見つけてください。
ps -ef | grep kubelet
出力は、kubeconfigファイルの場所を示す--kubeconfig /var/lib/kubelet/kubeconfig
に類似したものを返す必要があります。 -
このコマンドを実行してkubeconfigファイルの権限を取得してください:
stat -c %a /var/lib/kubelet/kubeconfig
-
ファイルが指定されていて存在する場合、パーミッションが644またはそれよりも制限されていることを確認してください。
特権ポッドを作成して実行
-
ホストのファイルシステムにアクセスするために十分な特権を持つポッドを実行します。これを行うには、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ディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
ls -l /host/var/lib/kubelet/kubeconfig
-
ファイルが指定されていて存在する場合、パーミッションが644またはそれよりも制限されていることを確認してください。
修復
各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。
chmod 644 <kubeconfig file>