Создание java-песочницы на основе политик безопасности

Мне нужно создать среду для запуска потенциально ненадежного кода. Программе разрешено подключаться к предварительно сконфигурированному адресу: порт и ничего другого (даже прочитать системное время). Я собрал белый список классов. Я искал похожие вопросы, но нашел только шаблон, основанный на SecurityManager, который AFAIK устарел. Может ли кто-нибудь дать мне простой пример запуска кода в песочнице на основе политик безопасности и AccessController?

Ответы

Ответ 1

Насколько я знаю, это еще SecurityManager, который запускает проверки безопасности. Но, кажется, теперь он делегирует AccessController.

Сначала вам нужно включить менеджера безопасности:

-Djava.security.manager

Если вы опустите этот аргумент, не будет никакой песочницы.

Во-вторых, вам нужно указать, где найти файл политики:

-Djava.security.policy =

Это добавит ваши права на те, которые уже определены в вашем java-доме. Исходная песочница управляется в... /jre/lib/security/java.policy. Однако, если вы хотите, чтобы ваша политика была единственной, вам нужно будет использовать двойной "=". Таким образом вы полностью контролируете, что разрешено.

Например:

-Djava.security.policy ==

Я бы посоветовал вам использовать "policytool", поставляемый с Java. Он довольно простой, но он помогает быстро написать файл политики с правильным синтаксисом.

Надеюсь, это поможет...