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

On 30/07/10 12:49 AM, "KaiGai Kohei" <kai...@ak.jp.nec.com> 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.

Reply via email to