В openjdk политики безопасности не действуют

В redhat-openjdk: 1.8.0, jvm java.policy и java.version файла custom.policy действуют в активном процессе.

Я настроил процесс java для использования диспетчера безопасности java, и он использует сервер Apache для запуска процесса. Таким образом, клиент Apache ищет разрешение на чтение «java.version» в файле политики по умолчанию и/или пользовательской политике.

Я включил готовое разрешение свойства, но получаю странное исключение AccessControlException.

Исключение, которое я вижу:

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.version" "read")

У меня есть правильные разрешения. Запись разрешения свойства в jvm/secruity/java.policy.

permission java.util.PropertyPermission "java.version", "read";

и в custom.policy ( -Djava.security.manager -Djava.security.policy=custom.policy), путь к файлу указан полностью, я просто сократил для лучшего понимания):

 permission java.util.PropertyPermission "java.version", "read";

Ожидается, что процесс Java будет запущен без проблем, но этого не происходит.

Редактировать 1:

Я также попытался применить все разрешения, используя строку ниже:

grant{ permission java.security.AllPermission; };

Но похоже, что это все еще не работает. Я также пытался использовать «==» при настройке файла политики, что означает «Если вы используете

java -Djava.security.manager -Djava.security.policy==someURL SomeApp

(обратите внимание на двойное равно), то будет использоваться только указанный файл политики; все указанные в файле свойств безопасности будут игнорироваться.`

Согласно документу jdk 8

Любая помощь горячо приветствуется.


person anvesh mora    schedule 29.10.2019    source источник
comment
Вы нашли решение для этого? У нас возникла та же проблема после перехода с Oracle на OpenJDK, и файл политики имеет решающее значение в нашей системе.   -  person Nirro    schedule 12.08.2020


Ответы (1)


Мне кажется, что политика не действует. Если у вас установлено несколько выпусков JDK, уверены ли вы, что изменили политику по умолчанию для того же выпуска, с которым работаете? Я бы начал с предоставления AllPermissions только для того, чтобы убедиться, что политика действует, а затем сосредоточился бы на самой строке разрешений.

person martin_uy    schedule 05.11.2019
comment
Да, Мартин, я убедился, что все записи политики находятся в открытом файле JDK/jre/lib/security/java.policy, и в любом случае у нас есть пользовательский файл политики, передаваемый как системное свойство для использования. Однако я не пробовал с предоставлением всех разрешений. Как я могу получить AllPermissions? - person anvesh mora; 06.11.2019
comment
как было предложено, я попытался применить все разрешения, используя строку ниже: grant{ permission java.security.AllPermission; }; Но похоже, что это все еще не работает. Я также пытался использовать '==' при настройке файла политики, что означает If you use java -Djava.security.manager -Djava.security.policy==someURL SomeApp (note the double equals) then just the specified policy file will be used; all the ones indicated in the security properties file will be ignored. Любая помощь очень ценится. - person anvesh mora; 07.11.2019