同じアカウントでコンテナを実行しているユーザーの分離

同じアカウントでコンテナを実行しているユーザーの分離

複数のユーザーがコンテナイメージを実行しています。同じスーパーコンピュータのユーザーアカウント( "サービスアカウント「)。各コンテナは機密データを含むフォルダをマウントします。あるサービスアカウントユーザーは別のサービスアカウントユーザーのデータにアクセスできません。解決策はそうではありません。ここでは機能しません。

一時tmpfsマウントファイルシステムを使用するBwrapは解決策になる可能性がありますが、残念ながらインストールされたコンテナランタイム(SingularityおよびSarus)のためにbwrapを使用できません。たとえば、Sarusは特定のファイルセットがルートの所有であることを確認しますが、bwrapはファイルが誰にも属さないように新しいユーザー名前空間を作成します(無許可のSingularityインストールが解決策であるかどうかはわかりません)。

私の考えは、コンテナが実行するファイルシステムの操作をtmpfsに敏感なファイルを格納するbwrap'edプロセスに「リダイレクト」することです。たとえば、コンテナがそのフォルダにファイルを書き込もうとすると、ファイルはすぐにbwrap'edプロセスに渡され、それはtmpfsに渡されます。あるいは、コンテナがディレクトリからファイルを読み取ろうとすると、bwrap'edプロセスはtmpfsからファイルを渡し、コンテナに直接渡します。各ファイルシステムを操作する前にシークレットを追加し、正しいシークレットが使用されている場合にのみファイルを配布するなど、アクセス制御がある可能性があります。

私の最初の考えは、そのディレクトリにインストールされたソケットを受け取るサーバーの種類を作成することでしたが、これが可能かどうかはわかりませんでした。

次に私はそれが簡単であることがわかりましたリダイレクト他のプロセスへのコマンド出力(例:

ls > /proc/5555/fd/1

私はこれが非常に簡単な解決策につながることができると思います。

解決策は次のとおりです。

  • コンテナは、bwrap'edプロセスにマウントされたフォルダから書き込み/フォルダに書き込みます

  • そのフォルダに「書き込まれた」すべてのファイルは、パスワードで始まりtmpfsにリダイレクトするbwrappedプロセス(シェルスクリプトなど)によって直接引き継がれ、他のユーザーに隠されます。

  • 代わりに、コンテナがこの偽のディレクトリからファイルを読み取ろうとすると、パスワードの前にも追加され、bwrap'edプロセスはファイルをtmpfsからコンテナに直接渡します。

リダイレクトなどの単純なコマンドを使用してこれを実行できると思いますが、理解できません。

フォルダ(または通常はマウントポイント)が上記の方法でプロセスの自動リダイレクタとして機能する方法を理解できません。

おそらく、私の解決策のアイデアも完全に誤解を招く可能性があり、この問題を解決するより良い方法があるかもしれません。すべての手がかりに満足しています。また、コンテナーを入れ子にして外部コンテナーに書き込み可能なレイヤーを置くことも検討しましたが、SingularityなどのHPCコンテナーランタイムではこれを達成するのは簡単ではありません。

各ソリューションは、sudo権限なしでユーザースペースで実行する必要があります。

編集:これは私が試したことです:

> bwrap --dev-bind / / --tmpfs ~/testfolder/sandbox/ bash
> sarus run debian cat /etc/os-release
[73526.403627484] [daint101-28645] [main] [ERROR] Error trace (most nested error last):
#0   checkThatPathIsRootOwned at "SecurityChecks.cpp":78 Path "/apps/daint/system/opt/sarus/1.3.2/etc/sarus.json" must be owned by root in order to prevent other users from tampering its contents. Found uid=65534, gid=65534.

または特異点を持っているか

> bwrap --dev-bind / / --tmpfs ~/testfolder/sandbox/ bash
> singularity exec ubuntu_latest.sif cat /etc/os-release
INFO:    Convert SIF file to sandbox...
FATAL:   while extracting ubuntu_latest.sif: root filesystem extraction failed: extract command failed: ERROR  : No setuid installation found, for unprivileged installation use: ./mconfig --without-suid
: exit status 1

ベストアンサー1

おすすめ記事