公司最近Hadoop集群和其他服务机器复用严重,提供了新机器,想将Hadoop集群迁出。
Hadoop使用的CDH集成环境,从CDH5.3跨越到CDH6.2
之前在CDH5.3上将hive从0.13升级到1.2.1。然后做了hive权限控制
详情见https://blog.csdn.net/u012422198/article/details/94434445
想在CDH6.2中同样来一套时,发现hive2.1.1中 无法进行全局权限赋予了
grant select to user bigdata;报错提示我不支持object为all
必须每个数据库每张表去做权限控制,那么维护量太多。
然后我就使用Sentry,不开启Kerberos【因为对外只提供Hue访问且一般业务人员不是用权限配置SQL】,启动Sentry测试模式使用。
第一部分:
1.在mysql中配置数据库
create database sentry deault character set utf8;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry';
flush privileges;
2.先在CDH中安装Sentry组件,gateway 选择全部节点。server选择主节点。
安装完成后
3.hive 配置中启用Sentry服务,关闭Hive的用户模拟功能,集群未启用安全认证环境下,需要配置以下参数
sentry.hive.testing.mode
true
配置好hive的server
sentry.hive.server
server1
4.impala配置中启动sentry
Impala服务范围none-->sentry
5.配置Hue与Sentry集成
Hue服务范围none-->sentry
6.HDFS启用ACLS和Sentry权限同步
7.回到Cloudera Manager主页,部署客户端配置并重启相关服务
第二部分:
1.使用beeline连接HiveServer2,并登录hive用户
beeline
!connect jdbc:hive2://你的主机名:10000
这时会让你输入用户名和密码,这里都输入hive
2.创建admin,impala,bigdata角色
create role admin;
create role impala;
create role bigdata;
3.为角色赋予超级权限
grant all on server server1 to role admin;
grant select on server server1 to role bigdata;
grant select on server server1 to role impala;
grant create on server server1 to role bigdata;
4.将角色授权给各个用户组
grant role admin to group hive; --hive用户组有admin权限
grant role impala to group impala;--impala用户组有查询权限
grant role bigdata to group bigdata;--bigdata用户组有查询和创建权限。
这样之后在Hue中新建用户和组bigdata,新建用户和组hive。各自分配好Hue的访问权限,如bigdata可访问impala和hive
hive为管理员权限,这样bigdata登录Hue就不怕误删hive中非bigdata所建的表了;
Hue机器上记得添加新用户bigdata 所属组为bigdata