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

ryan rawson commented on HBASE-2420:
------------------------------------

The fine grained approach doesnt make sense to me.  Who owns the hfiles?  I 
would expect the 'hbase' user to own it.  If this is so, then why would we want 
to delegate end user permissions all the way to hdfs - unless we wanted to have 
ACL on HFiles depending on the user involved?

I would expect the client -> hbase and hbase-> hdfs security to be separate 
concerns.  Otherwise we'd have to do fine grained ACLs on all HFiles, and 
granting a user access to a table would require granting them access to the 
files involved in that table only.  

> [DAC] HDFS and ZK access delegation
> -----------------------------------
>
>                 Key: HBASE-2420
>                 URL: https://issues.apache.org/jira/browse/HBASE-2420
>             Project: Hadoop HBase
>          Issue Type: Sub-task
>            Reporter: Andrew Purtell
>
> HBase security will be in part layered on top of HDFS security, and whatever 
> ZK offers as well. For sake of discussion we presume both HDFS and ZK use a 
> Kerberos based authentication and authorization model, as proposed in the 
> Hadoop Security Architecture document. There are two basic options for that, 
> fine- or coarse-grained:
> h4. Coarse
> There could simply be a single delegation token granted to a HBase cluster 
> from HDFS and ZK for all operations on behalf of all possible users of the 
> HBase cluster. From the perspective of HDFS and ZK, there is only a single 
> principal for each cluster.
> h4. Fine
> The HBase master could manage and renew HDFS and ZK delegation tokens on 
> behalf of users authenticated to HBase via Kerberos. So when a client 
> authenticates via KRB to the HMaster when looking up region locations as the 
> first step to any HBase access, the HMaster would get a delegation token from 
> the NameNode on behalf of the user. (The user would then hand the delegation 
> token to the HRegionServers to allow access to store data via their embedded 
> DFSClients.) It would be ideal if ZooKeeper authentication and authorization 
> could tie in seamlessly. For example, at the same time the HMaster is getting 
> a delegation token for the user for HDFS, it could also get another token for 
> ZK on behalf of the user. A wrinkle here is token renewal. If a user 
> transacts with a HRegionServer with an expired token, the HRegionServer would 
> renew the token (or ask the HMaster to renew the token if superuser should 
> not be delegated from HMaster to HRegionServer) transparently with the 
> NameNode on behalf of the user. Something like that would be necessary on the 
> ZK side also. To support this model, the HRegionServers and HMaster (or just 
> HMaster) must act as a superuser principal capable of impersonating user 
> principals. Presumably, with the ZK ensemble also. Thus ZK, like HDFS, must 
> provide methods for a superuser to act on behalf of others. HDFS will have 
> this facility. 
> There are pros and cons for each approach. Coarse obviously is much more 
> simple to implement and reason about. But it requires more trust in HBase to 
> maintain isolation between users than the fine-grained approach. With the 
> fine-grained approach, the regionservers get HDFS and ZK delegation tokens 
> from the HBase client and this allows a policy where files and znodes created 
> by one user+group cannot be read or written by another at the DFS (store) 
> level or the ZK level. Assume group level permissions. Thus you can reason 
> about isolation further down the stack, not just from client->HBase, but 
> client->HBase->HDFS and client->ZK and client->HBase->ZK. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to