[平台]数据连接Kerberos认证

编辑
  • 文档创建者:susie
  • 浏览次数:1791次
  • 编辑次数:14次
  • 最近更新:Kevin-s 于 2019-06-05
  • 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目录下。内容如下:

    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; };

    示例如下图:


    3) 在 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 文件示例如下:




    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

    附件列表


    主题: 数据决策系统
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

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

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