[ 
https://issues.apache.org/jira/browse/HBASE-26212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Josh Elser updated HBASE-26212:
-------------------------------
    Status: Patch Available  (was: Open)

> Allow AuthUtil automatic renewal to be disabled
> -----------------------------------------------
>
>                 Key: HBASE-26212
>                 URL: https://issues.apache.org/jira/browse/HBASE-26212
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client, security
>            Reporter: Josh Elser
>            Assignee: Josh Elser
>            Priority: Minor
>
> Talking with [~bbende] who was looking at some "spam" in the NiFi log where 
> AuthUtil was complaining that it couldn't renew the UGI. This is did not 
> cause him problems (NiFi could always read/write to HBase), but it generated 
> a lot of noise in the NiFi log.
> NiFi is special in that it's managing renewals on its own (for all services 
> it can communicate with), rather than letting each client do it on its own. 
> Specifically, one way they do this is by doing a keytab-based login via JAAS, 
> constructing a UGI object from that JAAS login, and then invoking HBase in a 
> normal UGI.doAs().
> The problem comes in that AuthUtil _thinks_ that it is capable of renewing 
> this UGI instance on its own. AuthUtil can determine that the current UGI 
> came from a keytab, and thus thinks that it can renew it. However, this 
> actually fails because the LoginContext inside UGI *isn't* actually something 
> that UGI can renew (remember: because NiFI did it directly via JAAS and not 
> via UGI)
> {noformat}
> 2021-08-19 17:32:19,438 ERROR [Relogin service.Chore.1] 
> org.apache.hadoop.hbase.AuthUtil Got exception while trying to refresh 
> credentials: loginUserFromKeyTab must be done first
> java.io.IOException: loginUserFromKeyTab must be done first
>       at 
> org.apache.hadoop.security.UserGroupInformation.reloginFromKeytab(UserGroupInformation.java:1194)
>       at 
> org.apache.hadoop.security.UserGroupInformation.checkTGTAndReloginFromKeytab(UserGroupInformation.java:1125)
>       at org.apache.hadoop.hbase.AuthUtil$1.chore(AuthUtil.java:206) 
> {noformat}
> After talking with Bryan about this: we don't see a good way for HBase to 
> detect this specific "A UGI instance, but not created by UGI" case because 
> the LoginContext inside UGI is private. It is great that AuthUtil will 
> automatically try to renew keytab logins, even if not using 
> {{hbase.client.keytab.file}} and {{hbase.client.keytab.principal}}, so I 
> don't want to break that functionality{{.}}
> NiFi is unique in this case that it is fully managing the renewals, so I 
> think the best path forward is to add an option which lets NiFi disable 
> AuthUtil since it knows it can safely do this. This should affect any others 
> users (but also give us an option if AuthUtil ever does cause problems).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to