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

影響

過度に許可されたファイル権限はプラットフォームのセキュリティリスクを増大させます。

監査

Google Cloud Consoleを使用する
  1. Kubernetes Engineに移動します。
  2. 目的のクラスターをクリックして詳細ページを開き、次に目的のノードプールをクリックしてノードプールの詳細ページを開きます。
  3. 目的のノードの名前をメモしてください。
  4. VMインスタンスに移動します。
  5. 目的のノードを見つけて、ノードへのSSH接続を開くために[SSH]をクリックしてください。
コマンドラインの使用
方法1: ワーカーノードにSSH接続
  1. Kubeletサービスが実行されているか確認するには:
    sudo systemctl status kubelet
  2. 出力はActive: active (running) since...を返す必要があります。適切なkubeconfigファイルを見つけるために、各ノードで次のコマンドを実行してください。
    ps -ef | grep kubelet
  3. 上記のコマンドの出力は、kubeconfigファイルの場所である--kubeconfig/var/lib/kubelet/kubeconfigに類似したものを返す必要があります。
  4. このコマンドを実行してkubeconfigファイルの権限を取得してください。
    stat -c %a /var/lib/kubelet/kubeconfig
  5. 上記のコマンドの出力は、kubeconfigファイルの権限を示します。ファイルが指定されていて存在する場合、権限が644以上に制限されていることを確認してください。
方法2: 特権ポッドを作成して実行する
  1. ホストのファイルシステムにアクセスするために十分な権限を持つPodを実行するには、hostPathボリュームを使用してノードのファイルシステムをPodにマウントするPodをデプロイします。以下は、ホストのルートをPod内の/hostにマウントするシンプルなPod定義の例です。
    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 <proxy kubeconfig file>