前言
集羣啓用kerberos後,訪問impala的方式除了impala-shell、jdbc工具,還有hue
當然不可能在impala-shell編寫sql,jdbc工具的話,電腦上還得裝kerberos客戶端,雖然不麻煩,確實多了一步
所以通過sentry給hue授權,實現不同用戶登陸hue擁有不同得權限
hue權限
參考地址:
https://www.cloudera.com/documentation/enterprise/5-16-x/topics/hue_adm_permissions.html
注意:hue和底層集羣服務有獨立的權限,hue的超級管理員對hdfs、hive等等沒任何意義。
對於hue來說
第一個登陸的用戶擁有管理員權限,可以添加用戶/組,修改用戶密碼,分配hue那的權限
hue那的權限只是前端對用戶的顯示,如果沒有impala權限,該用戶則無法調impala sql,做不到對庫和表的控制
8888頁面也不會有impala那個tab,hue本身manage user可分配的權限對sentry沒有任何意義
使用sentry授權hue的用戶/組
參考地址:
https://www.cloudera.com/documentation/enterprise/5-16-x/topics/hue_sec_sentry_auth.html
條件:
cdh服務必須有認證(kerberos)
hue user/group必須和linux(所有節點)上的user/group一致
用第一次登陸的admin/admin添加用戶/組
並將該用戶設爲超級用戶
並在linux上添加該用戶組(所有節點)
爲了使用戶可以在hue中進行授權,該用戶的組必須在sentry如下配置中添加
添加完成後,重啓hue服務
可以看到,想成爲系統管理員,必須有一下條件:
在linux上必須有該用戶/組(已添加)
hue上有該用戶/組(已添加)
hue上該用戶是超級用戶(已修改)
sentry數據庫權限設置爲all(把之前給hive組的admin role 授給該組)
後面的hdfs的acl(用的kudu,不修改無影響)
剛啓用kerberos時,beeline進hive只有一個default庫,然後執行了以下操作
所以將admin role授給sysadmins組
grant role admin to group sysadmins;
打開8888,用test_hue1用戶登陸,管理員有所有庫的權限,並且可以管理hue的用戶/組,admin/admin除了可以管理用戶/組外,無法進行sentry授權
點擊左上角,並進入security
點擊roles,可以看到之前添加的role和group了
點擊右上角的add
name那需要填role名,groups所屬組,可以多個,也可以沒有
點擊+就可以grant privileges給該role了
第一個框填db或者db.tab,也可以*(表示所有庫),第二個爲hdfs的url(用不到),第三個就是分配權限了,分配完之後保存,beeline進hive可以show roles;就可以看到在hue界面創的role了.
注意:要爲一個用戶分配權限,必須在hue界面添加用戶並分配組,還得在linux上添加用戶/組,用戶名/組名必須同名,如果該用戶需要jdbc or odbc遠程連接,必須添加kerberos princ並設置密碼(princ必須通linux/hue用戶同名),就可以遠程訪問了。