在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#
建议服务器上创建一个admin组,而后增长一个用户加入这个组,由于上面几个组可能已经在服务器上存在,且大部分是/bin/false状态,自建用户和组最好
缓存
在hive sql里建立的role须要加入group,这个group就是os服务器的group。到这里已经能够针对hive进行权限的设置,但有点麻烦,由于若是有多台hiveserver2session
那不是天天机器都要建立一遍用户名和组吗,这个时候就要用ldap进行用户登陆,openldap安装方法不少,这里不作详细说明。可是用了ldap后,鉴权的用户和组仍是在os服务器上app
这里就须要用到sssd和nslcd,作ldap的mapping,原理就是把ldap上的用户缓存到本地,这样不用给ldap过多请求压力,使用命令getent passwd | getent groupide
能够看出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权限
若是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里是看不到任何数据库的