Ahhah, thanks :)

Was uh, scared for a moment the that initial thread had been lost in time.

On Fri, 27 Aug 2010, KaiGai wrote:

> Sorry for the confusion.
> I intended to talk to maintainer of the standard security policy in
> SELinux.
>
> It is my job to maintain the selinux_engine.so module. :-)
>
> Thanks,
>
> On 8月27日, 午後6:02, dormando <[email protected]> wrote:
> > We're still working on merging down 1.6... but if this exists outside as
> > an engine nothing of us blocks you from using it for now.
> >
> > I sort of wonder a little about outright pulling it into the tree, since
> > that implies we have to maintain it.
> >
> >
> >
> > On Fri, 27 Aug 2010, KaiGai Kohei wrote:
> > > BTW, how about getting inclusion of this patch?
> >
> > > (2010/08/16 14:38), KaiGai Kohei wrote:
> > > > The attached patch is a revised version of memcached permissions.
> >
> > > > The 'calculate' permission has gone, and INCR/DECR requires us
> > > > both of 'read' and 'write' permissions.
> > > > It means we should switch domain of the client process when we
> > > > need special treatments to unaccessable items; something like
> > > > trusted procedures.
> >
> > > > Rest of the patch is not changed.
> >
> > > > (2010/08/05 9:20), KaiGai Kohei wrote:
> > > >> (2010/08/04 10:25), Kelvin Edmison wrote:
> > > >>> I'm still not sure how allowing a 'calculate' permission would be 
> > > >>> helpful in
> > > >>> this case.  Incr and decr allow for incrementing and decrementing by 
> > > >>> any
> > > >>> amount.  There does not seem to be any real difference between that 
> > > >>> and
> > > >>> 'write' to me.
> >
> > > >> INCR and DECR allow users to set a numerical value according to 
> > > >> arithmetic
> > > >> rule, although SET allows to set a fully arbitrary value.
> > > >> If administrator want to allow users to modify a value in a limited 
> > > >> way,
> > > >> he can grant 'calculate' permission, instead of 'write' permission.
> >
> > > >> If we would be talking about RDBMS, it is possible to switch client's
> > > >> privileges during execution of a certain stored procedure.
> > > >> However, memcached does not have such a feature, so we need to consider
> > > >> more fine grained permissions.
> >
> > > >> BTW, I noticed a different viewpoint, although I didn't reach the idea 
> > > >> before.
> > > >> Since memcached does not have stored procedure, it might be a correct 
> > > >> answer
> > > >> that the client switches its privileges when it tries to modify 
> > > >> read-only
> > > >> values. Like set-uid programs in unix, SELinux has a feature to switch
> > > >> privileges of process on execve(2) time. It allows a small number of 
> > > >> trusted
> > > >> programs to write values, but prevents to modify items by others.
> >
> > > >>> If a strict security partitioning is desired, then perhaps a single
> > > >>> reference counter isn't feasible.  Would it not be better, from a 
> > > >>> security
> > > >>> point of view, to have individual counters for the different clients?
> > > >>> The clients would have 'create|read|write' permissions, and any 
> > > >>> overall
> > > >>> administrative app could have read-only permissions on all those 
> > > >>> counters to
> > > >>> collect and sum (or otherwise report) them?
> >
> > > >> If a strict security partitioning environment, it seems to me what you 
> > > >> introduced
> > > >> is reasonable.
> >
> > > >> Thanks,
> >
> > > >>> Kelvin
> >
> > > >>> On 02/08/10 1:45 AM, "KaiGai Kohei"<[email protected]>    wrote:
> >
> > > >>>> (2010/07/30 22:55), Kelvin Edmison wrote:
> > > >>>>> While I haven't yet read the patch, I would like to understand why 
> > > >>>>> there is
> > > >>>>> a need for a Calculate permission.  Why would someone be granted 
> > > >>>>> 'calculate'
> > > >>>>> permission but not 'write' permission?
> >
> > > >>>>> Kelvin
> >
> > > >>>> The issue depends on individual user's requirement of security.
> > > >>>> If they want not to leak anything over the security domains,
> > > >>>> they should grant the 'calculate' permission on everybody who
> > > >>>> already have both 'read' and 'write' permissions.
> > > >>>> It it equivalent to these permissions.
> > > >>>> However, it may lack flexibility in configuration of access
> > > >>>> controls, if users don't consider 'INCR' and 'DECR' are risk
> > > >>>> information leaks/manipulations.
> > > >>>> For example, it is not a rare case that we don't want to expose
> > > >>>> individual client's items, but want to control a shared reference
> > > >>>> counter.
> >
> > > >>>> Ideally, I'd like to define more fine grained permissions to
> > > >>>> distinguish a security sensitive operations and others.
> > > >>>> But here is limitation of protocol. We cannot automatically
> > > >>>> determine what is security sensitive data and what is not.
> >
> > > >>>> Thanks,
> >
> > > >>>>> On 30/07/10 12:49 AM, "KaiGai Kohei"<[email protected]>     
> > > >>>>> wrote:
> >
> > > >>>>>> I'll mainly submit the patch and message to SELinux community,
> > > >>>>>> but please don't hesitate to comment anything from memcached
> > > >>>>>> community.
> > > >>>>>> --------
> >
> > > >>>>>> The attached patch adds policies to support access controls
> > > >>>>>> on key-value items managed by memcached with SELinux engine.
> >
> > > >>>>>> Nowadays, various kind of key-value-stores support memcached
> > > >>>>>> compatible protocol as a de-facto standard. So, it will be a
> > > >>>>>> reasonable start to consider the protocol to control accesses
> > > >>>>>> from clients; typically web applications.
> >
> > > >>>>>>      
> > > >>>>>> http://github.com/memcached/memcached/blob/master/doc/protocol.txt
> >
> > > >>>>>> 1) new permissions
> >
> > > >>>>>> This patch adds 'kv_item' class with the following permissions
> > > >>>>>>      - create
> > > >>>>>>      - getattr
> > > >>>>>>      - setattr
> > > >>>>>>      - remove
> > > >>>>>>      - relabelfrom
> > > >>>>>>      - relabelto
> > > >>>>>>      - read
> > > >>>>>>      - write
> > > >>>>>>      - append
> > > >>>>>>      - calculate
> >
> > > >>>>>>        Most of permission works as literal.
> > > >>>>>>        On the 'SET' or 'CAS' operations, it creates a new item 
> > > >>>>>> when here
> > > >>>>>>        is no items with same kye. In this case, 'create' 
> > > >>>>>> permission shall
> > > >>>>>>        be checked. Elsewhere, 'write' permission shall be checked 
> > > >>>>>> on the
> > > >>>>>>        existing items.
> >
> > > >>>>>>        When an item get expired, it shall be unlinked internally. 
> > > >>>>>> In this
> > > >>>>>>        case, no permissions are checked, because it does not work 
> > > >>>>>> according
> > > >>>>>>        to the user's request.
> >
> > > >>>>>>        On the 'FLUSH_ALL' operation, it unlinks any items older 
> > > >>>>>> than
> > > >>>>>>        a certain watermark. In this case, 'remove' permission 
> > > >>>>>> shall be
> > > >>>>>>        checked on the items to be unlinked. If violated, it skips 
> > > >>>>>> to
> > > >>>>>>        unlink this item.
> >
> > > >>>>>>        On 'INCR' or 'DECR' operation, 'calculate' permission shall 
> > > >>>>>> be checked.
> > > >>>>>>        Is it necessary to distinguish between 'INCR' and 'DECR' 
> > > >>>>>> here?
> > > >>>>>>        E.g, an item which can be incremented, but unavailable to 
> > > >>>>>> decrement.
> >
> > > >>>>>> 2) new types
> > > >>>>>>      - memcached_db_t
> > > >>>>>>        Some of modular memcached engines support on-disk storage, 
> > > >>>>>> not only
> > > >>>>>>        volatile ram. The selinux_engine.so allows us to use a 
> > > >>>>>> certain file
> > > >>>>>>        as a backend storage, but existing policy does not have 
> > > >>>>>> definition
> > > >>>>>>        of data file type. This type allows memcached_t read/write 
> > > >>>>>> accesses.
> >
> > > >>>>>>      - memcached_item_t         (default of unconfined domain)
> > > >>>>>>      - memcached_ro_item_t
> > > >>>>>>      - memcached_secret_item_t
> > > >>>>>>      - user_memcached_item_t    (default of rbac domain)
> > > >>>>>>      - unpriv_memcached_item_t  (default of unprivileged domain)
> > > >>>>>>        These are types of individual key-value items.
> > > >>>>>>        The three default types are read-writable for its domains,
> > > >>>>>>        memcached_ro_item_t is read-only for confined domains, and
> > > >>>>>>        memcached_secret_t is invisible from confined domains.
> >
> > > >>>>>> 3) supplemental policies
> > > >>>>>>      - This patch also adds permission on memcached_t to 
> > > >>>>>> communicate with
> > > >>>>>>        SELinux using netlink socket and selinuxfs.
> > > >>>>>>      - This patch also adds permission on memcached_t to write out 
> > > >>>>>> audit
> > > >>>>>>        logs onto auditd daemon, although it is not implemented yet.
> >
> > > >>>>>> Thanks, Any comments please.
> >
> > > --
> > > KaiGai Kohei <[email protected]>
>

Reply via email to