Python :Защита ненадежных скриптов/подпроцессов с помощью chroot и chjail?

Я пишу веб-сервер на основе Python, который должен иметь возможность запускать «плагины», чтобы функциональность можно было легко расширить.

Для этого я рассмотрел подход, заключающийся в наличии нескольких папок (по одной для каждого плагина )и нескольких сценариев оболочки/питона, названных в соответствии с предопределенными именами для различных событий, которые могут произойти.

Одним из примеров является наличие файла on_pdf_uploaded.py, который выполняется при загрузке PDF-файла на сервер. Для этого я бы использовал инструменты Python subprocess .

Для удобства и безопасности это позволило бы мне использовать переменные среды Unix для предоставления дополнительной информации и установить рабочий каталог (cwd )процесса, чтобы он мог получить доступ к нужным файлам, не находя их местонахождение.

Поскольку код плагина исходит из ненадежного источника, я хочу сделать его максимально безопасным. Моя идея состояла в том, чтобы выполнить код в подпроцессе, но поместить его в тюрьму chroot с другим пользователем, чтобы он не мог получить доступ к каким-либо другим ресурсам на сервере.

К сожалению, я ничего не смог найти об этом, и я не хотел бы полагаться на ненадежный скрипт, чтобы посадить себя в тюрьму.

Кроме того, я также не могу поместить основной/вызывающий процесс в chroot-тюрьму, поскольку код плагина может выполняться в нескольких процессах одновременно, пока сервер отвечает на другие запросы.

Итак, вот вопрос :Как я могу выполнять подпроцессы/скрипты в chroot-тюрьме с минимальными привилегиями, чтобы защитить остальную часть сервера от повреждения ошибочным, ненадежным кодом?

Благодарю вас!

10
задан BastiBen 30 July 2012 в 15:26
поделиться