DBeaver链接kerberos安全认证的Phoenix集群

寵の児 提交于 2020-01-05 13:48:44

DBeaver链接kerberos安全认证的Phoenix集群

最近公司的CDH集群,启动了kerberos安全认证,所有的用户验证全部需要依赖kerberos来进行。之前的裸奔集群,总算有了一些安全认证的功能,虽然网上很多人都说不推荐使用kerberos进行集群的安全认证,但是也没有说明使用哪种安全认证的方式会更好,目前比较现成的安全认证方式也只知道kerberos。

使用kerberos认证之后,原本的Phoenix sqlline可以在存有kerberos缓存票据的机器上直接运行,链接方式,启动命令等,都和没有启动kerberos之前一样。只需要执行klist命令,能够显示kerberos主体信息即可。但是使用Windows进行远程链接Phoenix时出现了问题。首先Windows上没有kerberos客户端,不能直接缓存票据。其次,如果使用kinit命令进行链接的话,必须知道kerberos中的主体密码,而CDH的kerberos主体是CM自主生成的,我们也不知道密码。所以我们只能使用kertab的形式进行链接。

明确了使用keytab的形式进行链接,我们首先尝试了Linux sqlline的形式链接,测试完全没有问题,使用一切正常。但是使用Windows的DBeaver远程链接时要怎么做呢?

百度搜索了一下,只搜到了Phoenix链接kerberos安全认证集群时的jdbc url链接格式,其他的都不是Phoenix的链接设置了。尝试了几天,终于使用DBeaver链接成功了,记录下来,分享给有需要的人。

1.安装Windows的kerberos的客户端

下载Windows的kerberos客户端进行安装,直接百度下载地址吧,版本貌似比较古老

安装的时候注意,如果公司的电脑不给管理员权限的话,记得选择中间的【custom】安装选项,将kerberos的客户端安装到自己用户能够访问的文件夹下,确保后续的客户端能够正常使用。

2.设置Windows端的KDC配置文件

将集群的kerberos配置文件内容拷贝到C:\ProgramData\MIT\Kerberos5\krb5.ini文件中

如果该文件不存在,那么自己创建出来即可,当然了,也可以通过配置环境变量来改变该配置文件的路径

KRB5_CONFIG=E:/apps/kerberos_conf/krb5.ini

3.配置DBeaver的启动参数

因为DBeaver使用的是JAVA的链接方式链接Phoenix集群,所以我们可以通过-D参数传入一些配置来设置程序,已到达url模板中不能传递KDC服务器配置的问题

打开DBeaver的安装目录,打开dbeaver.ini配置文件,添加以下内容

-Djava.security.krb5.conf=C:\ProgramData\MIT\Kerberos5\krb5.ini

传递KDC的配置信息给JVM,具体的krb5.ini的目录,请根据自己的情况进行修改。

4.修改DBeaver中Phoenix链接驱动的URL模板

修改dbeaver中,Phoenix链接器的URL模板:

jdbc:phoenix [ :<zookeeper quorum> [ :<port number> [ :<root node> [ :<principal> [ :<keytab file> ] ] ] ] ] 

上面是Phoenix官网给出的JDBC链接模板,并且说明了如果需要后续参数,必须要列出前面的所有参数。但是进过查看源码,明确了网上所说的两点错误:

  1. 不需要列出前面的所有参数,但是hbase-site.xml文件中需要有所有的信息

  2. Phoenix-client.jar中需要有core-site.xml,hdfs-site.xml,hbase-site.xml三个集群配置文件

  3. Windows的keytab路径可以使用带盘符的路径,如:E:\hbase.keytab

修改为自己集群的链接即可,进行测试发现已经可以链接到kerberos安全认证的集群了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!