Ah ok. So basically you will be able to specify which database (and/or catalog) someone can access but that's basically an all access backstage pass to the DB (ie no allowing reads but not writes, etc.)?
On Mar 19, 2010, at 3:32 PM, Eric Day wrote: > Most things around authentication and authorization were removed early > on, but pluggable authentication was added back in shortly after (PAM > and HTTP plugins). Monty Taylor recently added in an authorization > plugin point to restrict what schemas, tables, and processes a user > can access. We're still thinking about simple ACLs like read/write, > but not a full-blown grant system like traditional RDBM's have. > > The other main differences is that these user/account settings will > most likely not be managed through the database plugins. Drizzle will > only read this information from the plugin source. > > -Eric > > On Fri, Mar 19, 2010 at 03:07:31PM -0500, Tim Soderstrom wrote: >> Not to take a step back but I thought Drizzle was not going to have any >> authentication. It sounds like there is talk about adding this back in using >> a more fine-grained method than something like PAM? Not that I disagree (for >> some reason, the idea of catalogs makes me excited though I don't know why >> :) but were permissions removed largely for performance reasons? >> >> Just curious on the context is all :) >> >> Tim S. >> >> >> On Mar 19, 2010, at 2:23 PM, Eric Day wrote: >> >>> Hi Roland! >>> >>> Thanks for the detailed writeup and sections from the SQL >>> standard. It's nice to know what it has in there for reference, >>> one of these days I should probably find a copy. :) >>> >>> On Fri, Mar 19, 2010 at 07:02:36PM +0100, Roland Bouman wrote: >>>> Ok - fair enough. A catalog is a collection of schemas....now this: >>>> >>>> " >>>> 4.2.8.3 The Information Schema >>>> Every catalog contains an SQL-schema with the name INFORMATION_SCHEMA >>>> that includes the descriptors >>>> of a number of schema objects, mostly view definitions, that together >>>> allow every descriptor in that catalog to >>>> be accessed, but not changed, as though it was SQL-data. >>>> " >>>> >>>> mm, one information_schema per catalog. I don't mind, but I guess this >>>> means that once you commit to implementing catalogs, you have to go >>>> all the way, and do this too...if you don't, generic clients will get >>>> confused (use case: query or reporting tool that accesses drizzle via >>>> a JDBC driver. Driver says the RDBMS supports catalogs, client uses >>>> this information and then relies on an information_schema being >>>> present....) >>> >>> We are already doing this at the schema/table level with the >>> authorization plugins. For example, If I am user X and only have access >>> to schemas A and B, my view of I_S will only contain those schemas >>> and associated tables. We simply need to extend the namespace for >>> authorization plugins to include catalog as well. Our API is currently: >>> >>> virtual bool restrictSchema(const SecurityContext &user_ctx, >>> const std::string &schema)= 0; >>> >>> virtual bool restrictTable(const SecurityContext &user_ctx, >>> const std::string &schema, >>> const std::string &table); >>> >>> So we will probably simply add in: >>> >>> virtual bool restrictCatalog(const SecurityContext &user_ctx, >>> const std::string &catalog)= 0; >>> >>> And add 'catalog' arguments to the calls above. >>> >>>> Now the puzzling thing is, I don't see anything in the standard that >>>> says how a user/role knows about catalogs...they only mention schema >>>> objects: >>>> >>>> " >>>> 4.6.12 Privileges >>>> A privilege represents a grant, by some grantor, to a specified >>>> grantee (which is either an authorization identifier, >>>> a role, or PUBLIC), of the authority required to use, or to perform a >>>> specified action on, a specified schema >>>> object. >>>> " >>>> >>>> Now, what they say about schemas and owners is this: >>>> >>>> " >>>> 4.2.8.2 SQL-schemas >>>> An SQL-schema, often referred to simply as a schema, is a persistent, >>>> named collection of descriptors. Any object whose descriptor is in >>>> some SQL-schema is known as an SQL-schema object. A schema, the schema >>>> objects in it, and the SQL-data described by them are said to be owned >>>> by the authorization identifier associated with the schema. >>>> " >>>> >>>> So, in short, if you want to adhere to the standard for this one, you >>>> should associate ownership with schemas, not catalogs. How users >>>> should be authorized for catalogs, is not clear. Nor is it clear to >>>> me what the benefit is of a catalog object, other than that it is just >>>> another level. However, if you do implement catalogs, you should also >>>> provide an information_schema implementation that is compatible with >>>> the existence of catalogs. >>> >>> We're probably not taking the traditional role approach in the >>> standard. We're going to keep things a bit more simple as you can >>> see in the API calls above. Authorization entities will be loosely >>> coupled with catalogs/schemas/tables and will not be restricted by >>> any boundaries on what they have the potential to access. >>> >>>> Personally, having catalogs is not high on my list. Only RDBMS i have >>>> worked with that has it, is SQL server and to me it is more a hassle >>>> than it's worth (IMO). >>> >>> Agreed for many cases, as Brian mentioned, this is mainly useful in >>> multi-tenant environments where you want to give each account their >>> own schema namespace, without having to resort to schema prefix hacks. >>> >>>> I do think a schema owner is a useful concept. The standard seems to >>>> imply schemas are always owned by an "authorization" which is to all >>>> intents and purposes an account (AFAICS). Oracle also implements a per >>>> schema owner and MS SQL agrees here too (as in, each schema has an >>>> owner) >>> >>> We'll have the potential for multiple 'owners' depending on their >>> restriction level of operations/schemas. There won't be a designated >>> 'user' owns 'schema', but just determined from what auth plugins allow. >>> >>>> PS I am not saying drizzle should do what Oracle and MS do, but these >>>> are shining examples of popular RDBMS-es and for developers it helps >>>> if things like this work the same across the board. >>> >>> Yeah, I think we're not worrying about traditional SQL roles/grants >>> like Oracle/MS, mainly just an easy, pluggable, set of permissions >>> for common tasks. Like we've said, many web shops have a single user >>> (root) and handle all permissions in the application. We just want >>> to extend that to a multi-tenant environment. At least this how I >>> understand it, perhaps some of the other Drizzle developers will have >>> a different take. :) >>> >>> Thanks! >>> -Eric >>> >>>> On Fri, Mar 19, 2010 at 6:20 PM, Jay Pipes <[email protected]> wrote: >>>>> Yep, fair enough. Thanks for the excellent explanation! >>>>> >>>>> -jay >>>>> >>>>> On Fri, Mar 19, 2010 at 1:18 PM, Eric Day <[email protected]> wrote: >>>>>> The argument I could see for not simply using a 'user' is that >>>>>> there may be multiple users that want to map to the same catalog >>>>>> namespace (essentially an account). So 'jay' and 'eric' have access >>>>>> to the 'drizzle.org' catalog, but we may have a different set of >>>>>> permissions. The 'account' entity needs to have some object with it, >>>>>> and you most likely don't want to reference other user accounts for >>>>>> this. For example: >>>>>> >>>>>> catalog >>>>>> schema >>>>>> table >>>>>> >>>>>> drizzle.org >>>>>> blog >>>>>> posts >>>>>> comments >>>>>> authors >>>>>> wiki >>>>>> pages >>>>>> accounts >>>>>> >>>>>> gearman.org >>>>>> wiki >>>>>> pages >>>>>> accounts >>>>>> >>>>>> Now users can map to any set of permissions for the catalog, schema, >>>>>> table, or any combination of them. Now you can have multiple users >>>>>> access drizzle.org catalog, or a single user access both drizzle.org >>>>>> and gearman.org catalogs. >>>>>> >>>>>> -Eric >>>>>> >>>>>> On Fri, Mar 19, 2010 at 12:10:39PM -0400, Jay Pipes wrote: >>>>>>> How would that be different from a user, then? >>>>>>> >>>>>>> In other words, why not just split the innodb buffer pool by the user >>>>>>> id (which, BTW, would require a major overhaul of InnoDB...)? >>>>>>> >>>>>>> What I'm asking is what would be the benefits of one more level of >>>>>>> taxonomy when the user ID already allows for such categorization? >>>>>>> >>>>>>> Cheers! >>>>>>> >>>>>>> jay >>>>>>> >>>>>>> On Fri, Mar 19, 2010 at 12:05 PM, Brian Aker <[email protected]> wrote: >>>>>>>> Think multi-tenancy. A user can create as many schemas as they like, >>>>>>>> and I >>>>>>>> can split the innodb pool up per catalog. >>>>>>>> >>>>>>>> Cheers, >>>>>>>> --Brian >>>>>>>> >>>>>>>> On Mar 19, 2010, at 8:52 AM, Jay Pipes <[email protected]> wrote: >>>>>>>> >>>>>>>>> NULL. >>>>>>>>> >>>>>>>>> I actually don't think catalogs are all that useful, FWIW... >>>>>>>>> >>>>>>>>> -jay >>>>>>>>> >>>>>>>>> On Thu, Mar 18, 2010 at 9:47 PM, Roland Bouman >>>>>>>>> <[email protected]> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Hi! >>>>>>>>>> >>>>>>>>>> On Thu, Mar 18, 2010 at 11:25 PM, Brian Aker <[email protected]> >>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Do we want to just default the value to NULL? >>>>>>>>>> >>>>>>>>>> SQL standard says it should be NULL in case there is no support for >>>>>>>>>> catalogs. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Roland Bouman >>>>>>>>>> http://rpbouman.blogspot.com/ >>>>>>>>>> >>>>>>>>>> Author of "Pentaho Solutions: Business Intelligence and Data >>>>>>>>>> Warehousing with Pentaho and MySQL", >>>>>>>>>> http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Mailing list: https://launchpad.net/~drizzle-discuss >>>>>>>>>> Post to : [email protected] >>>>>>>>>> Unsubscribe : https://launchpad.net/~drizzle-discuss >>>>>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Mailing list: https://launchpad.net/~drizzle-discuss >>>>>>> Post to : [email protected] >>>>>>> Unsubscribe : https://launchpad.net/~drizzle-discuss >>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~drizzle-discuss >>>>> Post to : [email protected] >>>>> Unsubscribe : https://launchpad.net/~drizzle-discuss >>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>> >>>> >>>> >>>> -- >>>> Roland Bouman >>>> http://rpbouman.blogspot.com/ >>>> >>>> Author of "Pentaho Solutions: Business Intelligence and Data >>>> Warehousing with Pentaho and MySQL", >>>> http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~drizzle-discuss >>> Post to : [email protected] >>> Unsubscribe : https://launchpad.net/~drizzle-discuss >>> More help : https://help.launchpad.net/ListHelp >>> > _______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

