如何在CDH启用kerberos的情况下安装及使用sentry(一)

1.文档编写目的


本文档主要讲述如何在启用Kerberos的CDH集群中安装配置及使用Sentry。

  • 内容概述

1.如何安装Sentry服务

2.Hive/Impala/Hue/HDFS服务如何与Sentry集成

3.Sentry测试

  • 测试环境

1.操作系统为CentOS6.5

2.CM和CDH版本为5.11.1

3.采用root用户操作

  • 前置条件

1.CDH集群运行正常

2.集群已启用Kerberos且正常使用

2.Sentry安装

扫描二维码关注公众号,回复: 6124553 查看本文章

1.在MySQL中创建sentry数据库

建表语句:

create database sentry default character set utf8;

CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';

FLUSH PRIVILEGES;

命令行操作:

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.进入Cloudera Manager控制台点击“添加服务”

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.进入服务添加界面,选择Sentry服务,点击“继续”

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

4.选择Sentry Server及Gateway的安装节点,点击“继续”

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

5.输入Sentry服务的数据库信息,点击测试,测试通过,点击“继续”

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

6.等待服务安装成功,点击“继续”

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

7.点击“完成”,Sentry服务至此安装完成。

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.Sentry配置

3.1Hive配置


1.配置Hive使用Sentry服务

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.关闭Hive的用户模拟功能

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.2Impala配置


配置Impala使用Sentry

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.3Hue配置


配置Hue使用Sentry

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.4HDFS配置


配置HDFS开启ACLs与Sentry权限同步

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

完成以上配置后,回到Cloudera Manager主页,部署客户端配置并重启相关服务。

4.Sentry测试

4.1创建hive超级用户


使用hive用户登录Kerberos,操作如下

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

1.使用beeline连接HiveServer2

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.创建admin角色

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.为admin角色赋予管理员权限

0: jdbc:hive2://localhost:10000> grant all on server server1 to role admin;

...

INFO : OK

No rows affected (0.221 seconds)

0: jdbc:hive2://localhost:10000>

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

4.将admin角色授权给hive用户组

0: jdbc:hive2://localhost:10000> grant role admin to group hive;

...

INFO : OK

No rows affected (0.162 seconds)

0: jdbc:hive2://localhost:10000>

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

以上操作创建了一个admin角色:

admin : 具有管理员权限,可以读写所有数据库,并授权给hive组(对应操作系统的组)

4.2创建test表


使用hive用户登录Kerberos,通过beeline登录HiveServer2,创建test表,并插入测试数据

0: jdbc:hive2://localhost:10000> create tabletest (s1 string, s2 string) row format delimited fields terminated by ',';

...

INFO : OK

No rows affected (0.592 seconds)

0: jdbc:hive2://localhost:10000> insert into test values('a','b'),('1','2');

...

INFO : OK

No rows affected (20.123 seconds)

0: jdbc:hive2://localhost:10000>

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

4.3创建测试角色并将角色授权给用户组


创建两个角色:

read:只能读default库test表,并授权给fayson用户组

write:只能写default库test表,并授权给user_w用户组

注意:集群所有节点必须存在fayson和user_w用户,用户默认用户组与用户名一致,赋权是针对用户组而不是针对用户。

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

1.使用hive用户创建read和write角色,并授权read角色对test表的select权限,write角色对test表的insert权限

0: jdbc:hive2://localhost:10000> create role read;

...

INFO : OK

No rows affected (0.094 seconds)

0: jdbc:hive2://localhost:10000> grant select on table test torole read;

...

INFO : OK

No rows affected (0.1 seconds)

0: jdbc:hive2://localhost:10000> create role write;

...

INFO : OK

No rows affected (0.105 seconds)

0: jdbc:hive2://localhost:10000> grant insert on table test to role write;

...

INFO : OK

No rows affected (0.112 seconds)

0: jdbc:hive2://localhost:10000>

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.将read角色授权给fayson用户组,write角色授权给user_w用户组

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.使用kadmin创建fayson和user_w用户

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

4.4beeline验证


1.使用fayson用户登录Kerberos

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

通过beeline连接HiveServer2进行验证

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

执行Hive的MapReduce任务

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.使用user_w用户登录Kerberos

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

使用beeline登录HiveServer2验证

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

验证总结:

fayson用户所属组为fayson拥有test表读权限,只能对test表进行select和count操作不能进行insert操作;

user_w用户所属组为user_w拥有test表写权限,只能对test表进行insert操作不能进行select操作;

4.5HDFS验证


1.使用fayson用户登录Kerberos,进行如下操作

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

使用HDFS命令对/user/hive/warehouse/test进行cat、ls、put等操作

 

2.使用user_w用户登录Kerberos,进行如下操作

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

fayson用户所属组为fayson,拥有test表的读权限,可以对test表的数据目录(/user/hive/warehouse/test)浏览及查看目录下文件内容,不能删除/test/目录下文件,也不能向test目录put文件。

user_w用户所属组为user_w,拥有test表的write权限,可以对test表的数据目录put文件及删除数据文件操作,但不能浏览及查看目录下的文件内容。

说明Sentry实现了HDFS的ACL同步。

4.6Hue验证


1.使用Hue的管理员,添加Hue的测试用户fayson和user_w

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.使用fayson用户登录Hue,验证read权限

可以查看test表数据

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

可以进行Count操作

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

不能Insert操作

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

File Browser浏览

不能浏览父目录/user/hive/warehouse

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

可以浏览test表的数据目录/user/hive/warehouse/test

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

可以查看/user/hive/warehouse/test目录下文件内容

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

不能修改/user/hive/warehouse/test目录下数据文件

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

3.使用user_w用户登录Hue,验证write权限

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

不可以查看test表

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

不可以Count操作

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

可以向test表插入数据

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

FileBrowser操作

不可以浏览父目录/user/hive/warehouse

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

不可以浏览test表的数据目录/user/hive/warehouse/test

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

fayson和user_w用户均能通过hue界面看到test表,拥有read角色的fayson用户组能对test进行select和count操作,并且能通过File Browser浏览和查看test表的数据目录/user/hive/warehouse/test。拥有write角色的user_w用户组只能对test表进行insert操作,但不能通过File Browser浏览和查看test表的数据目录/user/hive/warehouse/test。说明Sentry在命令行的操作和授权在Hue中依旧有效。

4.7Impala验证


1.使用fayson用户登录Kerberos

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

2.使用user_w用户登录Kerberos

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

登录Impala-shell进行操作

 

0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)

验证总结:

Impala与Sentry集成后可以使用Sentry来进行权限管理,拥有read角色的fayson用户组只能对test表进行select和count操作不能插入数据,拥有write角色的user_w

用户组只能对test表插入数据不能进行select和count操作。说明Sentry实现了Hive权限与Impala的同步。

参考:https://blog.51cto.com/14049791/2320241

猜你喜欢

转载自blog.csdn.net/lvtula/article/details/89840014
今日推荐