关于永洪BI Kerberos机制的详细介绍

时间:2024-05-22 16:58:13

本文档仅供参考,其中列出的永洪BI的提示信息会因不同的客户环境而有所差异。

一、永洪BI使用Kerberos连接大数据平台数据库流程

1.1 流程简述

► 客户向永洪BI提供用于Kerberos认证的 principal 、 keytab及连接数据库的url等信息配置数据源,永洪BI使用数据源配置的认证信息建立和KDC的通信。KDC对永洪BI认证通过后,会提供访问数据库的ticket给永洪BI。在这个过程中,必须保证永洪BI所在的主机能够ping通KDC主机,并且两个主机的时间一致。

► 永洪BI使用ticket和url(hbase除外)中提供的认证信息(包含连接数据库的principal等)连接数据库。

注意:永洪BI使用Kerberos连接数据库时需要两个principal,一个用于连接KDC主机,另外一个用于连接数据库。

1.2 其他信息

KDC:Key Distribution Center,**分发中心,详细介绍参考:https://baike.baidu.com/item/%E5%AF%86%E9%92%A5%E5%88%86%E5%8F%91%E4%B8%AD%E5%BF%83/7983348?fr=aladdin

Kerberos真实认证机制比较复杂,详细介绍参考:

https://blog.****.net/Scythe666/article/details/53429819

二、永洪BI Kerberos连接需要的配置信息

2.1 页面配置信息

以下信息需要由客户提供,否则永洪BI无法连接指定数据库。

1、**文件路径:必填项,相当于是password,是一个keytab结尾的文件,由客户使用KDC主机生成并提供给永洪BI,用于永洪BI和KDC主机通信。

2、Krb5文件路径:非必填项,krb5文件配置了默认Realm、KDC主机信息等,由客户提供给永洪BI,用于永洪BI和KDC主机通信。

如果该项没有填写,永洪BI会检查{JDK/JRE安装目录}/lib/security/krb5.conf 文件是否存在。如果存在,永洪BI会使用该文件。

如果上面的文件没找到,永洪BI会检查操作系统目录下的krb5配置文件,不同的操作系统文件路径不同(以下路径供参考)。

Linux /etc/krb5.conf 文件

Windows C:\windows\system32\krb5.ini

如果文件存在,永洪BI会使用该文件。如果文件不存在,永洪BI会提示 Cannot locate default realm。

3、Jaas文件路径:非必填项,建议填写。永洪BI会根据该文件的配置信息从KDC主机获取用于和Server通信的TGT。

具体操作,在服务器新建文件jaas.conf,并输入以下内容。最后将文件路径填写到数据源“Jaas文件路径”项。

Client {

com.sun.security.auth.module.Krb5LoginModule required

useKeyTab=true

keyTab="/opt/impala.keytab" --同**文件路径

storeKey=true

useTicketCache=false

principal=“[email protected]”; --同用户名

};

如果该项没有填写,永洪BI会使用操作系统缓存的ticket和server 进行通信,如果系统没有缓存,永洪BI会提示Unable to obtain Principal Name for authentication。

注意:如果需要连接zookeeper,该项为必填项,否则永洪BI会提示:

Hive: 无法连接数据库,具体原因:“org.apache.hive.jdbc.ZooKeeperHiveClientException: Unable to read HiveServer2 configs from ZooKeeper”。KeeperErrorCode = ConnectionLoss for /hiveserver2 。

HBase: 无法连接数据库,具体原因:“org.apache.hadoop.hbase.client.RetriesExhaustedException: Can’t get the location for replica 0”。

注意:连接Hbase、Impala时,受其驱动限制,该项为必填项。

4、用户名:必填项,用于永洪BI和KDC主机通信,Kerberos的principal,格式为:service/[email protected](或者[email protected])。如果在krb5文件中指定了default_realm,此处可以省略realm,例如 [email protected] 可以写为yonghong。

注意:

