別のユーザーとしてコンテナイメージを実行するためのベストプラクティス

別のユーザーとしてコンテナイメージを実行するためのベストプラクティス

Kubernetes を使用しており、非 root ユーザーとしてコンテナを実行したいと考えています。

独自の Dockerfile を記述する場合は、、、useraddchmod 777docker で実行できます--user <username>

しかし、場合によっては、chmod' する必要のあるファイルのリストが長くて不明なため、面倒なプロセスになり、時間の経過とともに変化し、実行時にのみ見つかるエラーが発生する可能性があります。

ベストプラクティスはありますか?/var/logやのようなフォルダーをどのように処理しますか/var/run? 1 つのオプションは、 touch/mkdir して を使用することですsetfacl

最も簡単なのは、 ですchmod 777 -R /var/log

しかし、そうするとコンテナは777ホストにもアクセスできるようになるのでしょうか? コンテナに 1 セットの権限があり、ホストに別の権限がある場合、どのようにマッピングされるのでしょうか?

答え1

使用することはchmod 777、基本的に決して正しい解決策ではありません。権限を正しく設定する方法を理解してください。権限は、ほとんどの場合、目的を達成するために最小限に抑える必要があります。

それをどうやって行うかは、特定のイメージのコンテキストと、実行しているソフトウェアによって大きく異なります。

しかし、そうするとコンテナ 777 にホスト上のアクセス権も付与されるのでしょうか?

権限を変更するパスがバインド マウントであるか、またはバインド マウントになるかによって異なります。

答え2

これは私自身の質問に関連していると思いました:

オーバーレイ ファイル システムは、下位ディレクトリをマウントし、次に上位ディレクトリをマージされたマウント ポイントに接続します。プロセスがマージされたディレクトリに新しいファイルを書き込むと、新しいファイルは上位ディレクトリに書き込まれます。プロセスが下位ディレクトリの既存のファイルを変更すると、カーネルはファイルを下位ディレクトリから上位ディレクトリにコピーし、プロセスが上位ディレクトリのファイルを変更できるようにします。

したがってchown、オーバーレイ (上位) ディレクトリはホスト (下位) ディレクトリに影響を与えません。

chmod 777しかし、他のユーザーがホスト上のオーバーレイ ファイルシステムにアクセスできるようにすることはできると思います。

関連情報