Ahh, now I'm with you. > I don't deny it is niche. However, it is absolutely necessary feature > for people who want to set up secure web application platform.
> It seems to me there is no difference from what I said, except for name > of the framework. Indeed. Apologies for not realizing this earlier... Good luck on hacking your Access Control engine module :) - Toru P.S. It might save your time if you look at this first: http://github.com/trondn/memcached/blob/engine/doc/engine-interface.xml 2010/1/7 KaiGai Kohei <kai...@ak.jp.nec.com>: > (2010/01/07 17:55), Toru Maesaka wrote: >>> Please use the correct term to avoid confusion :( >>> Authentication is a different concept from access control. >> >> Point taken :) >> >>> Obviously, it is valueable. >>> >>> My proposition is just a framework to host an additional access control >>> feature without any assumption for security models. In other word, the >>> default installation does not apply any access controls, unless >>> administrator explicitly set up its own security module. >>> >>> Please note that any security solution has its own assumption, so the >>> preferable answer depending on the situation. >>> In our assumption, it is difficult to keep application bug/vulnerability >>> free, so we need to minimize the number of points to be checked. >>> It is also why operating system checks filesystem permission on the system >>> call invocations, not application side. >> >> Like I said, I understand your argument. The question is what >> proportion of the users would benefit from this? To be honest I don't >> have the answer for this. However, taking into account that memcached >> has been used worldwide >> without serious complaints by players of all sizes in it's history, I >> don't think it's necessary. Damn, I was even skeptical of the SASL >> support at the beginning (I agree with this now though). I just don't >> want to see memcached get bloated by adding database-like >> functionalities. > > I don't deny it is niche. However, it is absolutely necessary feature > for people who want to set up secure web application platform. > > So, I suggested this idea with modular approach, not built-in. > >> However, I have nothing against people providing this functionality >> inside their engines. In fact, I think it would be fantastic! This was >> my original view of the Engine Project (additional things should be >> provided by the engine) which was fortunately embraced by the >> community. The binary protocol turned out to be useful for this too. > > It seems to me there is no difference from what I said, except for name > of the framework. > > Right now, I'm not clear whether the engine is a reasonable framework > to host access control feature, or not. So, I represented it just a > security framework. > > Anyway, system administrators can decide whether the memcached should > load the access control module on the "engine" framework, or not. > Of course, he can pay mention about its tradeoff. > >>> BTW, Is the storage engine stackable? If not so, it seems to me we will >>> face a tradeoff between persistent storage and access controls. >> >> No. It's not stackable. If you want to do this you'd have to create an >> abstraction layer within the storage engine. There were discussions on >> this a while back though (I forget if it was online or offline). > > It seems to me it is a bit ad-hoc workaround. > For example, when the primary module allocate an item object, what should > the secondary module perform? > > However, it is not a bad idea to start it from the upcoming engine framework. > > Thanks, > >> Cheers, >> Toru >> >> >> 2010/1/7 KaiGai Kohei<kai...@ak.jp.nec.com>: >>> (2010/01/07 16:17), Toru Maesaka wrote: >>>> Yo all, >>>> >>>> Looks like I've jumped on this band wagon a little late but allow me >>>> to throw in my thoughts. Firstly, I'm totally against item-level >>>> authentication. >>> >>> Please use the correct term to avoid confusion :( >>> Authentication is a different concept from access control. >>> >>>> I see KaiGai Kohei's motivation to want this but in the context of >>>> memcached, this is the applications job. I think it could upset mid to >>>> large scale memcached users if we added this. They're using it because >>>> they love the simplicity and the high throughput of memcached. They >>>> can take care of security themselves. I guess things are different in >>>> a hosting environment but there are different solutions for this which >>>> Dustin has been looking into. >>>> >>>> So the question is, is it worth the effort for the memcached project? >>> >>> Obviously, it is valueable. >>> >>> My proposition is just a framework to host an additional access control >>> feature without any assumption for security models. In other word, the >>> default installation does not apply any access controls, unless >>> administrator explicitly set up its own security module. >>> >>> Please note that any security solution has its own assumption, so the >>> preferable answer depending on the situation. >>> In our assumption, it is difficult to keep application bug/vulnerability >>> free, so we need to minimize the number of points to be checked. >>> It is also why operating system checks filesystem permission on the system >>> call invocations, not application side. >>> >>> If we can trust applications, it is not a wrong approach to control >>> all the things in the application, not memcached. >>> >>>>> One question. Is the storage engine an appropriate layer for access >>>>> controls on item level? >>>> >>>> Yes. This wouldn't be too difficult to pull off with Binary Protocol >>>> + Engine API. You could create a scramle buffer and send that with the >>>> most appropriate binary protocol field (worst case, use the reserve >>>> field). This scramble buffer can be appended into the key of the item >>>> inside your engine. So you could pull this off with keys with the >>>> following structure: >>>> >>>> <key_value><scramble_buffer> (or vice versa). >>>> >>>> Pretty much you're free to do anything in the engine. Memcached is >>>> only a darn efficient network interface and protocol parser in the >>>> context of Engine API. >>> >>>> After sending the previous email, I realized that the engine solution >>>> I mentioned is not that good. It limits access to a certain item to >>>> one user. A better approach would be to create a security map that >>>> associates scrambled data with items. >>> >>> Are you suggesting that applications has to handle the scramble buffer >>> correctly for each accesses? It seems to me we can obtain credential of >>> the client using SASL authentication, without any additional hints. >>> >>> If the security map means something like access control list, what we >>> are talking about is not fundamentally different. >>> The issue is the way to store the properties within the item. >>> >>> BTW, Is the storage engine stackable? If not so, it seems to me we will >>> face a tradeoff between persistent storage and access controls. >>> >>> Am I missing something? >>> >>> Thanks, >>> >>>> Cheers, >>>> Toru >>>> >>>> 2010/1/7 KaiGai Kohei<kai...@ak.jp.nec.com>: >>>>> (2010/01/07 13:02), Matt Ingenthron wrote: >>>>>> dormando wrote: >>>>>>>> Getting down to the item level would be tough to accept due to the >>>>>>>> overhead >>>>>>>> involved, one would think though. There may be some ways of getting >>>>>>>> closer to >>>>>>>> access control though without going down to the item level. >>>>>>> >>>>>>> This seems like it'll be solved by an engine dealio. Mapping a user to >>>>>>> an >>>>>>> internal instance of the storage system. Sort of like running multiple >>>>>>> instances, *cough*. Getting super granular access levels for a web cache >>>>>>> (more than a few dozen users) would be insane, but if someone really >>>>>>> wants >>>>>>> to they could implement a storage engine for it. >>>>>> >>>>>> My thoughts exactly. That's what engine is for! >>>>> >>>>> Does the engine mean something pluggable or modular? >>>>> If so, it is similar to what I think. >>>>> >>>>> One question. Is the storage engine an appropriate layer for access >>>>> controls on item level? >>>>> >>>>> It might be possible to provide strict separation between users. >>>>> Is it possible to provide read-only or append-only rules for a certain >>>>> users in the item level granularity? >>>>> >>>>>>> It'd be incredibly inefficient on memory, compared to keeping the number >>>>>>> of users down or even running multiple instances. >>>>>> >>>>>> Only if you were trying to go all the way down to the item level. It's >>>>>> possible to have groups of slabs that are dedicated to one label/auth or >>>>>> something like that, right? >>>>> >>>>> It may be possible. However, if the usage of slabs are not balanced, >>>>> it may remove cached object, although we have unallocated cache in >>>>> the slab owned by other label/auth. right? >>>>> >>>>> Thanks, >>>>> -- >>>>> OSS Platform Development Division, NEC >>>>> KaiGai Kohei<kai...@ak.jp.nec.com> >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> OSS Platform Development Division, NEC >>> KaiGai Kohei<kai...@ak.jp.nec.com> >>> >> >> >> > > > -- > OSS Platform Development Division, NEC > KaiGai Kohei <kai...@ak.jp.nec.com> > -- Toru Maesaka <d...@torum.net>