1、以上的配置项仅用于永洪BI和KDC主机进行通讯,以获取和数据库主机通信的ticket,永洪BI拿到ticket后才可以与数据库主机通信,与数据库通信的信息一般写在url中(HBase除外)。

2、如果永洪BI所在的主机和KDC主机的时间(包含时区)不一致,在测试连接时,永洪BI会提示Cannot locate default realm。时区修改后需要重启永洪BI。

三、Hive 连接说明

3.1 驱动

org.apache.hive.jdbc.HiveDriver,受驱动版本限制可能有所不同。

驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。

3.2 数据库连接URL

灰色字体的信息需要根据客户环境自行配置,各项配置以 ; 隔开。连接zookeeper与直连hive数据库的区别,zookeeper提供了高可用的数据库环境,当一台数据库故障后,zookeeper可以使用其他正常的数据库继续提供服务。

连接zookeeper:

jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;saslQop=auth-conf;auth=KERBEROS;principal=hive/[email protected]

直连hive数据库:

jdbc:hive2://YH01:21066/default;saslQop=auth-conf;principal=hive/[email protected]

3.3 URL各项说明

►YH01:24002,YH02:24002,YH03:24002

连接zookeeper

zookeeper集群各节点的域名或IP,注意是 ip:port,ip:port,ip:port,端口号是zookeeper服务监听的端口号,与hive-site.xml中hive.zookeeper.client.port的值保持一致。

直连hive数据库

hive数据库所在的主机的ip,与hive-site.xml中hive.server2.thrift.bind.host的值保持一致。端口号是hive数据库监听的端口号,与hive-site.xml中hive.server2.thrift.port的值保持一致。

►serviceDiscoveryMode=zooKeeper 固定项,代表连接是zookeeper。

►auth=KERBEROS 固定项,代表使用Kerberos进行用户认证。

►sasl.qop=auth-conf 永洪BI和Hive数据库通信时的加密信息,与hive-site.xml中hive.server2.thrift.sasl.qop的值保持一致。

►zooKeeperNamespace=hiveserver2 与 hive-site.xml中hive.server2.zookeeper.namespace的值保持一致。

►principal=hive/[email protected] 连接hive数据库的Kerberos principal,与hive-site.xml中hive.server2.authentication.kerberos.principal的值保持一致。

3.4 注意事项

1、默认情况下Hive数据库服务器中 hive.server2.thrift.sasl.qop属性默认值是auth(CDH 安装的Hive使用的是默认值)。永洪BI在连接hive数据库时,发现如果url上没有附带saslQop(sasl.qop),会自动添加sasl.qop=auth-conf(驱动默认), 这就造成了永洪BI和Hive数据库服务器加密不一致。此时永洪BI会提示 No common protection layer between client and server,所以需要将sasl.qop和hive.server2.thrift.sasl.qop 保持一致。

2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。下图为Hive数据库连接示例。

关于永洪BI Kerberos机制的详细介绍

四、Phoenix HBase 连接说明

4.1驱动

org.apache.phoenix.jdbc.PhoenixDriver,受驱动版本限制可能有所不同。

驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。

4.2 数据库连接URL

灰色字体的信息需要根据客户环境自行配置,各项配置以 : 隔开。

连接zookeeper

jdbc:phoenix:YH01,YH02,YH03:24002:/hbase:[email protected]:/opt/yh/user.keytab

4.3 URL各项说明

►YH01,YH02,YH03 zookeeper集群各节点的域名或IP 与hbase-site.xml 中的 hbase.zookeeper.quorum 的值保持一致。如果连接的不是zookeeper集群,queryserver.domain:8765 是queryserver的ip地址:端口号

►24002 端口号与hbase-site.xml中hbase.zookeeper.property.clientPort的值保持一致。

►/hbase 与hbase-site.xml中的 zookeeper.znode.parent 的值保持一致。

[email protected] 永洪BI连接KDC主机的Kerveros principal,因为在数据源配置了 用户名 此处可以省略。

►/opt/yh/user.keytab 永洪BI连接KDC主机的**文件,因为在数据源中配置了**文件路径 此处可以省略。

