如何在Kudu1.5中使用Sentry授权

时间:2022-05-06
本文章向大家介绍如何在Kudu1.5中使用Sentry授权,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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权限。

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。