反饋已提交
網絡繁忙
1)Kerberos 认证是 Hadoop 生态的一种通用的认证方式。
2)配置 Kerberos 认证的方式有两种:
直接使用数据连接配置界面中的 Kerberos 认证:主要用于 Hive、HBase 等驱动的认证连接。
配置 JVM 参数后再进入数据连接配置界面进行认证:主要用于按要求填写数据连接配置界面认证成功,创建连接依然抛错的情况,比如 CDH 的 Impala 等数据库。
FineReport 在配置指定的数据连接时支持 Kerberos 认证,支持的数据库类型如下:
Apache Impala:只能使用下面的方法二连接,不能用方法一
Hadoop Hive
Spark
Transwarp Inceptor(星环)
Apache Phoenix
HBase
1)下载环境上的配置文件 krb5.conf、XXX.keytab、principal 。
2)principal 为注册过 KDC 的客户端名称。格式通常为:用户名/部门@公司 。
3) XXX.keytab 为密钥表文件,需要在提供 Kerberos 服务的应用服务器上找到该文件的对应位置。在不同服务器上 keytab 的文件名称可能不一样,这里用 XXX 代替。
这里以 Spark 为例。
下载环境上的配置文件 krb5.conf 和 XXX.keytab 放到%FR_HOME%\webapps\webroot\WEB-INF\resources目录下;
注1:当有多个 Kerberos 认证的时候,不同的 keytab 文件不要都放在 reources 目录下,会有冲突。可以在 resources 下新建各自的文件夹放置对应的认证文件。
注2:同一种数据库 kerberos 客户端是不能同时用两个 keytab 去登录两个用户的,一方面是驱动本身不支持两个 kerberos 认证,另一方面是不支持有两个相同数据库类型驱动同时存在。
配置本地 hosts 文件,例如路径为C:\Windows\System32\drivers\etc\hosts,配置远端的映射,映射格式为「 IP 机器名」。如下图所示:
1)选择数据连接配置面板的认证方式为「Kerberos 认证」,按要求填写客户端 principal 和 keytab 密钥路径,keytab 的名称根据实际情况修改。其他按配置 数据连接 中的说明进行数据连接。
注:URL 后面需要加上 principal 。
2)如下图所示:
3)点击测试连接,连接成功如下图所示:
这里以 Apache Impala 为例。
下载环境上的配置文件 krb5.conf 和 impala.keytab 放到%FR_HOME%\webapps\webroot\WEB-INF\resources目录下;
准备 krb5.ini 文件,放到%FR_HOMR%\webapps\webroot\WEB-INF\resources目录下。内容如下:
Client { com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = true useKeyTab = true keyTab = "%FR_HOME%\webapps\webroot\WEB-INF\resources\XXX.keytab" principal = "dummy@SOME.REALM" debug = true;};
1)进入 FineReport 安装目录 bin下找到 designer.vmoptions文件,编辑该文件,增加下面 2 个 JVM 参数(两个参数的值为 krb5.conf 和 krb5.ini 文件的绝对路径)
注:若没有该文件则新建。
-Djava.security.krb5.conf=%FR_HOME%\webapps\webroot\WEB-INF\resources\krb5.conf-Djava.security.auth.login.config=%FR_HOME%\webapps\webroot\WEB-INF\resources\krb5.ini
编辑完成的 designer.vmoptions 文件示例如下:
2)此时同样也需要配置远端的映射,与方法一一致。
3)选择数据连接配置面板的认证方式为「Kerberos 认证」,按要求填写客户端 principal 和 keytab 密钥路径,keytab 的名称根据实际情况修改。其他按配置 数据连接 中的说明进行数据连接,注意 url 后面需要加上 AuthMech、KrbHostFQDN、KrbServiceName 三个参数,如下所示:
KrbServiceName 为对应的服务名;
具体可参考官方文档:参数详细解释
4)点击测试连接成功即可。如下图所示:
检查配置 FineReport 服务器所在机器的 hosts 文件
principal 的格式通常为用户名/部门@公司,确认 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
1)若连接失败,可与平台数据库管理员确认相关服务的安全认证配置是否正确,并联系帆软技术支持并提供相关报错日志(提添加 JVM 安全调试参数,如下所示),数据平台数据库版本、对应驱动 JAR 包、相关连接信息、Java 认证连接测试代码或者能连接认证数据库的 shell 工具等。
JVM 安全调试日志参数:
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext-Djava.security.krb5.debug=true
2)特殊情况下,如果 Windows 系统下无法连接,可以把 FineReport 测试服务器部署在 Linux 系统上。需保证该服务器能通过相关 shell 工具连上数据库,通过 klist 能看到已缓存的 kgt 信息。
1)描述:cdh 连接抛错:Unable to obtain Principal Name for authentication 。
原因:JDK 默认安装的 JCE 不能处理超过 128 位的对称密钥。
解决方法:更新 JRE 的 JCE 扩展包。
操作步骤:JCE 安装详情参见:扩展包安装连接 。通常直接到第 4 步即可,下载解压得到 JCE 扩展 JAR 包,然后到 JRE 的指定目录替换文件即可。
2)描述:Transwarp Inceptor(星环)数据库报错 GSS initiate failed 。
原因:驱动本身做了静态全局的操作,kerberos 中心刷新后,驱动内部的静态全局还残留,故数据连接连不上。
解决方法:重启 FineReport 服务器。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