您的位置:首页 > 大数据

基于LDAP和Sentry的大数据认证和鉴权解决方案--Part Two:Sentry集成

2016-12-28 18:51 337 查看
上一篇文章中,介绍了LDAP和HUE,Impala以及Hive的集成来完成了用户认证的工作,接下来我们聊一下如何使用Sentry来实现对数据的授权管理。

Sentry一旦和Hive集成,就会接管Hive的Metadata,也就是说。如果没有集成Sentry,Hive的metadata是存放在Hive自己的metadata数据库中的,但一旦和Sentry整合,这些metadata信息就会保存在Sentry自己的数据库里,这些metadata信息中包含了对数据的授权信息,sentry会分析这些数据授权信息来判断当前登录的用户是否具备相应的数据访问权限。

1,Sentry的安装

使用Cloudera Manager来安装,非常简单,需要注意的是安装前要在/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/jars目录下放入MySQL的驱动包。

2,Sentry的整合

在HUE,Hive和Impala中都做如下的配置:



这两个配置中,第一个配置告诉系统(hue,hive,impala)要使用sentry来做权限管理

第二个配置把testing mode设置为true,如果为false,hive会要求必须使用ssl来进行密码传输,我们的环境并没有配置ssl

对于Hive,还需要多一个特殊的配置



完成上述配置之后,sentry就对Hue,hive和impala都生效了。

3,验证

step 1:首先,我们用hive作为用户来登录hive(这是一个权限很大的用户),然后show databases,可以看到有多个数据库:



step 2:然后我们在LDAP中创建一个新的用户(test-user),并设置这个新用户的密码(123456)。然后再以这个新用户去登录:

beeline -u "jdbc:hive2://ddw-test-1:10000" -n test-user -p 123456 -d org.apache.hive.jdbc.HiveDriver

此时再执行show databases命令,发现看不到出了default之外的任何数据库:



step 3:对test-user进行授权

#创建一个角色:test-role

create role test_role;

#给新创建的角色进行授权,让其可以访问所有数据库

grant all on server server1 to role test_role;

#然后把用户和角色关联起来。

GRANT ROLE test_role TO GROUP test_user;

#然后在linux中创建用户和组,特别需要注意的是,这个命令要在所有部署了HiveServer2实例的机器以及所有所有部署了impalad的实例的机器上去执行:

useradd test_user

#然后用新用户去登录beeline或者hue或者impala shell去执行show databases,就可以看到数据库的信息了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: