Thanks, David and Lance, for elaborating on the usability issue raised by Øystein: policy files can be tricky to work with.

It seems to me a sysadmin needs our system privileges because she wants to prevent malicious shutdown (shutdownEngine privilege) and resource hogging (createDatabase privilege). I suspect that she also wants to control malicious shutdown via unauthorized calls to System.exit() and resource hogging via unauthorized use of java.io classes. For instance, she needs to prevent the following:

 create procedure exitNow( in statusValue int )
 language java
 parameter style java
 no sql
 external name 'java.lang.System.exit'
 ;

 call exitNow( 1 );


What I'm suggesting is that the sysadmin needs to run the vm under a SecurityManager anyway if she's shy about unauthorized shutdown and resource hogging. That means she already needs to understand policy files in order to grant Derby sufficient privilege to even run--as documented in the Developer's Guide. The incremental learning curve for our new privileges is slight, I think.

I'm not saying that policy files are trivial. I'm just saying the sysadmin already needs to understand them if she's going to control shutdown and resource hogging.

Regards,
-Rick

Lance J. Andersen wrote:
I agree with David on this that policy files are painful.

David Van Couvering wrote:


Rick Hillegas (JIRA) wrote:

2) Unfamiliar api. Oracle, DB2, Postgres, and MySQL all handle system privileges in different ways. Picking one of these models would still result in an api that's unfamiliar to many people. That said, these databases do tend to use GRANT/REVOKE for system privileges, albeit each in its own peculiar fashion. I agree that GRANT/REVOKE is an easier model to learn than Java Security. I think however, that the complexity of Java Security is borne by the derby-dev developer, not by the customer. Creating a policy file is very easy and our user documentation gives simple examples which the naive user can just crib. With adequate user documentation, I think this approach would be straightforward for the customer.

I must respectfully disagree that "creating a policy file is very easy." I think it's a royal PITA - the syntax is complex, nonintuitive and unforgiving.

Can we provide a GRANT/REVOKE interface on top of an implementation that uses JAAS?


Reply via email to