Permissão em arquivo policy

Alguns dias atrás foi necessário habilitar um mode trace do driver DB2, em uma aplicação do cliente. No entanto ocorria o seguinte erro ao usar o trace:

Caused by: java.security.AccessControlException: access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:568)

Então, pensei “É só colocar o grant com codebase e permissão e está tudo resolvido. Então coloquei a seguinte linha no policy do AppServer. Sendo que no caminho do driver, são vários arquivos .jar

</p>

grant codeBase "file:///caminho/driver-db2/-" {
        permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};

Mas ao rodar a aplicação novamente, ocorreu o mesmo erro de falta de permissão (access denied), como mostrado anteriormente.

Então após mais alguns testes e variações desta configuração, resolvi remover o codeBase do grant. E funcionou. Claro que deixar isso desabilitado tem questões de segurança envolvido. Convenhamos que se alguém quiser fazer algum malefício, essa opção não ira colaborar imensamente. Visto que alguns outros appservers nem habilitam o security manager.

Written on May 4, 2007