Запуск JBOSS: вызвано: java.security.AccessControlException: доступ запрещен ("java.lang.RuntimePermission" "getClassLoader") - PullRequest
0 голосов
/ 04 июля 2019

При развертывании одного из файлов ear на JBOSS на консоли я вижу следующие исключения:

log4j:WARN Caught Exception while in Loader.getResource. This may be innocuous.
java.lang.reflect.InvocationTargetException
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:606)
       at org.apache.log4j.helpers.Loader.getTCL(Loader.java:166)
       at org.apache.log4j.helpers.Loader.getResource(Loader.java:93)
       at org.apache.log4j.LogManager.<clinit>(LogManager.java:107)
       at org.apache.log4j.Logger.getLogger(Logger.java:117)
       at com.abc.Test.<clinit>(Test.java:42)
       at java.lang.Class.forName0(Native Method)
       at java.lang.Class.forName(Class.java:195)
       at com.sun.proxy.$Proxy1.<clinit>(Unknown Source)
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getClassLoader")

Приложение, похоже, работает. Не уверен, что не так. В скрипте запуска JBOSS мы используем менеджер безопасности по умолчанию:

-Djava.security.manager

Также мы передаем наш собственный файл политики безопасности в качестве аргумента:

-Djava.security.policy=$JBOSS_CONFDIR/server.policy

Я подтвердил, что файл политики присутствует в $ JBOSS_CONFDIR / server.policy. И содержимое этого файла политики выглядит так:

grant {
  permission java.security.AllPermission;
};

Когда я пытался включить журналы отладки безопасности, используя:

-Djava.security.debug=all

Я вижу следующие ошибки (связанные с JBOSS jars) в журналах:

policy: reading file:/local/testapp/configuration/server.policy
java.lang.IllegalArgumentException: null KeyStore name
        at sun.security.util.PolicyUtil.getKeyStore(PolicyUtil.java:82)
        at sun.security.provider.PolicyFile.init(PolicyFile.java:634)
        at sun.security.provider.PolicyFile.access$400(PolicyFile.java:283)
        at sun.security.provider.PolicyFile$3.run(PolicyFile.java:546)
        at sun.security.provider.PolicyFile$3.run(PolicyFile.java:520)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:519)
        at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:505)
        at sun.security.provider.PolicyFile.init(PolicyFile.java:464)
        at sun.security.provider.PolicyFile.<init>(PolicyFile.java:322)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at java.lang.Class.newInstance(Class.java:383)
        at java.security.Policy.getPolicyNoCheck(Policy.java:195)
        at java.security.ProtectionDomain.implies(ProtectionDomain.java:272)
        at java.lang.System$1.run(System.java:312)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.lang.System.setSecurityManager0(System.java:310)
        at java.lang.System.setSecurityManager(System.java:288)
        at sun.misc.Launcher.<init>(Launcher.java:104)
        at sun.misc.Launcher.<clinit>(Launcher.java:57)
        at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1489)
        at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1474)
        at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1474)
...
...
...
18:03:43,823 ERROR [stderr/] (main) java.lang.Exception: Stack trace
18:03:43,823 ERROR [stderr/] (main)     at java.lang.Thread.dumpStack(Thread.java:1365)
18:03:43,823 ERROR [stderr/] (main)     at java.security.AccessControlContext.checkPermission(AccessControlContext.java:321)
18:03:43,823 ERROR [stderr/] (main)     at java.security.AccessController.checkPermission(AccessController.java:559)
18:03:43,824 ERROR [stderr/] (main)     at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
18:03:43,824 ERROR [stderr/] (main)     at java.security.Policy.getPolicy(Policy.java:165)
18:03:43,824 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader$2.run(ModuleClassLoader.java:378)
18:03:43,824 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader$2.run(ModuleClassLoader.java:376)
18:03:43,824 ERROR [stderr/] (main)     at java.security.AccessController.doPrivileged(Native Method)
18:03:43,824 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader.getProtectionDomain(ModuleClassLoader.java:389)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:471)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:277)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:92)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.Module.loadModuleClass(Module.java:568)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
18:03:43,825 ERROR [stderr/] (main)     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
18:03:43,826 ERROR [stderr/] (main)     at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
18:03:43,826 ERROR [stderr/] (main)     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
18:03:43,826 ERROR [stderr/] (main)     at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
18:03:43,826 ERROR [stderr/] (main)     at org.jboss.as.server.Main.determineEnvironment(Main.java:264)
18:03:43,826 ERROR [stderr/] (main)     at org.jboss.as.server.Main.main(Main.java:93)
18:03:43,826 ERROR [stderr/] (main)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
18:03:43,827 ERROR [stderr/] (main)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
18:03:43,827 ERROR [stderr/] (main)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
18:03:43,827 ERROR [stderr/] (main)     at java.lang.reflect.Method.invoke(Method.java:606)
18:03:43,827 ERROR [stderr/] (main)     at org.jboss.modules.Module.run(Module.java:312)
18:03:43,827 ERROR [stderr/] (main)     at org.jboss.modules.Main.main(Main.java:473)
18:03:43,827 ERROR [stderr/] (main) access: domain 0 ProtectionDomain  (file:/opt/jboss/jboss-eap-6.4.5/jboss-modules.jar <no signer certificates>)
....
....
....
18:03:43,833 ERROR [stderr/] (main) policy: evaluation (codesource) failed
18:03:43,833 ERROR [stderr/] (main) policy: evaluate codesources:
18:03:43,833 ERROR [stderr/] (main)     Policy CodeSource: (file:/usr/java/packages/lib/ext/* <no signer certificates>)
18:03:43,833 ERROR [stderr/] (main)     Active CodeSource: (file:/opt/jboss/jboss-eap-6.4.5/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.5.CP/org/jboss/as/version/main/jboss-as-version-7.5.5.Final-redhat-3.jar <no signer certificates>)

Проблема возникает только на одном сервере Linux. Я пробовал на другом сервере, я не вижу там проблемы. Версия JBOSS - EAP 6.4.5. Версия JDK 1.7.0_80. Linux - это RHEL 7.6 (Maipo).

Пожалуйста, дайте мне знать, если у вас есть идеи, как решить эту проблему.

...