叢集使用的是LDAP使用者模式進行系統使用者的管理,即使用者資訊由LDAP伺服器端維護,叢集的Hive結合Ranger,LDAP來進行hive功能的許可權控制,今天在使用命令列beeline登陸hive的時候,我的賬戶test密碼已經更新,但是我忘了,直接使用舊密碼,發現也可以正常登陸,即

# beeline

beeline>!connect jdbc:hive2://gx-batch-dn-t-2:2181,gx-batch-dn-t-7:2181,gx-batch-dn-t-15:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 test [email protected]

更搞笑的是,我直接使用一個隨便值,都能正常登陸到hive中,這對於生產叢集是一個非常大的漏洞,其他人可以隨意的登陸到系統,修改你的hive表資料,刪你的資料等等。

所以hive需要設定登陸,需要提供正常的LDAP使用者名稱已經使用者密碼才能登陸到系統中,使用自己的hive表。

修改的方式有2種。

1,如果你的叢集使用的ambari管理的。那麼登陸ambari, HIVE-->配置,在介面裡找到如圖中的內容:


HiveServer2 Authentication的預設值為NONE,也就意味著不需要驗證,只需要提供正確的使用者名稱即可。把它的值改為LDAP,修改為LDAP之後,此時 ambari並不支援你儲存這樣的修改,你會發現這樣的提示:


點選顯示詳情,內容如下:


也就是說,你要修改為LDAP,你要確認這個hive.server.authentcation.ldap.url是否需要跟著一起修改,把複選框的勾去掉,然後確定即可儲存了。

然後你在客戶端機器上執行登陸操作(使用錯誤的密碼:),提示如下:


此時使用錯誤的密碼登陸就會失敗。當然如果你的叢集使用的Kerberos,pam等等,修改為對應的驗證方式即可,然後注意下一些依賴的配置是否需要修改。例如文中的:hive.server.authentcation.ldap.url值。

.