> I must say that the nature of your questions leaves me with some concern > about the content of your guide...
Hmmm, I wont bite but I will provide a little more information on what I am doing. The guide is specifically being written for Tomcat on Windows, which in my searching of the web there is very few resources available, and even fewer that provide collated recommendations. As you may have guessed (and is eluded to in the response below) I am not an expert at Tomcat or Java however I need to put together a guide that can be delivered to infrastructure managers whose primary goal is to 'get it working' without considering security. So as part of the information security team I have to provide recommendations to those Infrastructure managers on how to secure the infrastructure (as well as every other application and piece of infrastructure that is being deployed). The majority of the guide is focused on management of the Tomcat server. Things like running tomcat as an unprivileged user (and getting the appropriate Windows permissions to allow that to work properly), Separation of tomcat directories from program files, segregation of duties for Wep-app content and Infrastructure admins, removing or limiting access to default or manager applications, limiting access to sensitive (or dangerous) Windows files and folders, etc, etc, etc. ________________________________ Noble cause. Note one thing, that has nothing to do with Windows, but Java Security. When you enable it, almost all activities directed outside JVM, and even some directed inside it, will require particular permissions. See the supplied security policy for some details, but I will add one that is always present and not covered in that file (for obvious reasons): connection to a DB. If you wish to use any DB server, you will need a TCP/IP connection, via JDBC, to that DB. I am not counting in in-memory DBs, like HSQL. To make the connection, or rather to let JDBC driver make the connection, you must add an appropriate permisssion to your JDBC driver classes. Something like: grant codeBase "file:${catalina.home}/psa-webapps/mydomain.com/myapplication/" { permission java.net.SocketPermission "localhost","resolve"; permission java.net.SocketPermission "localhost:3306","connect,resolve"; }; I'm not sure this works, though, just picked it up on Google, but that is how it generally should look. Though, I'd use class name, not file location for targeting the JDBC driver. This applies to all aspects of your application, like web services, RMI, disk access,... So, turning secure mode on can require additional work. Not that I consider it a bad idea, but just have in mind that it is not just "adding a couple of switches". You should tailor security policy for your application's needs. And it can be a lot of work, plus, it will require testing to see if you've missed something. Nix.