ビュー:
プロファイル適用性: レベル1
kubeletが実行中で、kubeconfigファイルによって設定されている場合、プロキシkubeconfigファイルの権限が644またはそれよりも制限されていることを確認してください。
kubelet kubeconfigファイルは、ワーカーノードのkubeletサービスのさまざまなパラメータを制御します。ファイルの整合性を維持するために、ファイルの権限を制限する必要があります。ファイルはシステムの管理者のみが書き込み可能であるべきです。kubeletをファイルの代わりにKubernetesのConfigMapとして構成されたkubeconfigパラメータで実行することも可能です。この場合、プロキシkubeconfigファイルは存在しません。
注意
注意
Azure AKS のドキュメントでデフォルト値を確認してください。

監査

Method 1
  1. ワーカーノードにSSHで接続します。
  2. Kubeletサービスが実行中かどうかを確認するには、次のコマンドを入力してください。
    sudo systemctl status kubelet
    出力はActive: active (running)を返す必要があります。
  3. 各ノードで次のコマンドを実行して、適切なkubeconfigファイルを見つけてください。
    ps -ef | grep kubelet
    出力は、kubeconfigファイルの場所を示す--kubeconfig /var/lib/kubelet/kubeconfigに類似したものを返す必要があります。
  4. このコマンドを実行してkubeconfigファイルの権限を取得してください:
    stat -c %a /var/lib/kubelet/kubeconfig
  5. ファイルが指定されていて存在する場合、パーミッションが644またはそれよりも制限されていることを確認してください。
Method 2
特権ポッドを作成して実行
  1. ホストのファイルシステムにアクセスするために十分な特権を持つポッドを実行します。これを行うには、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
          
  2. これをファイル (例: file-check-pod.yaml) に保存し、ポッドを作成してください。
    kubectl apply -f file-check-pod.yaml
  3. ポッドが実行されたら、ノード上のファイル権限を確認するためにexecでアクセスしてください。
    kubectl exec -it file-check -- sh
  4. 現在、ポッド内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
    ls -l /host/var/lib/kubelet/kubeconfig
  5. ファイルが指定されていて存在する場合、パーミッションが644またはそれよりも制限されていることを確認してください。

修復

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。
chmod 644 <kubeconfig file>