機能を簡単に拡張できるように、「プラグイン」を実行できる Python ベースの Web サーバーを作成しています。
このために、いくつかのフォルダー (プラグインごとに 1 つ) と、発生する可能性のあるさまざまなイベントの定義済みの名前にちなんで名付けられた多数のシェル/Python スクリプトを用意するアプローチを検討しました。
1 つの例としてon_pdf_uploaded.py
、PDF がサーバーにアップロードされたときに実行されるファイルがあります。これを行うには、Python のサブプロセスツールを使用します。
利便性とセキュリティのために、Unix 環境変数を使用して詳細情報を提供し、プロセスの作業ディレクトリ (cwd) を設定して、場所を見つけなくても適切なファイルにアクセスできるようにします。
プラグイン コードは信頼できないソースからのものであるため、できるだけ安全にしたいと考えています。私のアイデアは、サブプロセスでコードを実行することでしたが、サーバー上の他のリソースにアクセスできないように、別のユーザーで chroot 監獄に入れました。
残念ながら、これについては何も見つけることができませんでした。また、信頼できないスクリプトに依存して自分自身を刑務所に入れたくありません。
さらに、サーバーが他のリクエストに応答している間にプラグインコードが複数のプロセスで同時に実行される可能性があるため、メイン/呼び出しプロセスをchroot監獄に入れることもできません。
そこで質問があります: chroot 刑務所でサブプロセス/スクリプトを最小限の権限で実行して、サーバーの残りの部分が欠陥のある信頼できないコードによって損傷を受けるのを防ぐにはどうすればよいでしょうか?
ありがとうございました!