[ 
https://issues.apache.org/jira/browse/HBASE-6222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13396972#comment-13396972
 ] 

Andrew Purtell edited comment on HBASE-6222 at 6/19/12 6:39 PM:
----------------------------------------------------------------

Correct me if I'm wrong but given all of the above discussion therefore the 
scope of changes necessary are:

* Add a facility for storing string tags with each KV. Will need to do this for 
both puts and deletes.

* Update the KV comparators to take into account tags in the sort order, if 
present.

* Add a coprocessor (perhaps another implementation of Constraint) that:
** Implements a visibility filter that evaluates for each KV if the current set 
of user-supplied labels intersects with allowed labels according to visibility 
predicates stored in the KV, if any, and emits (or not);
** Unpacks labels added by the client via our generic op attributes facility 
and adds them to KVs in a mutator op or programs the visibility filter on a Get 
or Scan;
** Always adds the visibility filter to Get and Scan operations, wrapping any 
other supplied filter with FilterList(MUST_PASS_ALL) and the visibility filter 
on the RHS so we can let the other filters reduce the number of visibility 
evaluations necessary.

* Shell support
** Add setuaths and getauths equivalent shell commands
** Extend the other shell ops with sugar for adding labels as a working example 
of how to do it via the Java client
** Table create command sugar that adds the Constraint specification without a 
lot of user typing necessary?

And the constraints on implementation are:

* Tag storage optimized out if no tags present

* Compartmentalized changes

* The mechanism for adding, reading, removing, and modifying tags in the KV 
should be generic

Does that about sum it up?

@Laxman: Such a Constraint-based coprocessor as described would be orthogonal 
to AccessController. One could use both at the same time independently, or they 
could be unified at some point. 

@Lars
{quote}
bq. @Andy: Compartmentalized changes

Agreed, we add a new type and handle that case separately. Though the majority 
of the code is shared, the new type would trigger the extraction of the tags if 
called for (which I assume would be done lazily).
{quote}

So one new type that causes us to extract tags then recurse on the actual 
wrapped op? And we extend all necessary internal method signatures to carry 
tags around? Edit: By that I mean a pointer to where they are serialized in 
byte[] if doing it lazily as you suggest.
                
      was (Author: apurtell):
    Correct me if I'm wrong but given all of the above discussion therefore the 
scope of changes necessary are:

* Add a facility for storing string tags with each KV. Will need to do this for 
both puts and deletes.

* Update the KV comparators to take into account tags in the sort order, if 
present.

* Add a coprocessor (perhaps another implementation of Constraint) that:
** Implements a visibility filter that evaluates for each KV if the current set 
of user-supplied labels intersects with allowed labels according to visibility 
predicates stored in the KV, if any, and emits (or not);
** Unpacks labels added by the client via our generic op attributes facility 
and adds them to KVs in a mutator op or programs the visibility filter on a Get 
or Scan;
** Always adds the visibility filter to Get and Scan operations, wrapping any 
other supplied filter with FilterList(MUST_PASS_ALL) and the visibility filter 
on the RHS so we can let the other filters reduce the number of visibility 
evaluations necessary.

* Shell support
** Add setuaths and getauths equivalent shell commands
** Extend the other shell ops with sugar for adding labels as a working example 
of how to do it via the Java client
** Table create command sugar that adds the Constraint specification without a 
lot of user typing necessary?

And the constraints on implementation are:

* Tag storage optimized out if no tags present

* Compartmentalized changes

* The mechanism for adding, reading, removing, and modifying KVs should be 
generic

Does that about sum it up?

@Laxman: Such a Constraint-based coprocessor as described would be orthogonal 
to AccessController. One could use both at the same time independently, or they 
could be unified at some point. 

@Lars
{quote}
bq. @Andy: Compartmentalized changes

Agreed, we add a new type and handle that case separately. Though the majority 
of the code is shared, the new type would trigger the extraction of the tags if 
called for (which I assume would be done lazily).
{quote}

So one new type that causes us to extract tags then recurse on the actual 
wrapped op? And we extend all necessary internal method signatures to carry 
tags around? Edit: By that I mean a pointer to where they are serialized in 
byte[] if doing it lazily as you suggest.
                  
> Add per-KeyValue Security
> -------------------------
>
>                 Key: HBASE-6222
>                 URL: https://issues.apache.org/jira/browse/HBASE-6222
>             Project: HBase
>          Issue Type: New Feature
>          Components: security
>            Reporter: stack
>
> Saw an interesting article: 
> http://www.fiercegovernmentit.com/story/sasc-accumulo-language-pro-open-source-say-proponents/2012-06-14
> "The  Senate Armed Services Committee version of the fiscal 2013 national 
> defense authorization act (S. 3254) would require DoD agencies to foreswear 
> the Accumulo NoSQL database after Sept. 30, 2013, unless the DoD CIO 
> certifies that there exists either no viable commercial open source database 
> with security features comparable to [Accumulo] (such as the HBase or 
> Cassandra databases)..."
> Not sure what a 'commercial open source database' is, and I'm not sure whats 
> going on in the article, but tra-la-la'ing, if we had per-KeyValue 'security' 
> like Accumulo's, we might put ourselves in the running for federal 
> contributions?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to