Есть ли способ защитить эту систему?
Ответ - «это зависит».
Два вопроса, которые вы должны задать, это «что люди должны делать» и «что люди могут делать (для данной реализации)». Если существует реализация, в которой последний является подмножеством первого, система может быть защищена.
Один из моих друзей работает судьей соревнования по программированию: программа, которая запускает пользовательскую программу на некоторых тестовых данных и сравнивает ее вывод с эталонным выводом. Это чертовски сложно защитить: вы хотите запускать код других людей, но не хотите, чтобы они запускали произвольный код. Ваш сценарий чем-то похож на этот? Тогда ответ «это сложно».
Хотите ли вы, чтобы пользователи загружали ненадежный код из Интернета и запускали его с некоторой уверенностью, что он не будет использовать их машину? Тогда посмотрите на различные веб-языки. Одно из решений - не предлагать доступ к системным вызовам (JavaScript) или предоставлять ограниченный доступ к некоторым потенциально опасным вызовам (Java's SecurityManager). Насколько я знаю, в python ничего нельзя сделать, но вы всегда можете взломать интерпретатор и запретить загрузку внешних модулей, не входящих в какой-либо белый список. Это, вероятно, подвержено ошибкам.
Вы хотите, чтобы пользователи писали плагины, и не были в состоянии повозиться с тем, что делает основная часть кода в вашем приложении? Учтите, что пользователи могут декомпилировать файлы .pyc и изменять их. Предположим, что те, кто работает с вашим кодом, всегда могут его модифицировать, и рассмотрим ботов-золотодобытчиков для WoW.
Единственное решение для Linux, похожее на изолированную модель веб-поиска, заключается в использовании AppArmor, который ограничивает доступ к файлам вашего приложения и к системным вызовам. Это может быть возможным решением, но я не знаю много об этом, поэтому я не могу дать вам совет, кроме как «расследовать».
Если все, о чем вы беспокоитесь, это злые люди, изменяющие код во время его передачи в межтрубных пространствах, существуют стандартные криптографические решения (SSL). Если вы хотите загружать только подписанные плагины (потому что вы хотите контролировать действия пользователей?), Подписывание кода звучит как правильное решение (но остерегайтесь хитрых пользователей или злых людей, которые редактируют файлы .pyc и отключают is-it- подписанный чек).