1. 概述
1.1 版本
版本 | 功能變動 |
---|---|
11.0 | - |
11.0.7 | 優化 Kerberos 認證方式,可在前端直接上傳相關檔案 |
11.0.10 | 新增報錯 31300010 報錯解決方案 |
1.2 認證方式簡介
1)Kerberos 認證是 Hadoop 生態的一種通用的認證方式。
2)配置 Kerberos 認證的方式有兩種:
直接使用資料連結配置介面中的 Kerberos 認證:主要用於 Hive、HBase 等驅動的認證連結。
配置 JVM 參數後再進入資料連結配置介面進行認證:主要用於按要求填寫資料連結配置介面認證成功,建立連結依然拋錯的情況,比如 CDH 的 Impala 等資料庫。
1.3 支援的資料庫
支援的資料庫類型如下,進行 Kerberos 認證的資料庫,需要更換專用的驅動,URL 格式也要有所改變,詳情請參見:Kerberos 驅動整理
Apache Impala
Hadoop Hive
Spark
Transwarp Inceptor(星環)
Apache Phoenix
HBase
注:不支援多個 Kerberos 認證同時存在。例如:資料連結A 和 資料連結B 都需要進行 Kerberos 認證,那麼這兩個連結同一個時間內只能成功連結上一個。
1.4 資料連結前的準備工作
下載環境上的配置檔案 krb5.conf、XXX.keytab、principal 。
XXX.keytab 為金鑰表檔案,需要在提供 Kerberos 服務的應用伺服器上找到該檔案的對應位置。在不同伺服器上 keytab 的檔案名稱可能不一樣,這裏用 XXX 代替。
2. 操作步驟
這裏以 Hive 為例。
2.1 配置 Hosts 檔案
配置本地 hosts 檔案,例如路徑為C:\Windows\System32\drivers\etc\hosts,在此檔案增加遠端映射的配置,映射格式為「 IP 機器名」。如下圖所示:
注:對於維運平台部署的工程,如果需要使用kerberos認證,需要修改容器與宿主機的host,新增資料庫和kerberos認證中心的域名。
2.2 設定資料連結
1)參考 Kerberos 驅動整理 找到對應驅動,更改 URL 為對應格式,切換認證方式為 Kerberos。如下圖所示:
2)上傳 「keytab」檔案和「krb5.conf」檔案,如下圖所示:
3)點選「測試連結」,連結成功如下圖所示:
3. 注意事項
3.1 檢查伺服器及認證資訊
檢查內容 | 要求 |
檢查 FineReport 伺服器所在機器和資料庫伺服器的系統時間差 | 通常要求時間差小於 5 分鐘 |
檢查配置 FineReport 伺服器所在機器的 hosts 檔案 | 需確認能透過主機名/域名 ping 通資料庫伺服器 |
FineReport 自帶的 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 |
檢查 FineReport 的工程路徑 | 確定不帶有空格(如 tomcat 9),因為 Kerberos 認證不支援帶有空格路徑 |
3.2 無法連結處理方式
1)若連結失敗,可與平台資料庫管理者確認相關服務的安全認證配置是否正確,並聯系帆軟技術支援並提供相關報錯日誌(新增 JVM 安全除錯參數,如下所示),資料平台資料庫版本、對應驅動 JAR 包、相關連結資訊、Java 認證連結測試程式碼或者能連結認證資料庫的 shell 工具等。
JVM 安全除錯日誌參數:
2)特殊情況下,如果 Windows 系統下無法連結,可以把 FineReport 測試伺服器部署在 Linux 系統上。需保證該伺服器能透過相關 shell 工具連上資料庫,透過 klist 能看到已快取的 kgt 資訊。
3.3 報錯
3.3.1 報錯: 31300010 kdc伺服器不連通
原因:連結逾時
解決方法:改大逾時時間