[ 
https://issues.apache.org/jira/browse/HIVE-1696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12918615#action_12918615
 ] 

Todd Lipcon commented on HIVE-1696:
-----------------------------------

A few of us had a phone call this morning. We briefly discussed a design for 
this, summarized below:

- The metastore should make use of the delegation token facilities in Hadoop 
Common. The classes in Common are already generic since they're used by both MR 
and HDFS for their delegation token types.
- The metastore needs to keep track of active delegation tokens across restarts 
- it probably makes sense to use the existing DB backing store for this.
- The metastore thrift API will need a new call, something like: {{binary 
getDelegationToken(1: string renewer)}} which returns the opaque token.
- We'll need to make some changes to HadoopThriftAuthBridge from HIVE-842 in 
order to support using a delegation token over SASL.

In terms of the use cases above, here are some thoughts on how the delegation 
tokens will be used:

h3. MR tasks reporting statistics

When a hive job is submitted, it will first obtain a DT from the hive 
metastore. This DT will be passed with the job, either as a private 
distributedcache file, or maybe base64-encoded in the jobconf itself. The MR 
tasks themselves will then load the token into the UGI before making calls. 
This is basically the pattern that normal hadoop MR jobs use to access HDFS 
from within a task.

h3. Oozie or Hive Server jobs

Before Oozie or Hive Server forks the child process which actually runs the 
job, it will need to obtain a delegation token from the metastore on behalf of 
the user running the job. It will then provide this to the child process using 
an environment variable or configuration property. In this case, Oozie or the 
Hive Server needs to be configured as a "proxy superuser" on the metastore - ie 
the oozie/_HOST or hiveserver/_HOST principal is allowed to impersonate other 
users in order to grab delegation tokens for them.

> Add delegation token support to metastore
> -----------------------------------------
>
>                 Key: HIVE-1696
>                 URL: https://issues.apache.org/jira/browse/HIVE-1696
>             Project: Hadoop Hive
>          Issue Type: Sub-task
>          Components: Metastore
>            Reporter: Todd Lipcon
>
> As discussed in HIVE-842, kerberos authentication is only sufficient for 
> authentication of a hive user client to the metastore. There are other cases 
> where thrift calls need to be authenticated when the caller is running in an 
> environment without kerberos credentials. For example, an MR task running as 
> part of a hive job may want to report statistics to the metastore, or a job 
> may be running within the context of Oozie or Hive Server.
> This JIRA is to implement support of delegation tokens for the metastore. The 
> concept of a delegation token is borrowed from the Hadoop security design - 
> the quick summary is that a kerberos-authenticated client may retrieve a 
> binary token from the server. This token can then be passed to other clients 
> which can use it to achieve authentication as the original user in lieu of a 
> kerberos ticket.

-- 
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