数据连接Kerberos认证

编辑
  • 文档创建者:doreen0813
  • 浏览次数:5315次
  • 编辑次数:23次
  • 1、描述

    kerberos认证是hadoop生态的一种通用的认证方式,在FineBI连接APACHE IMPALA、Hadoop Hive、SPARK、TRANSWARP INCEPTOR(星环)、APACHE Phoenix、Hbase这六个数据库时,配置数据连接时均支持kerberos认证,配置该认证的方式有两种:

    1)使用数据连接配置界面中的Kerberos认证,主要用于hive、hbase等驱动的认证连接;

    2)配置jvm参数进行认证,主要用于按要求填写数据连接配置界面认证成功,创建连接依然抛错的情况,比如cdh的impala等数据库;

    数据连接前的准备工作:

    需要准备krb5.conf、XXX.keytab、principal(principal的格式通常为:用户名/部门@公司,例如:user/bigdata@test.com)文件。

    注:其中XXX.keytab为密钥表文件,需要在提供kerberos服务的应用服务器上对应位置找到该文件。在不同服务器上该keytab的文件名称可能不一样,因此在这里用XXX代替。

    2、Kerberos认证步骤

    2.1 使用数据连接配置界面

    配置步骤:

    1. 将krb5.conf和XXX.keytab放到相同目录下,例如放到%FineBI%\webapps\webroot\WEB-INF\resources目录下;

      注:当有多个Kerberos认证的时候,keytab文件不要都放在reources目录下,会冲突。可以在resources下新建各自的文件夹放置对应的认证文件。

    2. 勾选数据连接配置面板的kerberos认证单选框,按要求填写principal和keytab文件路径。例如:keytab文件路径为%FineBI%\webapps\webroot\WEB-INF\resources\XXX.keytab

      222

      注:此处需确保krb5.conf和XXX.keytab放在相同目录下,目录不需要一定是\webapps\webroot\WEB-INF\resources,只需相同目录即可。

    3. 点击测试连接,连接成功如下图:

      222

    2.2 配置jvm参数

    配置步骤:

    1. 准备krb5.ini文件,内容如下:

      Client {
          com.sun.security.auth.module.Krb5LoginModule required doNotPrompt = true 
          useKeyTab = true 
          keyTab = "%FineBI%\webapps\webroot\WEB-INF\XXX.keytab"
          principal = "dummy@SOME.REALM"
          debug = false;
      };

      将该krb5.ini文件放到特定目录下(为了得到详细报错日志可设置上述文件中的debug=true)。例如放到%FineBI%\webapps\webroot\WEB-INF目录下。

    2. 在FineBI安装目录bin下找到finebi.vmoptions文件,编辑该文件,增加下面2个jvm参数(两个参数的值为krb5.conf和krb5.ini文件的绝对路径)

      -Djava.security.krb5.conf=%FineBI%\webapps\webroot\WEB-INF\krb5.conf
      -Djava.security.auth.login.config=%FineBI%\webapps\webroot\WEB-INF\krb5.ini

      编辑完成的FineBI.vmoptions文件示例如下:

      -Djava.security.krb5.conf=%FineBI%\webapps\webroot\WEB-INF\krb5.conf 
      -Djava.security.auth.login.config=%FineBI%\webapps\webroot\WEB-INF\krb5.ini 
      -Xmx4096m 
      -Dfile.encoding=UTF-8 
      -Djava.io.tmpdir=.\temp

      注:此处若使用的不是单机版,而是Spider分布式引擎,则需要在该文件中再添加一个参数:-Dzookeeper.sasl.client=false,因为zookeeper默认认证模式会受到kerberos配置的影响而导致BI启动不了。

      -Dzookeeper.sasl.client=false
    3. 这种情况下也要勾选数据连接配置面板的kerberos认证单选框,填写驱动器、URL、客户端principal、keytab密钥路径、用户名密码等信息后测试数据连接并保存。例如:

      客户端principal:dummy@SOME.REALM

      keytab密钥路径:%FineBI%\webapps\webroot\WEB-INF\XXX.keytab

    4. 点击测试连接成功即可。

    注:若为部署在Tomcat下的工程,则配置步骤与上述一致,对应地址修改为Tomcat下的对应地址。比如:

    步骤1:准备krb5.ini文件中ketTab路径为%Tomcat%/webapps/webroot/WEB-INF/xxx.keytab

    步骤2:在Tomcat下为编辑%Tomcat%/bin/catalina.bat(Windows)或者%Tomcat%/bin/catalina.sh(Linux),增加对应的参数和文件绝对路径地址。  

    步骤3:数据连接时,keytab密钥路径也要填写为对应放置文件的位置;  

    3、注意事项

    1. bi自带的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. 检查bi服务器所在机器和数据库服务器的系统时间差,通常要求时间差小于5分钟;

    4. 配置bi服务器所在机器的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系统下无法连接,可以把FineBI测试服务器部署在Linux系统上(需保证该服务器能通过相关shell工具连上数据库,通过klist能看到已缓存的kgt信息);

    7. 如果尝试了上面的方法还是连接失败,请与平台数据库管理员确认,相关服务的安全认证配置是否正确,并请联系帆软技术支持并提供相关报错日志(提添加jvm安全调试参数,见下面备注),数据平台数据库版本、对应驱动jar包、相关连接信息、Java认证连接测试代码或者能连接认证数据库的shell工具等。

      备注:

      jvm安全调试日志参数:

      -Djava.security.debug=gssloginconfig,configfile,configparser,logincontext

      -Djava.security.krb5.debug=true

    8. FineBI工程路径不要带有空格(如tomcat 9),kerbos认证不支持。

    附件列表


    主题: 数据准备
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]