[
https://issues.apache.org/jira/browse/HADOOP-8758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13448518#comment-13448518
]
Kan Zhang commented on HADOOP-8758:
-----------------------------------
Thanks all for your comments.
[~eric14], one use case is exactly the Gateway model you mentioned. Suppose a
cluster can be accessed only through a gateway machine and the gateway is
configured to authenticate its external clients using some other method (e.g.,
LDAP). We want to turn on Hadoop security within the cluster to support
multi-tenancy, but we don't want to invest in Kerberos. One thing we can do is
pre-generate and configure a shared key between Gateway and NN during install
and use it to set up a secure connection between Gateway and NN in place of
Kerberos. With pluggable interface to support multiple types of delegation
tokens, such shared keys can be implemented in the form of a special kind of
tokens and only connections authenticated using these special tokens can be
used to fetch delegation tokens. In other words, these special tokens are used
in place of Kerberos tickets to bootstrap security. The difference is Kerberos
mechanism is more general; it can be used by any Kerberized clients without
install changes. Whereas here we need to pre-configure our special tokens in a
pair-wise manner for any pair of entities that we need to enable authenticated
connections. Hence, its usefulness is limited to pre-known services, not
arbitrary clients.
[~revans2] and [~daryn], I agree we should allow "SIMPLE" auth to be coupled
with tokens.
[~owen.omalley], actually I'm proposing we use the same authentication
mechanism as existing delegation tokens use (yes, we may need to consider
upgrading the mechanism at some point and it depends on what's available in
standard libs). What's new here is a new type of credentials, hence a new type
of SecretManager to deal with it. Since the SecretManagers will be stacked
together and deal with different types of credentials, they are orthogonal and
can evolve independently. HTTP could be used for fetching tokens, but the root
issue here is which auth method to use for intra-cluster authentication (ex.
between Gateway and NN) and preferably we don't want to introduce an external
dependency (ex, LDAP or Kerberos KDC). We could use a shared key based
mechanism on HTTP, but that doesn't save us any trouble in configuring the
shared keys. We might as well use RPC with its existing token framework.
[~tucu00] Agree with decoupling intra-cluster authentication from user-facing
authentication. This JIRA is a step in that direction. Regarding consolidating
different token implementations, I see the benefit and have discussed it with
you and others. Let's leave it to another topic.
> Support for pluggable token implementations
> -------------------------------------------
>
> Key: HADOOP-8758
> URL: https://issues.apache.org/jira/browse/HADOOP-8758
> Project: Hadoop Common
> Issue Type: Improvement
> Components: ipc, security
> Reporter: Kan Zhang
> Assignee: Kan Zhang
>
> Variants of the delegation token mechanism have been employed by different
> Hadoop services (NN, JT, RM, etc) to re-authenticate a previously
> Kerberos-authenticated client. While existing delegation token mechanism
> compliments Kerberos well, it doesn't necessarily have to be coupled with
> Kerberos. In principle, delegation tokens can be coupled with any
> authentication mechanism that bootstraps security. In particular, it can be
> coupled with other token implementations that use the same DIGEST-MD5 auth
> method. For example, a token can be pre-generated in an out-of-band manner
> and configured as a shared secret key between NN and JT to allow JT to make
> initial authentication to NN. This simple example doesn't deal with token
> renewal etc, but it helps to illustrate the point that if we can support
> multiple pluggable token implementations, it opens up the possibility for
> different users to plug in the token implementation of their choice to
> bootstrap security. Such token based mechanism has advantages over Kerberos
> in that 1) it doesn't require Kerberos infrastructure, 2) it leverages
> existing SASL DIGEST-MD5 auth method and doesn't require adding a new RPC
> auth method.
--
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