45.1 演示环境
- CDH5.11.2和CDH5.13两个集群运行正常
- 两个集群Kudu已经安装,且已集成Impala,操作正常
- 两个集群都已启用Sentry并且配置正确
- CDH5.11.2和CDH5.13集群
- 用root用户操作
- 集群未启用Kerberos
- 该项不影响整个测试效果,Fayson只是为了操作方便。
45.2 操作演示
CDH5.11.2测试Kudu1.3的Sentry授权
- 创建admin管理员role,给该role赋予所有权限,并将hive组加入到该role。
- 首先在default下创建一张Kudu表my_first_table,并测试功能正常。
CREATE TABLE my_first_table
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU;
INSERT INTO my_first_table VALUES (99, "sarah");
INSERT INTO my_first_table VALUES (1, "john"), (2, "jane"), (3, "jim");
select * from my_first_table;
delete from my_first_table where id =99;
select * from my_first_table;
- 使用fayson用户登录Impala没有任何权限。
- 使用hive用户登录Impala,创建fayson_role的角色,赋予该角色my_first_table的ALL权限,并将fayson组加入到该角色。
create role fayson_role;
grant role fayson_role to group fayson;
grant all on table my_first_table to role fayson_role;
- 再次使用fayson用户登录Impala,并查询。
- 要赋权成功,fayson用户可以查询该表。
sudo -u fayson impala-shell -i 172.31.28.12
select * from my_first_table;
- 使用hive用户登录Impala,先drop掉fayson_role的角色,然后再次创建。然后分别赋予my_first_table表的INSERT权限,以及my_first_table表的列id的SELECT权限进行测试
drop role fayson_role;
create role fayson_role;
grant role fayson_role to group fayson;
grant insert on table my_first_table to role fayson_role;
grant select(id) on table my_first_table to role fayson_role;
- 赋权失败,提示Kudu表只支持ALL权限。
CDH5.13测试Kudu1.5的Sentry授权
- 登录到CDH5.13集群,确定版本。
- 创建admin管理员role,给该role赋予所有权限,并将hive组加入到该role。首先在default下创建一张Kudu表my_first_table,并测试功能正常。
- 该两个步骤与【CDH5.11.2测试Kudu1.3的Sentry授权】相似,Fayson不再赘述。
- 使用fayson用户登录Impala没有任何权限
- 使用hive用户登录Impala,创建fayson_role的角色,赋予该角色my_first_table的ALL权限,并将fayson组加入到该角色。
create role fayson_role;
grant role fayson_role to group fayson;
grant all on table my_first_table to role fayson_role;
- 再次使用fayson用户登录Impala,并查询。
- 要赋权成功,fayson用户可以查询该表。
sudo -u fayson impala-shell -i 172.31.28.12
select * from my_first_table;
- 使用hive用户登录Impala,先drop掉fayson_role的角色,然后再次创建。然后赋予my_first_table表的SELECT权限。
drop role fayson_role;
create role fayson_role;
grant role fayson_role to group fayson;
grant select on table my_first_table to role fayson_role;
- 使用fayson用户进行测试
- fayson用户可以执行select,但是不能执行insert。
select * from my_first_table;
INSERT INTO my_first_table VALUES (990, "sarah");
- 使用hive用户登录Impala,先drop掉fayson_role的角色,然后再次创建。然后赋予my_first_table表的列id的SELECT权限。
drop role fayson_role;
create role fayson_role;
grant role fayson_role to group fayson;
grant select(id) on table my_first_table to role fayson_role;
- 使用fayson用户登录进行测试
- fayson用户无法select全表,只能select单个id字段。说明Kudu表的column授权生效。
select * from my_first_table;
select id from my_first_table;
总结
- CDH5.13,Kudu1.5之前的旧版Kudu,Sentry授权只能支持数据库或表的ALL权限,不能区分SELECT和INSERT权限,且不支持列授权。
- CDH5.13,Kudu1.5版本中,Sentry授权支持数据库,表,字段的ALL,SELECT,INSERT权限。
大数据视频推荐:
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通