趁我未失忆之前,记录过去曾经的自己
前言
透過前面幾篇sentry安裝與Hive,Hue,Impala集成,這篇说明如何增加权限与控制权限
一、CM 页面Sentry group 管理
首先我们要确保用户组(group) 是否建立在sentry的admin group。而这里的用户组也就是和其他Hadoop生态系统其他组件的Group会是一致。这里我用两个用户hive及lajo9006作为示例。
[root@s002 /]$ id hive
uid=764(hive) gid=765(hive) groups=765(hive)
[root@s002 /]$ id lajo9006
uid=1015183(lajo9006) gid=1031(lajo9006) groups=1031(lajo9006),10(wheel)
可以知道hive用户他的组是hive,lajo9006用户的组是lajo9006,并且要确保用户在集群所有节点均存在。且在Sentry的admin group控管,打开Sentry service进入Configuration ,在搜索框打上sentry.service.admin.group ,查看lajo9006与hive 这两个组是否存在。
二、使用beeline连接HiveServer2
使用beeline连接HiveServer2,并登录hive用户,切记要用root 或管理权限的用户登入。
[root@s002 /]$ beeline
beeline> !connect jdbc:hive2://你的主机名:10000
#使用hive登入
Enter username for jdbc:hive2://你的主机名:10000: hive
Enter password for jdbc:hive2://你的主机名:10000: ****
三、赋予权限
1.创建admin,dread角色引入库
create role admin;
create role dread;
2.为角色赋予权限
#设定admin角色可以对server 有all的权限
grant all on server server1 to role admin;
#设定dread角色可以对数据库default中abc 表有查询的权限
grant select on table default.abc to role dread;
3.将角色授权给各个用户组
我们这里的组可以参考上述CM 页面Sentry group 管理这里所述,所以这里的组跟操作系统的组是一样。
#hive用户组有admin权限
grant role admin to group hive;
#lajo9006用户组有dread 权限
grant role dread to group lajo9006
4.角色的撤销
取消joyce用户的admin 角色,操作命令如下:
revoke admin from group joyce;
5.權限控制
Hive支持的权限控制如下表所示。
操作 | 解释 |
---|---|
ALL | 所有权限 |
ALTER | 允许修改元数据(modify metadata data of object)—表信息数据 |
UPDATE | 允许修改物理数据(modify physical data of object)—实际数据 |
CREATE | 允许进行Create操作 |
DROP | 允许进行DROP操作 |
INDEX | 允许建索引(目前还没有实现) |
LOCK | 当出现并发的使用允许用户进行LOCK和UNLOCK操作 |
SELECT | 允许用户进行SELECT操作 |
SHOW_DATABASE | 允许用户查看可用的数据库 |
三、查詢
1.显示当前用户拥有库、表、列相关权限的数据库:
SHOW DATABASES;
2.显示当前用户拥有表、列相关权限的表:
SHOW TABLES;
3.显示当前用户拥有SELECT权限的列:
SHOW COLUMNS (FROM|IN) table_name [(FROM|IN) db_name];
4.显示当前系统中所有的角色(只有管理员用户可以执行):
SHOW ROLES;
5.显示当前会话的角色:
SHOW CURRENT ROLES;
6.显示指定组的被分配到的所有角色(只有管理员用户和指定组内的用户可以执行):
SHOW ROLE GRANT GROUP (groupName);
7.显示一个角色被授予的权限或者显示角色的一个特定对象的所有权限(只有管理员用户和指定角色分配到的用户可以执行):
SHOW GRANT ROLE (roleName);
8.显示指定对象的一个角色的所有被赋予的权限(只有管理员用户和指定角色分配到的用户可以执行):
SHOW GRANT ROLE (roleName) on (OBJECT) (objectName);
四、Hue查詢
1.查看角色下所有组
当前没有这样的使用一条语句来查看角色下所有已授权的组。目前可以通过如下两种方式来查看角色下所有已授权的组:
1.可以通过Hue UI的“Security”界面查看角色下所有已授权的组
2.当然如果需要将这些信息存储到自己的管理系统,则可以使用SQL语句直接查询Sentry数据库来获取,SQL语句如下:
select g.GROUP_NAME
from SENTRY_GROUP g
join SENTRY_ROLE_GROUP_MAP rg on rg.GROUP_ID = g.GROUP_ID
join SENTRY_ROLE r on r.ROLE_ID = rg.ROLE_ID
where r.ROLE_NAME = 'admin';