1、Sentry的管理对象有三个,数据库,角色,组。
数据库是在hive里面创建的,
角色可以在hive或者impala里面创建,
组是操作系统的组
2、Sentry的权限管理通过hive和impala语句完成,为了便于管理,Sentry中的对象进行如下规范:
1、Sentry中的角色和数据库命名一致,一个角色对应一个数据库。
2、Sentry中的角色与组是多对一的关系,即一个组可以拥有多个角色。
3、常用操作:
列出所有角色:show roles;
创建一个角色:apollo;
列出所有数据库:show databases;
将一个数据库的权限赋给一个角色:grant all on database apollo to role apollo;
如果数据库中的是外部表,需要同时给角色赋予uri权限:
grant all on uri 'hdfs://nameservice1/ruyudata/apollo' to role apollo;
4、删除和修改一个角色
将数据库权限从一个角色中删除:
revoke all on database apollo from role apollo;
删除一个角色:
drop role apollo;
5、绑定角色,组,用户
首先在操作系统中创建组(所以NN和DN都要执行)
groupadd apollo_group
创建一个操作系统用户940813(所有NN和DN都要执行)
uaseradd 940813
将用户加入这个组(所有NN和DN都要执行)
usermod -a -G apollo_group 940813
接下来对组和hive或impala角色进行绑定
将角色赋给一个组:
grant role apollo group apollo_group
列出角色对应的权限:
show grant role apollo;
6、注意:
完成以上操作以后,用户940813即具有了相应数据库apollo的操作权限。此时需要执行invalidate metadata操作,才会生效。将用户940813从apollo中去掉,用户对数据库的操作权限即消失。
7、hue用户配置
Hue中的用户和操作系统中的用户一一映射,HUE通过寻找相同用户名的操作系统用户来确定对应的sentry权限。