使用Kerberos认证

Kerberos是一种基于对称密钥技术的身份认证协议,可以为其他服务提供身份认证功能。本文为您介绍Hive在开启Kerberos的情况下,如何访问Hive Client。

前提条件

已创建集群,且在软件配置页面的高级设置区域中,打开了Kerberos身份认证开关。创建集群详情请参见创建集群Kerberos

操作步骤

  1. 使用SSH方式登录集群,详情请参见登录集群

  2. 执行以下命令,进入Kerberosadmin.local工具。

    • 如果您是使用root用户,登录KDC(Kerberos的服务端程序)所在的master-1-1节点,则可以执行以下命令,直接进入admin工具。

      kadmin.local

      当返回信息中包含如下信息时,表示已进入admin.local命令行。

      Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password.
      kadmin.local:
    • 如果您登录的是其他节点或者使用Gateway时,则可以通过填写admin-useradmin-password进入admin工具。

      kadmin -p <admin-user> -w <admin-password>
      说明

      如果您使用的是EMR自建的KDC,则参数:

      • <admin-user>:固定值为root/admin

      • <admin-password>:您可以在E-MapReduce控制台,Kerberos服务的配置页面,获取admin_pwd的参数值。

      当返回信息中包含如下信息时,表示已进入admin命令行。

      Authenticating as principal root/admin with password.
      kadmin:
  3. 执行以下命令,创建用户名为testPrincipal。

    本文示例密码设置为123456。

    addprinc -pw 123456 test

    当返回信息中包含如下信息时,表示创建成功。

    Principal "test@EMR.C-85D4B8D74296****.COM" created.
    说明

    需要记录用户名和密码,在创建TGT(Ticket Granting Ticket)时会用到。

    执行quit命令,可以退出Kerberosadmin.local工具。

  4. 登录您需要运行Hive Client的机器,执行以下命令,创建并切换至test用户。

    useradd test
    su test
  5. 执行以下命令,创建TGT。

    kinit

    回车后输入test用户的密码,本文示例密码为123456。

  6. 访问Hive Client。

    • 方式一:直接使用hive命令访问Hive Client

      hive
    • 方式二:使用Beeline访问Hive Client

      beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"

      其中,以下信息需要您按照实际情况替换:

      • master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:完整的主机名(包括域名)。您可以通过在HiveServer2服务的节点(通常是master-1-1节点)执行hostname -f命令获取。

      • EMR.c-56187feb57f0****.COM:realm名称。您可以在EMR控制台Kerberos服务的配置页签,搜索并查看realm参数,参数值即为该realm名称。

        image

相关文档