當前為5.1版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

資料連結 Kerberos 認證

1. 概述

1.1 版本

FineBI 版本
功能變動
5.1.14使用隔離插件的情況下,支援 Kerberos 認證

1.2 功能簡介

1)Kerberos 認證 是 Hadoop 生態的一種通用的認證方式。

2)配置 Kerberos 認證的方式有兩種:

  • 直接使用資料連結配置介面中的 Kerberos 認證:主要用於 Hive、HBase 等驅動的認證連結。

  • 配置 JVM 參數後再進入資料連結配置介面進行認證:主要用於按要求填寫資料連結配置介面認證成功,建立連結依然拋錯的情況,比如 CDH 的 Impala 等資料庫。

1.3 支援的資料庫

 FineBI 在配置指定的資料連結時支援 Kerberos 認證,支援的資料庫型別如下圖所示:

  資料庫
  Apache Impala注:只能用方法二,不能用方法一
  Hadoop Hive
  Spark
  Transwarp Inceptor(星環)
  Apache Phoenix
  HBase

1.4 資料連結前的準備工作

1)下載環境上的配置檔案 krb5.conf、XXX.keytab、principal 。

2)principal 為登入過 KDC 的用戶端名稱。格式通常為:帳號/部門@公司 。

3) XXX.keytab 為鍵表檔案,需要在提供 Kerberos 服務的應用伺服器上找到該檔案的對應位置。在不同伺服器上 keytab 的檔案名稱稱可能不一樣,這裏用 XXX 代替。

4)叢集環境配置 kerberos 認證, keytab 檔案需要放在各個節點。

2. 方法一:直接使用資料連結配置介面

這裏以 Spark 為例。

2.1 複製配置檔案

將 krb5.conf 和 XXX.keytab 放到相同目錄下,例如放到%FineBI%\webapps\webroot\WEB-INF\resources目錄下。

注:當有多個 Kerberos 認證時,keytab 檔案最好不要都放置在 reources 目錄下,可能會導致認證衝突。此時可以在 resources 下建立各自的資料夾,放置對應的認證檔案。

2.2 配置 hosts 檔案

配置本地 hosts 檔案,例如在路徑C:\Windows\System32\drivers\etc\hosts下配置遠端映射:192.168.5.127  quickstart.cloudera 。映射格式為「 IP  機器名」。如下圖所示:

1574066211785589.png

2.3 設定資料連結

1)選擇資料連結配置面板的認證方式為「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 金鑰路徑

%FineBI%\webapps\webroot\WEB-INF\resources\hive.keytab

如下圖所示:

1577931860577867.png

注:此處需確定 krb5.conf 和 XXX.keytab 放置在相同目錄下。

2)點選測試連結,連結成功如下圖所示:

1574064965717624.png

3.  方法二:配置 JVM 參數後再進入資料連結配置介面

以 Apache Impala 為例。這裏以本地部署下的 BI 為例,若為部署在 Tomcat 下的工程,則配置步驟一致,只需將位址修改為 Tomcat 下的對應位址即可。

3.1 複製配置檔案

下載環境上的配置檔案 krb5.conf 和 impala.keytab 放置到%FineBI%\webapps\webroot\WEB-INF\resources目錄下。

注:當有多個 Kerberos 認證時,keytab 檔案最好不要都放置在 reources 目錄下,可能會導致認證衝突。此時可以在 resources 下建立各自的資料夾,放置對應的認證檔案。

3.2 配置 krb5.ini 檔案

準備 krb5.ini 檔案,並將該 krb5.ini 檔案放置到%FineBI%\webapps\webroot\WEB-INF\resources目錄下,內容如下所示:

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

若使用的是 ibm 的 JDK ,在使用 websphere 容器部署工程時,krb5.ini 檔案內容需要改為:

Client {
      com.ibm.security.auth.module.Krb5LoginModule required
      credsType=both
      useKeytab="E:\\tomcat\\apache-tomcat-9.0.37\\webapps\\webroot\\WEB-INF\\resources\\impala\\impala.keytab"
      principal="impala/quickstart.cloudera@QUICKSTART.CLOUDERA";
};

3.3 新增 JVM 參數

1)進入 FineBI 安裝目錄 %FineBI%\bin ,找到 finebi.vmoptions 檔案,編輯該檔案,增加下面 2 個 JVM 參數,如下所示:

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

注:兩個參數的值為 krb5.conf 和 krb5.ini 檔案的絕對路徑。

