minikube VM 共有フォルダーは、クラスターのオンライン使用に対して安全ですか?

minikube VM 共有フォルダーは、クラスターのオンライン使用に対して安全ですか?

私は VirtualBox ハイパーバイザーを搭載した MacOSX ホストで minikube を実行しています。ホストとフォルダー (/Users) を共有しています。これは何のためにあるのでしょうか。また、クラスターをオンラインで実行するのに十分安全なのでしょうか。

コンテナから脱出し、ポッドから脱出し、VM から脱出するのは難しいと思いますが、私は簡単にそこにアクセスできました。minikube ssh共有フォルダーや、シェルでホストを探索できることに気づいていませんでした。

答え1

いいえ、安全ではありません。Dockerfile で USER デーモン ディレクティブを使用してビルドされたコンテナ イメージを使用してポッドがデプロイされ、コンテナがデーモン ユーザーで実行されることを想像してください。攻撃者がイメージ レジストリにアクセスし、同じタグで別のイメージをプッシュするとどうなるでしょうか。攻撃者のイメージは、ルート ユーザーとして実行するように構成されています。Kubernetes がポッドの新しいインスタンスをスケジュールすると、Kubelet は攻撃者のイメージをダウンロードし、そこに挿入されたコードを実行します。コンテナはホスト システムからほとんど分離されていますが、プロセスをルートとして実行することは依然として悪い習慣と見なされています。たとえば、ホスト ディレクトリがコンテナにマウントされている場合、コンテナで実行されているプロセスがルートとして実行されている場合、マウントされたディレクトリに完全にアクセスできますが、非ルートとして実行されている場合はアクセスできません。前述の攻撃シナリオを防ぐには、次のリストに示すように、ポッドのコンテナを非ルート ユーザーとして実行する必要があることを指定できます。

apiVersion: v1
kind: Pod
metadata:
  name: pod-run-as-non-root
spec:
  containers:
  - name: main
    image: alpine
    command: ["/bin/sleep", "999999"]
    securityContext:
      runAsNonRoot: true

関連情報