Tomcat AccessControlException, несмотря на использование AllPermission
Я пытаюсь развернуть WAR в Tomcat и столкнулся с проблемами с Java Security Manager. Это Tomcat 7.0.55, работающий на Java 1.8.0, и Tomcat запускается с такими параметрами:
-Dcatalina.base="/path/to/apache-tomcat-7.0.55"
-Dcatalina.home="/path/to/apache-tomcat-7.0.55"
-Djava.endorsed.dirs="/path/to/apache-tomcat-7.0.55\endorsed"
-Djava.security.manager
-Djava.security.policy="/path/to/config/custom_catalina.policy"
Здесь важно то, что он включает диспетчер безопасности Java, а затем указывает его на собственную политику безопасности, которая выглядит следующим образом:
grant {
permission java.security.AllPermission;
};
Похоже, что это должно привести к довольно бессмысленной настройке активации диспетчера безопасности, а затем сказать ему просто разрешить все (я не запускаю сервер, поэтому не вините меня!). Тем не менее, когда я развертываю свою WAR, она завершается с несколькими трассировками стека, содержащими такие вещи, как
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.version" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457) ~[?:1.8.0_51]
at java.security.AccessController.checkPermission(AccessController.java:884) ~[?:1.8.0_51]
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[?:1.8.0_51]
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294) ~[?:1.8.0_51]
at java.lang.System.getProperty(System.java:753) ~[?:1.8.0_51]
at org.apache.commons.lang3.JavaVersion.maxVersion(JavaVersion.java:196) ~[commons-lang3-3.4.jar:3.4]
Я пытался явно предоставить AllPermission
в моем собственном приложении с чем-то вроде:
grant codeBase "file:${catalina.home}/webapps/myApp/-" {
permission java.security.AllPermission;
};
и даже явно предоставляя PropertyPermission
читать java.version
, Ничего из этого не имеет значения. Такой же AccessControlException
S все еще брошены и предотвращают развертывание.
Что здесь происходит? Как я могу устранить это?
0 ответов
Наш был не во время развертывания, а во время тяжелого нагрузочного тестирования.
Мы изменили коннектор в server.xml с Nio2 на Nio, и это решило проблему для нас org.apache.coyote.http11.Http11NioProtocol (первая версия NIO вместо NIO2).
Мы не отключили Tomcat Security Manager, это противоречит политике нашей фирмы.