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

Ted Yu commented on HBASE-5498:
-------------------------------

Comment for trunk patch:
I agree that HTable.coprocessorService doesn't need to throw Throwable.
If you don't want to use the try/catch block, you can follow the example of 
AggregationClient:
{code}
  public <R, S> R max(final byte[] tableName, final ColumnInterpreter<R, S> ci,
      final Scan scan) throws Throwable {
{code}
{code}
+ */
+public class SecureBulkLoadClient {
{code}
Please add annotation for new public classes.
For LoadIncrementalHFiles:
{code}
+  private boolean useSecure;
{code}
Should the above field be named useSecurity or secureLoad ?
{code}
+      if(useSecure) {
{code}
nit: insert space between if and (.
{code}
+          } catch (InterruptedException e) {
+            LOG.warn("Failed to cancel HDFS delegation token.", e);
+          }
{code}
Please restore interrupt status above.

More reviews to follow.
                
> Secure Bulk Load
> ----------------
>
>                 Key: HBASE-5498
>                 URL: https://issues.apache.org/jira/browse/HBASE-5498
>             Project: HBase
>          Issue Type: Improvement
>          Components: security
>            Reporter: Francis Liu
>            Assignee: Francis Liu
>             Fix For: 0.96.0, 0.94.4
>
>         Attachments: HBASE-5498_94_2.patch, HBASE-5498_94_3.patch, 
> HBASE-5498_94.patch, HBASE-5498_94.patch, HBASE-5498_draft_94.patch, 
> HBASE-5498_draft.patch, HBASE-5498_trunk_2.patch, HBASE-5498_trunk_3.patch, 
> HBASE-5498_trunk_4.patch, HBASE-5498_trunk.patch
>
>
> Design doc: 
> https://cwiki.apache.org/confluence/display/HCATALOG/HBase+Secure+Bulk+Load
> Short summary:
> Security as it stands does not cover the bulkLoadHFiles() feature. Users 
> calling this method will bypass ACLs. Also loading is made more cumbersome in 
> a secure setting because of hdfs privileges. bulkLoadHFiles() moves the data 
> from user's directory to the hbase directory, which would require certain 
> write access privileges set.
> Our solution is to create a coprocessor which makes use of AuthManager to 
> verify if a user has write access to the table. If so, launches a MR job as 
> the hbase user to do the importing (ie rewrite from text to hfiles). One 
> tricky part this job will have to do is impersonate the calling user when 
> reading the input files. We can do this by expecting the user to pass an hdfs 
> delegation token as part of the secureBulkLoad() coprocessor call and extend 
> an inputformat to make use of that token. The output is written to a 
> temporary directory accessible only by hbase and then bulkloadHFiles() is 
> called.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to