Как обеспечить изоляцию?

Мне нужно разрешить моим пользователям выполнять предоставляемый ими код .NET на моем сервере. Я знаю, что безопасность - это большая проблема, но это должно быть сделано именно так.

В настоящее время я запускаю код своих пользователей под ограниченной учетной записью Windows. Но меня беспокоит, что .NET framework предоставляет множество классов, которые при злонамеренном использовании могут нанести вред серверу — классы в пространстве имен Reflection — один из примеров, CodeDom — другая проблема.

Хотелось бы, чтобы был способ создать «легкую виртуальную среду», которая может запускать код .NET, но полностью изолирована. Что-то вроде Virtual PC, но намного легче — единственная возможность — это то, что пользователи могут выполнять вычисления и, возможно, вызывать сторонний веб-сервис.

Есть ли на рынке что-то, что обеспечивает изолированную среду для приложений .NET?

Спасибо.


person user1044169    schedule 20.03.2012    source источник
comment
Это не дает прямого ответа на вопрос, но вы можете рассмотреть возможность использования Mono в Linux. Он не обеспечивает идеальной функциональности .NET, но может помочь предотвратить повреждение сервера. mono-project.com/Main_Page   -  person viking    schedule 21.03.2012
comment
Что это за код и что он делает? Приложение Winform, плагин DLL, загружаемый вашим приложением, страница ASP.NET? Это повлияет на выбор изоляции, которую вы можете использовать.   -  person Scott Chamberlain    schedule 21.03.2012


Ответы (1)


В .NET встроены функции безопасности, позволяющие делать именно то, что вы хотите. . Не зная, как запускаются их приложения .NET, я не могу точно сказать, поможет ли это вам, но если вы контролируете запуск приложений, вы можете применить контекст безопасности к их AppDomain и ограничить доступ к ним. Из того, что вы сказали в исходном сообщении, если вы заблокировали почти все, кроме WebPermission (и вы даже можете ограничить его конкретными адресами ) должно быть безопасно работать в вашей системе.

person Scott Chamberlain    schedule 20.03.2012