如何在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安装


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;

命令行操作:

 

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

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

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

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

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

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

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

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

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

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

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

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

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

3.Sentry配置

3.1Hive配置


1.配置Hive使用Sentry服务

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

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

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

3.2Impala配置


配置Impala使用Sentry

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

3.3Hue配置


配置Hue使用Sentry

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

3.4HDFS配置


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

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

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

4.Sentry测试

4.1创建hive超级用户


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

 

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

1.使用beeline连接HiveServer2

 

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

2.创建admin角色

 

如何在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>

如何在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>

如何在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>

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

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


创建两个角色:

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

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

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

 

如何在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>

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

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

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

 

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

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

 

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

4.4beeline验证


1.使用fayson用户登录Kerberos

 

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

通过beeline连接HiveServer2进行验证

 

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

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

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

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

执行Hive的MapReduce任务

 

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

2.使用user_w用户登录Kerberos

 

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

使用beeline登录HiveServer2验证

 

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

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

验证总结:

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

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

4.5HDFS验证


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

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

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

 

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

 

如何在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

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

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

可以查看test表数据

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

可以进行Count操作

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

不能Insert操作

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

File Browser浏览

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

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

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

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

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

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

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

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

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

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

不可以查看test表

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

不可以Count操作

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

可以向test表插入数据

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

FileBrowser操作

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

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

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

如何在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

 

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

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

2.使用user_w用户登录Kerberos

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

登录Impala-shell进行操作

 

如何在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