Python: защита ненадежных скриптов / подпроцессов с помощью chroot и chjail?
Я пишу веб-сервер на основе Python, который должен быть способен выполнять «плагины». так что функциональность может быть легко расширена.
Для этого я подумал, что в подходе должно быть несколько папок (по одной на каждый плагин) и несколько сценариев shell / python, названных в честь предопределенных имен для различных событий, которые могут произойти.
Одним из примеров является наличиеon_pdf_uploaded.py
файл, который выполняется при загрузке PDF на сервер. Для этого я бы использовал Pythonsubprocess инструменты.
Для удобства и безопасности это позволило бы мне использовать переменные среды Unix для предоставления дополнительной информации и установки рабочего каталога (cwd) процесса, чтобы он мог обращаться к нужным файлам без необходимости искать их местоположение.
Поскольку код плагина исходит из ненадежного источника, я хочу сделать его максимально безопасным. Моя идея состояла в том, чтобы выполнить код в подпроцессе, но поместить его в изолированную тюрьму с другим пользователем, чтобы он не мог получить доступ к любым другим ресурсам на сервере.
К сожалению, я ничего не смог найти по этому поводу, и я не хотел бы полагаться на ненадежный сценарий, чтобы поставить себя в тюрьму.
Кроме того, я также не могу поместить основной / вызывающий процесс в тюрьму chroot, поскольку код плагина может выполняться одновременно в нескольких процессах, пока сервер отвечает на другие запросы.
Итак, вот вопрос: как я могу выполнить подпроцессы / сценарии в изолированной тюрьме с минимальными привилегиями, чтобы защитить остальную часть сервера от повреждения из-за неисправного, ненадежного кода?
Спасибо!