如何在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权限。
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
- Go 语言 数据库操作之插入数据实现
- (摘抄)GO语言中template的用法
- 大数据时代的技术hive:hive介绍
- hadoop2.6分布式部署时 livenodes等于1的原因
- Hadoop运行wordcount时报classnotfound错误的一个原因
- 在WINDOWS下交叉编译LINUX程序运行不了是为什么?
- Hibernate的缓存机制
- error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http:/
- 【Go 语言 redis内存数据库存储 demo】
- linux下基本操作记录mongodb
- ClassLoader究竟为何物?
- Oracle应用实战八(完结)——存储过程、函数+对象曹组
- 动态代理模式原理
- SQL可以正常用,但cmd启动不了mysql,报错[ERROR] unknown variable ;basedir=....问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法