Olá pessoal,
Espero que alguém possa me ajudar.
Quero habilitar a segurança no JBoss, de maneira que dada uma aplicação eu defina o que ela pode fazer, desde a leitura de arquivo, até a leitura de uma determinada propriedade.
Para isso eu devo usar a segurança padrão do J2SE que é baseada no fino e granulado acesso definido por políticas de segurança (Policy).
Dessa forma habilitei o SecurityManager no arquivo de inicialização do JBoss run.bat.
Alterei o policy padrão do JDK (jre/lib/security/java.policy) de maneira a conceder permissão total ao arquivos do JBoss e do JDK, e não concedi nenhuma permissão a um WAR que criei e que coloquei no diretório deploy chamado Teste.war :
grant codebase “file:/C:/JDK/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/bin/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/lib/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/server/default/lib/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/server/default/tmp/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/server/default/deploy/ebxmlrr-service.sar/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/server/default/deploy/jmx-console.war/-”{
permission java.security.AllPermission;
};
grant codebase “file:/C:/JBoss4.0.0/server/default/deploy/management/-”{
permission java.security.AllPermission;
};
Nesse WAR tem um jsp que cria um arquivo XXX.txt no diretório c:/temp.
Dessa forma, pensei que o JBoss funcionaria sem problemas e na execução do jsp ele daria acesso negado a criação do arquivo XXX.txt, mas para minha surpresa ele permitiu criar.
Então lembrei que os arquivos que sofreram deploy são descompactados e compilados no diretório tmp/deploy, dessa forma a chamadas do WAR são feitas através desse diretório e não do diretório deploy. Como no arquivo java.policy tem o grant para tmp/- com permissão total, o arquivo é gerado.
O problema é que os arquivos que sofreram deploy são movidos para o diretório tmp/deploy com um prefixo que inicia com tmp + um número + o nome do arquivo (Ex: deploy/Teste.war -> tmp/deploy/tmp9800Teste.war). Dessa forma não tenho como colocar no policy o grant devido.
Se eu descompactar o war no diretório deploy ele não é movido para tmp/deploy e então a permissão de criação do arquivo é negada.
Alguém tem alguma sugestão para resolver meu problema?
André Santos Oliveira.