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

Bryan Bende commented on NIFI-1488:
-----------------------------------

Did some more investigating this morning... The reason I was getting the 
exception was because UserGroupInformation.isSecurityEnabled() was evaluating 
to false due to me only providing hbase-site.xml as a configuration file, and 
even though my hbase-site.xml had kerberos enabled, the isSecurityEnabled() 
method works off of the Hadoop core-site.xml. After adding core-site.xml to the 
list of config files it does appear to be working now.

After learning a lot more than I planned to about Kerberos, I still have some 
questions/concerns though...

1) Based on the above, is it expected behavior that the user has to know to 
provide both hbase-site.xml and core-site.xml when using Kerberos, but can only 
provide hbase-site.xml when not using Kerberos? 

I was looking at HBase code and they appear to have a User class which 
specifically checks if Kerberos is configured for HBase and I am wondering if 
that might be appropriate here:
https://github.com/apache/hbase/blob/master/hbase-common/src/main/java/org/apache/hadoop/hbase/security/User.java#L249

2) I'm also wondering about the use of the static calls to 
UserGroupInformation... does this work if you wanted to have two different 
HBaseClientService instances talking to two different HBase clusters with 
different principals/keytabs? also what if you have PutHDFS processors with 
Kerberos, they also make these static calls, does that interfere here?

It seems like we might want to consider using the 
"loginUserFromKeytabAndReturnUGI" which does not modify static state in UGI and 
returns a reference to a UGI. From there we can perform operations using that 
UGI through the doAs(...) method. I took a first pass at implementing this, but 
needs a lot of work to clean it up:

https://github.com/bbende/nifi/blob/NIFI-1488/nifi-nar-bundles/nifi-standard-services/nifi-hbase_1_1_2-client-service-bundle/nifi-hbase_1_1_2-client-service/src/main/java/org/apache/nifi/hbase/HBase_1_1_2_ClientService.java#L232

3) The last thing which I mentioned in a previous comment is about the 
validation, it seems like we would want consistent experience between the HDFS 
processors and the HBaseClientService in terms of validating the principal and 
keytab. I took a stab at refactoring the properties and validation from 
AbstractHadoopProcessor into a common class, which would resolve the issue 
Randy reported about not being able to use a '-' in the principal name, but I'd 
still like to come up with a way to get rid of the non-final static reference 
to NiFiProperties:

https://github.com/bbende/nifi/blob/NIFI-1488/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/KerberosProperties.java

Depending how people feel about the above questions/concerns, I can keep going 
with this tomorrow.


> Add Kerberos Support to HBase processors
> ----------------------------------------
>
>                 Key: NIFI-1488
>                 URL: https://issues.apache.org/jira/browse/NIFI-1488
>             Project: Apache NiFi
>          Issue Type: Improvement
>    Affects Versions: 0.4.0, 0.4.1
>            Reporter: Bryan Bende
>            Assignee: Ricky Saltzer
>             Fix For: 0.6.0
>
>         Attachments: 
> 0001-NIFI-1488-Adjusting-unused-imports-and-adding-licens.patch
>
>
> Our current HBase integration does not support communicating with a 
> Kerberized HBase install. We should support this just like we do for the HDFS 
> processors.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to