CDH Sentry 管理Hive鑑權

在CM管理界面上要開啓一些選項,這裏不作詳細說明,網上一查都有,推薦文章http://www.jianshu.com/p/055c40dcb8c5 html

但僅限於看配置的內容,至於下面的,做者沒有詳細解釋sql

sentry的權限設置是在hive sql中完成的,須要用Beeline登陸,如beeline -u jdbc:hive2://hiveIP:10000 -n user -p passwd數據庫

用戶名密碼屬於hive所在的OS服務器,也就是說你要在hiveserver2上創建一個用戶而且設置密碼才能夠登陸,進去後默認這幾個用戶組有admin權限,即進行grant role,show role等c#

Snip20171124_8.png

建議服務器上創建一個admin組,而後增長一個用戶加入這個組,由於上面幾個組可能已經在服務器上存在,且大部分是/bin/false狀態,自建用戶和組最好
緩存

權限設置方法參考https://www.cloudera.com/documentation/enterprise/5-9-x/topics/sg_hive_sql.html#concept_c2q_4qx_p4__section_gpy_pg4_rp服務器

在hive sql裏建立的role須要加入group,這個group就是os服務器的group。到這裏已經能夠針對hive進行權限的設置,但有點麻煩,由於若是有多臺hiveserver2session

那不是天天機器都要建立一遍用戶名和組嗎,這個時候就要用ldap進行用戶登陸,openldap安裝方法不少,這裏不作詳細說明。可是用了ldap後,鑑權的用戶和組仍是在os服務器上app

這裏就須要用到sssd和nslcd,作ldap的mapping,原理就是把ldap上的用戶緩存到本地,這樣不用給ldap過多請求壓力,使用命令getent passwd | getent groupide

Snip20171124_10.png

能夠看出1000開始的uid是ldap上的,本地不用創建,可是本地也有了這個用戶,固然這些用戶是沒法登陸的,能夠放心post

ldap mapping的配置方法參考http://maxshu.lofter.com/post/6c7b3_93f73,做者寫的很詳細,按照他來不會錯

ldap這邊我用了雙機互爲熱備模式,貼出部分配置,slapd.conf

###sync###

index entryCSN,entryUUID eq

overlay syncprov

syncprov-checkpoint 1 1  有一天同步一條記錄

syncprov-sessionlog 100

serverID 001   兩臺機器ID要不同

syncrepl rid=000

  provider=ldap://另外一臺IP:389

  bindmethod=simple

  binddn="cn=Manager,dc=yonghui,dc=cn"

  credentials=wangjing3344      ldap登陸的密碼

  searchbase="dc=example,dc=cn"    dn

  schemachecking=off

  type=refreshAndPersist

  retry="60 +"

mirrormode on 

hue相似,開啓後能夠在hue上直接設置hive權限

image.png

若是hue也結合了ldap,可是原來已經創建了一些用戶怎麼辦?在cm裏搜索Hue Service Advanced Configuration Snippet (Safety Valve) for hue_safety_valve.ini 增長內容

[desktop]

[[auth]]

backend=desktop.auth.backend.LdapBackend,desktop.auth.backend.PamBackend,desktop.auth.backend.AllowFirstUserDjangoBackend

這樣2種方式創建的用戶就均可以登陸了,可是要注意,原先在hue上創建的用戶也要在ldap上配置,否則他在hive sql裏是看不到任何數據庫的

相關文章
相關標籤/搜索