[jboss-as7-dev] About the getSecurityManager() optimization

Brian Stansberry brian.stansberry at redhat.com
Mon Mar 4 11:42:27 EST 2013


On 3/4/13 9:40 AM, David M. Lloyd wrote:
> On 03/04/2013 09:35 AM, Anil Saldhana wrote:
>> The reason why we had package level securityactions/privileged blocks
>> was mainly to provision the permissions down to the package level (if
>> need be). Having singleton classes representing priv blocks may be ok
>> for AS core code. However, how do we prevent applications from using these
>> singleton priv blocks?
>
> No need to do so - the application still has to use doPrivileged from
> their own code base.  All we do is provide an object to give to it, to
> avoid redundant classes from being defined and object instances from
> being created.  IOW there's no security risk that didn't already exist.
>
> That said, this API is private (aka not supported by us for external
> use), so we're free to change it or remove it at any time if we need to.
>

BTW, there's some useful stuff in the old jboss-common-core for this 
area, particular for system properties and TCCL changes. The gist of it 
was the caller would request an instance of a utility class in a 
privileged block and the necessary permission checks would be performed 
during construction of the instance. The caller could then cache the 
utility object and reuse. This eliminates the redundant privileged 
blocks and package protected SecurityActions classes we have.

See for example org.jboss.util.loading.ContextClassLoader and 
ContextClassLoaderSwitcher. I found the latter most useful, since a 
typical TCCL manipulation involves 3 actions, a get, a set and another 
set to restore in a finally block.

The caller of course has to be careful not to let the cached security 
util instance leak.


-- 
Brian Stansberry
Principal Software Engineer
JBoss by Red Hat


More information about the jboss-as7-dev mailing list