私は現在、安全なサンドボックス環境で信頼できないプログラム(学生の割り当て)を評価するプロジェクトを開始しています。主なアイデアは、Lxc-utilsの周りにGlassFishとJavaラッパー用のWebアプリを作成して、LXCコンテナーを管理することです。待機中のプログラムのキューがあり、Javaラッパーは固定数(プール)のLXCコンテナーを維持し、各プログラムに1つの(未使用の)コンテナーを割り当てます。
ホストシステムを保護するには、各コンテナーをSELinuxで保護する必要があります。
私の質問は、サンドボックス環境用にそのようなメカニズムを作成するのは良い考えですか、それともこの問題に対するより適切な解決策はありますか?それは軽く、学生の創造性に対して安全でなければなりません。
LXCは最も安全な仮想化ソリューションではないため、なぜLXCを選択したのかについては説明していません。私はKVM/XENとLXCのヘビーユーザーであり、セキュリティに関してはLinuxコンテナーを使用することは決してないということを1つ言えます(LXC/OpenVZ/VServerに関係なく)。 KVM/XENを使用すると、より簡単に(そしてより信頼性が高く)なります。
それがパフォーマンスまたはハードウェア要件に関するものである場合は問題ありません。LXCで試すことができますが、いくつかのルールがあります。
this を読むことから始めます-それはかなり古いですが、それでも-そこには多くの知識があります。また、-を満たす ユーザー名前空間
そして、そのすべてをもう一度考えてみてください-LXCセキュリティで遊ぶ時間は本当にたくさんありますか? KVMはとても簡単です...
信頼できないプログラムを実行する場合でも、Linux名前空間が最善の解決策です。 KVMよりセットアップが簡単で、必要なリソースも少なくて済みます。 LXCを試すことができますが、LXCは完全なLinuxディストリビューションイメージを実行するためのより一般的なサンドボックスとしてビルドされました。他の2つのLinux名前空間サンドボックスが思い浮かびます。