[jboss-dev-forums] [JBoss AS 7 Development] - AS8: JBoss Security Manager Implementation Plan

Anil Saldhana do-not-reply at jboss.com
Thu Feb 21 10:42:04 EST 2013


Anil Saldhana [https://community.jboss.org/people/anil.saldhana] created the document:

"AS8:  JBoss Security Manager Implementation Plan"

To view the document, visit: https://community.jboss.org/docs/DOC-48386

--------------------------------------------------------------
This wiki article will propose an implementation plan for the security manager related changes for JBoss AS8.

h2. Background

Please follow  https://community.jboss.org/docs/DOC-48383 https://community.jboss.org/wiki/AS8JBossSecurityManagerDiscussion   for some background information.

Goal is to minimize the global policy file +historic+ approach and adapt the Java Security Manager infrastructure in AS8 to a more modular approach.


h2. Approach

* We will have a security manager subsystem to define the global permission collection that modules will inherit by default.  
* module.xml can define the permission collection that governs the module.  This is what the ModuleClassLoader will return to the security manager when asked for permission collection.
* EE deployments can do META-INF/permissions.xml (as per EE7).   The deployment permissions need to be merged into the module level permissions.

h2. 
h2. Security Manager and Policy Implementation

The JVM can run under a Java Security Manager via two options:
* Pass  -Djava.security.manager as command option
* Programmatically, call    System.setSecurityManager(securityManager)


So we have two options to start the security manager in AS8.  (+I personally like the programmatic option that will let the JVM and JBoss Modules system to start up before the security manager is put into operation+).
h3. Command Line Option

When we use the command line option,  the default security manager implementation (that uses Sun PolicyFile implementation)   will use the java.policy file from jre/lib/security folder of the JVM to construct the permissions that the JVM will have in starting up.  This takes care of the JVM starting up.

We will need to bootstrap the JBoss Modules system.  Now we have to think about providing the permissions for the jboss-modules.jar  

The easiest way to achieve this is to add an entry into the java.policy file.   or  have a single entry in a policy file within the AS8 folders and mandate users not add/delete anything from this file.   This will get the JBoss Modules system starting.

Once the module system is started,  we will use the programmatic stuff below.
h3. Programmatic Option

There will be a security manager subsystem defined in the domain model.   It will have a flag called *+enable+*  which by default will be +false+.   If the user configures the +enable+ flag to true,  the program will call +System.setSecurityManager()+,  if  +System.getSecurityManager() == null+.

The security manager subsystem can define the permission block for use by default by the module class loader.
--------------------------------------------------------------

Comment by going to Community
[https://community.jboss.org/docs/DOC-48386]

Create a new document in JBoss AS 7 Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2225]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20130221/f2753cd4/attachment-0001.html 


More information about the jboss-dev-forums mailing list