温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
Fayson在之前的文章详细介绍了CDH5.13的新功能,参考《CDH5.13和CM5.13的新功能》。CDH5.13中默认打包了Kudu,我们在安装Kudu的时候再也不用单独下载Kudu的Parcel包,与其他组件一样直接增加服务即可。另外这个版本Kudu1.5支持Sentry的database,table以及column的SELECT/INSERT授权,旧的版本只能支持数据库或表的全部授权,不能区分SELECT和INSERT,且不支持列授权。
本文主要介绍如何在Kudu1.5中使用Sentry授权。为了方便读者进行对比查看,Fayson会先基于Kudu旧版本(CDH5.11.2+Kudu1.3)进行Sentry授权测试,后面才会基于CDH5.13新版进行测试。
1.CDH5.11.2测试Kudu1.3的Sentry授权
2.CDH5.13测试Kudu1.5的Sentry授权
1.CDH5.11.2和CDH5.13集群
2.采用root用户操作
3.集群未启用Kerberos,该项不影响整个测试效果,Fayson只是为了操作方便。
1.CDH5.11.2和CDH5.13两个集群运行正常
2.两个集群Kudu已经安装,且已集成Impala,操作正常
3.两个集群都已启用Sentry并且配置正确
2.CDH5.11.2测试Kudu1.3的Sentry授权
CDH5.11.2安装Kudu需要单独下载Kudu的Parcel包,参考Fayson之前的文章《如何在CDH中安装Kudu&Spark2&Kafka》,如何在CDH中启用Sentry请参考《如何在CDH未启用认证的情况下安装及使用Sentry》,《如何在CDH启用Kerberos的情况下安装及使用Sentry(一)》,《如何在CDH启用Kerberos的情况下安装及使用Sentry(二)》和《如何在Hue中使用Sentry》。
以下测试过程基于CDH5.11.2集群已经完全就绪,Kudu,Impala和Sentry服务都运行正常,如何安装以及配置Fayson不再赘述。
1.创建admin管理员role,给该role赋予所有权限,并将hive组加入到该role。
2.首先在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;
3.使用fayson用户登录Impala没有任何权限。
4.使用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,并查询。
sudo -u fayson impala-shell -i 172.31.28.12
select * from my_first_table;
发现已经赋权成功,fayson用户可以查询该表。
5.使用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权限。
3.CDH5.13测试Kudu1.5的Sentry授权
CDH5.13安装Kudu不需要额外下载Parcel包,直接安装即可。可以参考Fayson之前的文章《CDH安装前置准备》和《CentOS6.5安装CDH5.13》
1.登录到CDH5.13集群,确定版本。
2.创建admin管理员role,给该role赋予所有权限,并将hive组加入到该role。首先在default下创建一张Kudu表my_first_table,并测试功能正常。该两个步骤与第二章相似,Fayson不再赘述。
3.使用fayson用户登录Impala没有任何权限。
4.使用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,并查询。
sudo -u fayson impala-shell -i 172.31.28.12
select * from my_first_table;
发现已经赋权成功,fayson用户可以查询该表。
5.使用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用户进行测试
select * from my_first_table;
INSERT INTO my_first_table VALUES (990, "sarah");
可以看到fayson用户可以执行select,但是不能执行insert。
6.使用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用户登录进行测试
select * from my_first_table;
select id from my_first_table;
可以看到fayson用户无法select全表,只能select单个id字段。说明Kudu表的column授权生效。
4.总结
1.CDH5.13,Kudu1.5之前的旧版Kudu,Sentry授权只能支持数据库或表的ALL权限,不能区分SELECT和INSERT权限,且不支持列授权。
2.CDH5.13,Kudu1.5版本中,Sentry授权支持数据库,表,字段的ALL,SELECT,INSERT权限。
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。