45.使用Sentry授权—Kudu

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
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

你可能感兴趣的:(45.使用Sentry授权—Kudu)