編輯完成的 finebi.vmoptions 檔案範例如下:

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

注:此處若使用的不是單機版,而是 Spider 分佈式引擎,則需要在該檔案中重新整理增一個參數:-Dzookeeper.sasl.client=false,因為zookeeper 預設認證模式會受到 kerberos 配置的影響而導致 BI 無法啟動。

-Dzookeeper.sasl.client=false

2)此時同樣也需要配置遠端的映射,與方法一一致,詳見本文 2.1 章節第 2 小點。

3)選擇資料連結配置面板的認證方式為「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 金鑰路徑 %FineBI%\webapps\webroot\WEB-INF\resources\impala.keytab
  存放 impala.keytab 的路徑

資料連結介面如下圖所示:

1574074668886319.png

4)點選測試連結成功即可。如下圖所示:

1574075131333712.png

注1:儘管 Apache Impala 和 Hive 本身驅動不衝突,但是目前不支援同時對 Apache Impala 和 Hive 做 Kerberos 認證,因為 Kerberos 驅動本身會涉及到全局參數,如果被 Apache Impala 使用,那麼 Hive 就無法使用。

注2:在5.1.14之前的版本,若使用驅動隔離插件不支援 Kerberos 認證,5.1.14及之後的版本,驅動隔離插件支援 Kerberos 認證。

4. 注意事項

4.1 檢查伺服器及認證資訊

檢查內容要求
檢查 FineBI 伺服器所在機器和資料庫伺服器的系統時間差通常要求時間差小於 5 分鐘

檢查配置 FineBI 伺服器所在機器的 hosts 檔案

需應答能透過主機名/域名 ping 通資料庫伺服器
FineBI 自帶的 zookeeper 包與資料庫服務端的 zookeeper 版本需要匹配例如:華為 HD 平台連結可能會出現此類報錯
檢查 principal 名稱是否正確

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


檢查 FineBI 的工程路徑確定不帶有空格(如 tomcat 9),因為 Kerberos 認證不支援帶有空格路徑。

4.2 無法連結處理方式

1)若連結失敗,可與平台資料庫管理者應答相關服務的安全認證配置是否正確,並聯系帆軟技術支援並提供相關報錯日誌(提新增 JVM 安全除錯參數,如下所示),資料平台資料庫版本、對應驅動 JAR 包、相關連結資訊、Java 認證連結測試代碼或者能連結認證資料庫的 shell 工具等。

jvm 安全除錯日誌參數:

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

2)特殊情況下,如果 Windows 系統下無法連結,可以把 FineBI 測試伺服器部署在 Linux 系統上。需保證該伺服器能透過相關 shell 工具連上資料庫,透過 klist 能看到已快取的 kgt 資訊。

4.3 報錯

4.3.1 Unable to obtain Principal Name for authentication

問題描述:

cdh 連結拋錯:Unable to obtain Principal Name for authentication 

原因分析:

JDK 預設安裝的 JCE 不能處理超過 128 位的對稱金鑰。

解決方案:

更新 JRE 的 JCE 擴展包。

JCE 安裝詳情參見:擴展包安裝連結 。通常直接到第 4 步即可,下載解壓得到 JCE 擴展 JAR 包,然後到 JRE 的指定目錄更換檔案即可。

4.3.2 GSS initiate failed

問題描述:

Transwarp Inceptor(星環)資料庫報錯 GSS initiate failed 。

排查步驟:

驅動本身做了靜態全局的操作,kerberos 中心重新整理後,驅動內部的靜態全局還殘留,故資料連結連不上。重啓 BI 伺服器查看是否依舊有該報錯。若仍然有,採取下面的排查步驟:

  • (密碼錯誤)keytab 檔案與使用者不匹配,可以在用戶端伺服器中kinit-k-t keytab使用者進行檢查。

  • 本地伺服器和遠端伺服器的(時鐘偏移)時間不匹配,請檢查ntp到遠端伺服器。

  • (aes256不支援)預設情況下aes256不支援jdk/jre,需要從/opt/huawei/Bigdata/jdk/jre/lib/security路徑中的遠端伺服器複製local_policy.jar和US_export_policy.jar。

  • (無規則)主體格式預設不支援,需要新增屬性hadoop.security.auth_to_local(在core site.xml中)值規則:[1:$1]規則:[2:$1]。

  • (逾時)無法連結到kdc伺服器或網路中存在防火牆。

附件列表


主題: 连接到数据
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 评价文档,奖励 1 ~ 100 随机 F 豆!