常用命令
1)创建Role
create role role_name;
2)为role赋予privilege
GRANT select ON DATABASE ods to role role_name;
GRANT all ON TABLE TEST to role role_name;
3)将role授予用户组
GRANT ROLE role_name TO GROUP user_group_name;
4)查看权限授予情况
(1)查看所有role(管理员)
SHOW ROLES;
(2)查看指定用户组的role(管理员)
SHOW ROLE GRANT GROUP user_group_name;
(3)查看指定ROLE的具体权限(管理员)
SHOW GRANT ROLE role_name;
场景介绍
用户fanyunli对Hive ODS数据库有读写,修改表结构等所有权限,用户zhaominhui对Hive ODS数据库仅开放读数据权限。
Hive表读写权限使用案例
为admin角色赋予超级权限,并将admin角色授权hive用户组
jdbc:hive2://hadoop1:10000> create role admin;
jdbc:hive2://hadoop1:10000> grant all on server server1 to role admin;
jdbc:hive2://hadoop1:10000> grant role admin to group hive
注:这里必须授权hive用户组为超级用户权限
创建所有权限用户组和读权限用户组
在所有Hive节点创建所有权限用户组all_privilege和读权限用户组reader。
[root@hadoop2]# useradd all_privilege
[root@hadoop2]# passwd all_privilege
[root@hadoop2]# useradd reader
[root@hadoop2]# passwd reader
创建用户fanyunli 和 zhaominhui,并归入对应用户组
在所有Hive节点创建fanyunli和zhaominhui用户,前者归入all_privilege用户组,后者归入reader用户组。
[root@hadoop2]# useradd fanyunli
[root@hadoop2]# passwd fanyunli
[root@hadoop2 ~]# usermod -a -G all_privilege fanyunli
[root@hadoop2]# useradd zhaominhui
[root@hadoop2]# passwd zhaominhui
[root@hadoop2 ~]# usermod -a -G reader zhaominhui
#查看结果,显示fanyunli所在为用户组fanyunli和all_pribilege,zhaominhui所在用户组为zhaominhui和reader.
[root@hadoop1 ~]# id fanyunli
uid=1000(fanyunli) gid=1000(fanyunli) 组=1000(fanyunli),1006(all_privilege)
[root@hadoop1 ~]# id zhaominhui
uid=1007(zhaominhui) gid=1007(zhaominhui) 组=1007(zhaominhui),1001(reader)
创建读权限角色reader和所有权限角色all_privilege,并分别赋予reader用户组和all_privilege用户组
Sentry的三种权限:
SELECT -> 文件的Read权限
INSERT -> 文件的Write权限
ALL -> 文件的Read和Write权限
创建角色及赋予用户组过程:
[root@hadoop1 /opt/cloudera/parcels/CDH-5.7.4-1.cdh5.7.4.p0.2/lib/hive/bin]# ./beeline
beeline> !connect jdbc:hive2://hadoop1:10000
scan complete in 2ms
Connecting to jdbc:hive2://hadoop1:10000
Enter username for jdbc:hive2://hadoop1:10000: hive
Enter password for jdbc:hive2://hadoop1:10000:
Connected to: Apache Hive (version 1.1.0-cdh5.7.4)
Driver: Hive JDBC (version 1.1.0-cdh5.7.4)
Transaction isolation: TRANSACTION_REPEATABLE_READ
创建角色
0: jdbc:hive2://hadoop1:10000> create role reader;
0: jdbc:hive2://hadoop1:10000> create role all_privilege;
赋予角色权限
0: jdbc:hive2://hadoop1:10000> GRANT select ON DATABASE ods TO ROLE reader;
0: jdbc:hive2://hadoop1:10000> GRANT all ON DATABASE ods TO ROLE all_privilege;
将角色授予用户组
0: jdbc:hive2://hadoop1:10000> GRANT ROLE reader to group reader;
0: jdbc:hive2://hadoop1:10000> GRANT ROLE all_privilege TO GROUP all_privilege;
查看所有角色