Страницы

Поиск по вопросам

вторник, 7 января 2020 г.

Изолированное выполнение Java

#sandbox #java #plugin


Доброго времени суток!
Вопрос общего плана, так как пока пытаюсь собрать в кучу мысли и определится с инструментарием.
Есть (будет:)) ядро приложения, которое взаимодействует с файловой системой, базой
данных, сетью. Для увеличения его функционала планируется использование "модулей расширения".
Основная задача модулей - получить от ядра данные, каким-то образом их обработать,
вернуть результат.
Само собой, очень хочется, чтоб модули имели как можно меньше возможностей шариться
там, где им явно не разрешили...
Если бы речь не шла о кросс-платформе, я бы наверно удовлетворился *nix-chroot'ом
- каждой хрени по изолированной середе (+,возможно, по отдельному пользователю) и в
своих рамках хай творят, что хотят.
Вариант разработки своей интерпретируемой среды с кучей предметных объектов и языком..
наверно, в теории, тоже может рассматриваться, но уже попахивает извращениями в стиле 1С))
Вопрос - можно ли каким-либо образом запускать java-классы в среде... ну примерно
так, как это делает браузер для апплетов? Или может как-то можно уменьшить набор системных
классов для модуля (естественно предоставив аналогичные, но фильтруемые)...
Буду рад услышать идеи, соображения, ссылки на литературу...
Спасибо!    


Ответы

Ответ 1



Ну можно конечно извратиться и запустить 2 копии JVM, в одной JVM крутится ваше ядро, а во второй ваши плагины. Взаимодействие между ядром и плагинами организовать через RMI

Ответ 2



Похоже, вам пригодится кастомный ClassLoader, чтобы устанавить нужный ProtectionDomain. Ссылки: [1], [2].

Комментариев нет:

Отправить комментарий