配置 Kyuubi 使用 Kerberos 认证
如果你将 Kyuubi 部署在已启用 Kerberos 的 Hadoop 集群上,强烈建议将 kyuubi.authentication 也设置为 KERBEROS。
Kerberos 概述
Kerberos 是一种网络认证协议,提供了在网络上进行身份认证和强加密的工具。Kerberos 协议使用强加密技术,使得客户端或服务器能够在不安全的网络连接上向其服务器或客户端证明自己的身份。当客户端和服务器通过 Kerberos 证明身份之后,还可以对它们之间的全部通信进行加密,以确保业务往来过程中的私密性和数据完整性。
Kerberos 架构的核心是一个名为密钥分发中心(Key Distribution Center,KDC)的可信认证服务。Kerberos 环境中的用户和服务被称为主体(principal);每个主体都与 KDC 共享一个秘密,例如密码。
启用 Kerberos 认证
要启用 Kerberos 认证方式,我们需要:
创建 Kerberos 主体和 keytab
你可以在基于 Linux 的 Kerberos 环境中使用以下命令来设置身份并更新 keytab 文件:
kyuubi.keytab 文件必须由 Linux 登录用户所有,且该用户必须具有读取权限。
# kadmin
: addprinc -randkey superuser/FQDN@REALM
: ktadd -k ./kyuubi.keytab superuser/FQDN@REALM注意
Kyuubi 的一个常见用例是用 Kyuubi/Spark SQL 替代 HiveServer2/Hive QL。如果已经存在 HiveServer2 环境,复制该环境并复用 HiveServer2 的 keytab 和 principal 是一种便捷的方式。
启用 Hadoop 代理用户
如果底层集群也是一个启用了 Kerberos 的 Hadoop 集群,我们需要启用用于启动 Kyuubi Server 的超级用户的代理(impersonation)能力。
你可以通过属性 hadoop.proxyuser.$superuser.hosts 以及 hadoop.proxyuser.$superuser.groups 和 hadoop.proxyuser.$superuser.users 中的一个或两个来配置代理用户。
例如,在 core-site.xml 中指定如下内容,名为 admin 的 superuser 只能从 host1 和 host2 连接,并代理属于 group1 和 group2 的用户。
<property>
<name>hadoop.proxyuser.admin.hosts</name>
<value>host1,host2</value>
</property>
<property>
<name>hadoop.proxyuser.admin.groups</name>
<value>group1,group2</value>
</property>此处,
admin是用于启动 kyuubi 服务器的主体(短名)host1和host2是 kyuubi 服务器的节点地址group1和group2是客户端用户所属的组
:::note
这些配置需要在 Hadoop 集群中进行配置并刷新后才能生效。
:::
:::note
如果你使用的是现有 HiveServer2 的 keytab,也可以跳过此步骤。
:::
配置认证属性
在每个安装了 kyuubi 服务器的节点上,将以下属性配置到 $KYUUBI_HOME/conf/kyuubi-defaults.conf 中。
kyuubi.authentication=KERBEROS
kyuubi.kinit.principal=superuser/FQDN@REALM
kyuubi.kinit.keytab=/path/to/kyuubi.keytab还需要设置这些配置项以启用 KERBEROS 认证。
刷新所有 Kyuubi 服务实例
重启所有 Kyuubi 服务实例,或执行刷新配置以使设置生效。
评论
登录后参与评论
KnowForge