Java 2 Security - PullRequest
       2

Java 2 Security

0 голосов
/ 14 апреля 2011

Мы включили защиту java 2 в WebSphere 6.1 и развернули наш test.ear вместе с was.policy, который имеет следующий код.

grant codeBase "file:/opt/TEST/EAR/test.ear/test.war/WEB-INF/lib/system.jar" {
  permission java.security.AllPermission;
  permission java.io.FilePermission "/opt/TEST/SYSTEM/config.client.xml", "read, write, execute";
};

А затем мы перезапустили менеджер развертывания, агент узла, а также менеджер узла.

Но все же мы получаем следующие ошибки в журналах IBM.

0000002b SecurityManag W   SECJ0314W: Current Java 2 Security policy reported a potential violation of Java 2 Security Permission. Please re
fer to InfoCenter for further information.

Разрешение:

  /opt/TEST/SYSTEM/config.client.xml : access denied (java.io.FilePermission /opt/TEST/SYSTEM//config.client.xml read)

Код:

 com.test.system.server.common.base.ControllerBase  in  {file:/opt/TEST/EAR/test.ear/test.war/WEB-INF/lib/system.jar}

Трассировка стека:

java.security.AccessControlException: access denied (java.io.FilePermission /opt/TEST/SYSTEM/config.client.xml read)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
        at java.security.AccessController.checkPermission(AccessController.java:427)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at com.ibm.ws.security.core.SecurityManager.checkPermission(SecurityManager.java:213)
        at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
        at java.io.File.exists(File.java:700)
        at com.test.system.server.common.base.ControllerBase.fileNotExists(ControllerBase.java:286)
        at com.test.system.server.common.base.ControllerBase.readConfigFromSystemProperty(ControllerBase.java:267)
        at com.test.system.server.common.base.ControllerBase.createConfigStream(ControllerBase.java:227)
        at com.test.system.server.common.base.ControllerBase.readConfigFile(ControllerBase.java:556)
        at com.test.system.server.common.base.ControllerBase.init(ControllerBase.java:374)
        at com.test.system.client.servlet.FrontController.init(FrontController.java:96)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:227)
        at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init(ServletWrapper.java:340)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:435)
        at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:524)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3548)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:818)
        at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:125)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)

Пожалуйста, помогите нам решить проблему.

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011

Использовать относительный путь в was.policy. У меня работает следующий фрагмент:

grant codeBase "file:test.war" {  
  permission java.security.AllPermission;
};

Дополнительную информацию см. В разделе ИнфоЦентра . Настройка файла was.policy для безопасности Java 2 .

Примечание. Я согласен с DaveHowes в том, что включение безопасности Java 2, но предоставление AllPermission бесполезно.

0 голосов
/ 14 апреля 2011

Попробуйте выполнить следующее (если вы не развертываете файл с разнесенными ушами)

grant codeBase "jar:file:/opt/TEST/EAR/test.ear!/test.war/WEB-INF/lib/system.jar" {
    permission java.security.AllPermission; 
};

Ключевыми битами являются "jar:" в начале расположения codeBase и восклицательный знак ("!") После ".ear"

Я удалил явную FilePermission - если вы предоставляете AllPermission, нет необходимости предоставлять также явные FilePermissions. (Но если вы предоставляете AllPermission, зачем вам вообще включать защиту Java 2?)

...