Hbase JDBC连接参数参考以下连接,请参考:

http://phoenix.apache.org/faq.html#What_is_the_Phoenix_JDBC_URL_syntax

4.4 注意事项

1、连接HBase数据库时,需要将hbase-site.xml文件拷贝到永洪BI安装目录/Yonghong/lib下面。否则产品会提示(仅供参考)

java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper

g5.util.RTWrappedException: java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper

java.lang.NoClassDefFoundError: Could not initialize class org.apache.phoenix.jdbc.PhoenixDriver

2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。

下图为HBase数据库连接示例。

关于永洪BI Kerberos机制的详细介绍

五、Spark连接说明(附加)

5.1 驱动

org.apache.hive.jdbc.HiveDriver,受驱动版本限制可能有所不同。

驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。

5.2 数据库连接URL

灰色字体的信息需要根据客户环境自行配置,各项配置以 ; 隔开。

连接zookeeper

spark:jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/default;principal=spark/[email protected];saslQop=auth-conf;serviceDiscoveryMode=zooKeeper;auth=KERBEROS;zooKeeperNamespace=sparkthriftserver

spark2x:

jdbc:hive2://YH01:24002,YH02:24002,YH03:24002/default;principal=spark2x/[email protected];saslQop=auth-conf;serviceDiscoveryMode=zooKeeper;auth=KERBEROS;zooKeeperNamespace=sparkthriftserver2x

5.3 URL各项说明(以Spark为例)

►YH01:24002,YH02:24002,YH03:24002

连接zookeeper

集群各节点的域名或IP,注意是 ip:port,ip:port,ip:port,与spark-defaults.conf中spark.deploy.zookeeper.url 保持一致。

► default 默认数据库。

►principal= spark/[email protected] 连接hive数据库的Kerberos principal,与spark-defaults.conf中spark.beeline.principal的值保持一致。

► saslQop=auth-conf 永洪BI和Spark通信时的加密信息,与hive-site.xml中hive.server2.thrift.sasl.qop的值保持一致。

► serviceDiscoveryMode=zooKeeper 固定项,代表连接是zookeep。

► auth=KERBEROS 固定项,代表使用Kerberos进行用户认证。

►zooKeeperNamespace=hiveserver2 与 spark-defaults.conf中spark.thriftserver.zookeeper.namespace的值保持一致。

5.4 注意事项

1、同hive的saslQop

2、连接zookeeper时,数据源“Jaas文件路径”项为必填项。下图为Spark数据库连接示例。

关于永洪BI Kerberos机制的详细介绍

六、IMPALA 连接说明

6.1 驱动

com.cloudera.impala.jdbc41.Driver,受驱动版本限制可能有所不同。

驱动相关的jar文件建议由客户提供,以免出现版本不对应或者缺少jar文件的问题。如何找驱动参见8.1 节。

6.2 数据库连接URL

直连impala数据库

jdbc:impala://192.168.1.232:21050;AuthMech=1;KrbRealm=HADOOP.COM;KrbHostFQDN=cdh-1-232;KrbServiceName=impala

6.3 URL各项说明

相当于把principal各项拆分,service/[email protected],impala/[email protected]

KrbRealm:realm

KrbHostFQDN:host

KrbServiceName:service

impala数据库的端口由于没找到配置文件不确定和那个属性对应,但是在管理界面可以找到。如下图:

关于永洪BI Kerberos机制的详细介绍

Impala JDBC连接参数参考以下链接:https://www.simba.com/products/Hive/doc/JDBC_InstallGuide/content/jdbc/hi/options/intro-auth.htm

6.4 注意事项

1、数据源“Jaas文件路径”项为必填项。

2、url中需要附加AuthMech =1,如果url中没有AuthMech,产品提示[Simba]ImpalaJDBCDriver Error setting/closing session: {0}.

下图为Impala 数据库连接示例。

关于永洪BI Kerberos机制的详细介绍