I would like to continue the discussion about how we can tighten up Derby system privileges for the client/server case. I would appreciate the community's feedback.

Here's where the discussion stands. We can imagine two big groupings of non-ANSI privileges not currently handled by our GRANT/REVOKE machinery:

1) System-wide privileges (e.g., Create Database, Boot all Databases, Shutdown System)

2) Per-database privileges (e.g., Shutdown Database, Encrypt Database, Create Java Plugins)

What I would like to brainstorm now is this: how should we control these privileges? Here are some thoughts:

1) How to control system-wide privileges

1a) We could invent the concept of a Master Database. For the moment, let's be vague about who creates this database and when. In this Master Database, we could use GRANT/REVOKE to manage system-wide privileges.

1b) Alternatively, we could supply a Java interface (and default implementation) for managing system-wide privileges. This is how Derby manages users. Right now, for managing users we supply an interface, org.apache.derby.authentication.UserAuthenticator with a default implementation which the customer can override. For the moment, let's be vague about what we would put in this interface.

I tend to think that (1a) is heavyweight while (1b) is more flexible. What do other people think? What other suggestions do people have for managing system-wide privileges?

2) How to control database-wide privileges

2a) We could use GRANT/REVOKE to manage database-wide privileges.

2b) This is (2a) with a twist: One of the database-wide privileges (Create Java Plugin) could be modelled as a per-schema privilege.

Other databases GRANT and REVOKE database-wide privileges. This, however, extends the ANSI spec in vendor-specific ways. Is that OK for Derby to do? In addition, DB2, Oracle, and Postgres scope the Create Java Plugin privilege at the database rather than the schema level. For these reasons, I think that (2a) would be fine. What do other people think? What other suggestions do people have for managing database-wide privileges?

Thanks for your feedback. Please don't be offended if I don't reply until next week--I'm going on Thanksgiving holiday soon.

Regards,
-Rick

Reply via email to