1. 描述编辑
kerberos认证是hadoop生态的一种通用的认证方式。
数据库 |
---|
APACHE IMPALA |
Hadoop Hive |
SPARK |
TRANSWARP INCEPTOR(星环) |
APACHE Phoenix |
Hbase |
在FineReport连接上面六个数据库时,配置数据连接时均支持kerberos认证,配置该认证的方式有两种:
1)使用数据连接配置界面中的Kerberos认证,主要用于hive、hbase等驱动的认证连接;
2)配置jvm参数进行认证,主要用于按要求填写数据连接配置界面认证成功,创建连接依然抛错的情况,比如cdh的impala等数据库;
数据连接前的准备工作:
需要下载环境上的配置文件krb5.conf、XXX.keytab、principal(principal的格式通常为:用户名/部门@公司,例如:user/bigdata@test.com)文件。
注:其中XXX.keytab为密钥表文件,需要在提供kerberos服务的应用服务器上对应位置找到该文件。
2. 方式一:使用数据连接配置界面编辑
这里以Spark为例
1) 下载环境上的配置文件krb5.conf和XXX.keytab放到%FR_HOME%\webapps\webroot\WEB-INF\resources目录下;
注:当有多个Kerberos认证的时候,keytab文件不要都放在reources目录下,会冲突。可以在resources下新建各自的文件夹放置对应的认证文件。
2) 勾选数据连接配置面板的“kerberos认证”,按要求填写客户端principal和keytab密钥路径,keytab的名称根据实际情况修改。其他按配置数据连接中的说明进行数据连接,注意url后面需要加上principal,例如:
选项 | 值 |
---|---|
url | jdbc:hive2://192.168.5.127:10000/default;principal=hive/quickstart.cloudera@QUICKSTART.CLOUDERA |
客户端principal | hive/quickstart.cloudera@QUICKSTART.CLOUDERA |
keytab密钥路径 | %FR_HOME%\webapps\webroot\WEB-INF\resources\hive.keytab |
点击测试连接,连接成功如下图:
3. 方法二:配置jvm参数编辑
这里以APACHE IMPALA为例
配置步骤:
1) 下载环境上的配置文件krb5.conf和impala.keytab放到%FR_HOME%\webapps\webroot\WEB-INF\resources目录下;
2) 准备krb5.ini文件,放到%FR_HOMR%\webapps\webroot\WEB-INF\resources目录下。内容如下:
示例如下图:
3) 在FineReport安装目录bin下找到designer.vmoptions文件(没有就新建一个),编辑该文件,增加下面2个jvm参数(两个参数的值为krb5.conf和krb5.ini文件的绝对路径)
编辑完成的designer.vmoptions文件示例如下:

4) 勾选数据连接配置面板的"kerberos认证",按要求填写客户端principal和keytab密钥路径,keytab的名称根据实际情况修改。其他按配置数据连接中的说明进行数据连接,注意url后面需要加上AuthMech、KrbHostFQDN、KrbServiceName三个参数,例如:
选项 | 值 | 含义 |
---|---|---|
url | jdbc:impala://192.168.5.127:21050/default;AuthMech=1;KrbHostFQDN=quickstart.cloudera;KrbServiceName=impala | AuthMech=1 表示使用kerberos认证; KrbHostFQDN为impala server,为krb5.conf文件中admin_server的值; KrbServiceName为对应的服务名,详细解释点击 |
客户端principal | impala/quickstart.cloudera@QUICKSTART.CLOUDERA | |
keytab密钥路径 | %FR_HOME%\webapps\webroot\WEB-INF\resources\impala.keytab | 存放impala.keytab的路径 |
4. 注意事项编辑
1、下载zookeeper包与数据库服务端的zookeeper版本需要匹配(华为HD平台连接可能会出现此类报错);
2、principal名称写错或者没对应上。principal的格式前面提到了,通常为用户名/部门@公司,例如:user/bigdata@test.com。确认principal是否正确的方式是在数据库服务端shell执行klist或者kinit -k -t /path/to/keytab name_of_principal测试;
或者直接通过beeline、impala-shell等工具连接一下开启认证的服务,并查看对应的principal信息。
比如:hive服务对应principal为hive/bigdata@XXX.COM,而impala服务对应的principal为impala/bigdata@XXX.COM;
3、检查报表服务器所在机器和数据库服务器的系统时间差,通常要求时间差小于5分钟;
4、配置报表服务器所在机器的host文件(要保证能通过主机名/域名ping通数据库服务器);
5、cdh连接抛错Unable to obtain Principal Name for authentication可能要更新一下jre的JCE扩展包(因为jdk默认安装的JCE不能处理超过128位的对称密钥,扩展包安装连接见备注);
注:JCE安装:https://sourceforge.net/p/skcc/wiki/Install%20JDK8%20and%20JCE%20on%20Windows/通常直接到第4步即可,下载解压得到JCE扩展jar包,然后到jre的指定目录替换文件。
6、特殊情况下,如果Windows系统下无法连接,可以把FineReport测试服务器部署在Linux系统上(需保证该服务器能通过相关shell工具连上数据库,通过klist能看到已缓存的kgt信息);
7、如果尝试了上面的方法还是连接失败,请与平台数据库管理员确认,相关服务的安全认证配置是否正确,并请联系帆软技术支持并提供相关报错日志(提添加jvm安全调试参数,见下面备注),数据平台数据库版本、对应驱动jar包、相关连接信息、Java认证连接测试代码或者能连接认证数据库的shell工具等。
备注:
jvm安全调试日志参数:
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext
-Djava.security.krb5.debug=true