Создать java песочницу на основе политик безопасности - PullRequest
16 голосов
/ 19 мая 2010

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

1 Ответ

16 голосов
/ 25 мая 2010

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

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

-Djava.security.manager

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

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

-Djava.security.policy =

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

Например:

-Djava.security.policy ==

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

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

...