专栏首页Hadoop实操8.如何使用RedHat7的OpenLDAP和Sentry权限集成

8.如何使用RedHat7的OpenLDAP和Sentry权限集成

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github:https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


前面Fayson的文章介绍了多篇Redhat7的OpenLDAP的文章具体如下:

《1.如何在RedHat7上安装OpenLDA并配置客户端》

《2.如何在RedHat7中实现OpenLDAP集成SSH登录并使用sssd同步用户》

《3.如何RedHat7上实现OpenLDAP的主主同步》

《4.如何为Hive集成RedHat7的OpenLDAP认证》

《5.如何为Impala集成Redhat7的OpenLDAP认证》

《6.如何为Hue集成RedHat7的OpenLDAP认证》

《7.如何在RedHat7的OpenLDAP中实现将一个用户添加到多个组》

通过如上面文章的介绍我们可以轻易的将OpenLDAP与安全环境的的CDH集群集成,那么我们在OpenLDAP的用户如何进行Sentry授权呢?本篇文章主要从OpenLDAP用户的创建到授权的整个过程。

  • 内容概述

1.OpenLDAP用户创建并验证

2.创建Kerberos账号

3.Hue授权OpenLDAP用户组

4.授权验证

  • 测试环境

1.CM和CDH版本为5.13.1

2.OpenLDAP版本为2.4.44

3.集群已启用Kerberos

4.OS为Redhat7.3

  • 前置条件

1.OpenLDAP服务已安装

2.与CDH各个服务已集成

2.测试环境描述


  • OpenLDAP服务信息

IP地址

HOSTNAME

描述

172.31.24.169

ip-172-31-24-169.ap-southeast-1.compute.internal

OpenLDAP已安装

172.31.16.68

ip-172-31-16-68.ap-southeast-1.compute.internal

OpenLDAP已安装

这里我们将172.31.24.169做为OpenLDAP的主节点,172.31.16.68做为OpenLDAP的备节点,具体RedHat7下OpenLDAP的HA实现可以参考《3.如何RedHat7上实现OpenLDAP的主主同步》

3.OpenLDAP用户创建并验证


这里使用在OpenLDAP上创建一个测试用户用于后面Sentry授权测试使用。

1.编辑testsentry.ldif文件,内容如下

[root@ip-172-31-24-169 ldap]# vim testsentry.ldif
#添加用户默认组
dn: cn=testsentry,ou=Group,dc=fayson,dc=com
objectClass: posixGroup
objectClass: top
cn: testsentry
userPassword: {SSHA}KYgsfyI/uny0dKPNeMRNG54BdwV6KlWA
gidNumber: 2999
#添加用户
dn: uid=testsentry,ou=People,dc=fayson,dc=com
uid: testsentry
cn: testsentry
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {SSHA}KYgsfyI/uny0dKPNeMRNG54BdwV6KlWA
shadowLastChange: 17493
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 2999
gidNumber: 2999
homeDirectory: /home/testsentry

(可左右滑动)

2.在命令行执行如下命令导入testsentry用户

ldapadd -D "cn=Manager,dc=fayson,dc=com" -W -x -f testsentry.ldif

(可左右滑动)

3.验证OpenLDAP是否成功添加testsentry用户

ldapsearch -D "cn=Manager,dc=fayson,dc=com" -W  |grep testsentry

(可左右滑动)

4.验证CDH集群所有节点已同步该testsentry用户

[root@ip-172-31-16-68 shell]# sh ssh_do_all.sh node.list "id testsentry"

(可左右滑动)

这里Fayson使用一个批量脚本执行,可以看到集群的所有节点已同步了OpenLDAP服务的testsentry用户。

4.创建Kerberos账号


如果集群未启用Kerberos可跳过此步。

由于Fayson的集群启用了Kerberos,如果用户要访问集群则需要创建testsentry用户的Kerberos账号,具体操作步骤如下:

1.在kadmin所在服务器上执行如下命令创建Kerberos账号

[root@ip-172-31-16-68 ~]# kadmin.local 
Authenticating as principal hbase/admin@FAYSON.COM with password.
kadmin.local:  addprinc testsentry@FAYSON.COM
WARNING: no policy specified for testsentry@FAYSON.COM; defaulting to no policy
Enter password for principal "testsentry@FAYSON.COM": 输入账号密码
Re-enter password for principal "testsentry@FAYSON.COM": 输入账号密码
Principal "testsentry@FAYSON.COM" created.
kadmin.local:  

(可左右滑动)

2.测试Kerberos账号是否可以使用

[root@ip-172-31-16-68 ~]# kinit testsentry@FAYSON.COM
Password for testsentry@FAYSON.COM: 
[root@ip-172-31-16-68 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: testsentry@FAYSON.COM
Valid starting       Expires              Service principal
04/12/2018 22:17:45  04/13/2018 22:17:45  krbtgt/FAYSON.COM@FAYSON.COM
        renew until 04/19/2018 22:17:45
[root@ip-172-31-16-68 ~]# 

(可左右滑动)

5.Hue授权OpenLDAP用户组


1.使用hive的超级管用登录Hue,进入“Security”授权界面

2.将tpcds_text_2库的所有权限授权给testsentry用户

添加tpcds_role角色

创建成功

6.授权验证


1.使用testsentry用户登录Hue,验证授权是否正确

登录成功

这里我们也没有在Hue中添加testsentry用户就可以登录,因为Fayson在集成Hue的时候勾选了“登录时创建 LDAP 用户”选项,所以默认不需要在Hue中手动的同步OpenLDAP用户。

在Hue中可以看到testsentry用户拥有default和tpcds_text_2两个库,未给testsentry组授予default库的权限,所以default库显示为空

tpcds_text_2库下能显示所有的表

执行SQL查询tpcds_text_2库下customer表,执行成功

执行SQL统计tpcds_text_2库下customer表总数,执行成功

使用Impala引擎测试

2.在命令行执行

[root@ip-172-31-16-68 ~]# beeline 
beeline> !connect jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000: testsentry
Enter password for jdbc:hive2://localhost:10000: ******

(可左右滑动)

查看拥有的库的权限与Hue上显示一致

执行SQL查询操作select * from customer limit 5;执行成功

执行统计成功,select count(*) fromcustomer;

3.使用hadoop命令浏览授权库的数据目录

[root@ip-172-31-16-68 ~]# kinit testsentry
Password for testsentry@FAYSON.COM: 
[root@ip-172-31-16-68 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: testsentry@FAYSON.COM
Valid starting       Expires              Service principal
04/12/2018 23:12:26  04/13/2018 23:12:26  krbtgt/FAYSON.COM@FAYSON.COM
        renew until 04/19/2018 23:12:26
[root@ip-172-31-16-68 ~]# hadoop fs -ls /tmp/tpcds-generate/2/customer
Found 1 items
-rwxrwx--x+  3 hive hive   19084888 2018-03-17 04:01 /tmp/tpcds-generate/2/customer/data-m-00001
[root@ip-172-31-16-68 ~]# 

(可左右滑动)

未授权用户无法访问相应HDFS的数据目录

7.总结


  • OpenLDAP中的用户中与Linux中的用户是一致的
  • Sentry授权是针对用户组的,所以在需要在Hue中授权的用户组名与OpenLDAP中的用户组名称一致
  • 如果集群启用了Kerberos则需要创建OpenLDAP相应用户的Kerberos账号,否则LDAP用户无法访问授权的表的HDFS数据目录

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0731-6.3.0-关于HDFS ACL的32个条目限制说明

    可以看到子目录没有继承父目录新的default的ACL条目,说明只是在第一次创建的时候会继承。

    Fayson
  • 如何在Kerberos与非Kerberos的CDH集群BDR不可用时复制数据

    本文档描述了在Kerberos与非Kerberos的CDH集群之间BDR不可用的情况下实现数据互导。文档主要讲述

    Fayson
  • 0737-1.6.1-CDSW分布式计算

    Cloudera Data Science Workbench为从单个交互式会话中启动多个称为workers的引擎实例提供了基本支持。任何R或Python会话均...

    Fayson
  • 以太坊挖矿源码:clique算法

    上文我们总结了以太坊最主要的共识算法:ethash算法,本文将重点分析以太坊的另一个共识算法:clique。 关键字:clique,共识算法,puppe...

    文彬
  • (很全面)SpringBoot 集成 Apollo 配置中心

    . 六、Kubernetes 的 SpringBoot 应用使用 Apollo 配置中心

    JAVA葵花宝典
  • 使用CSS隐藏元素滚动条

    如何隐藏滚动条,同时仍然可以在任何元素上滚动? 首先,如果需要隐藏滚动条并在内容溢出时显示滚动条,只需要设置overflow:auto样式即可。想要完全隐藏滚...

    用户6167509
  • 我们为什么都应该坚持写博客,意义何在?

    我很早就想写一篇为什么我坚持写博客和文字的文章给大家洗洗脑,不会总结和不懂总结的程序员不会进步太快。

    Rookie
  • python爬虫的东西

    东风冷雪
  • 在PyTorch中构建高效的自定义数据集

    PyTorch 最近已经出现在我的圈子里,尽管对Keras和TensorFlow感到满意,但我还是不得不尝试一下。令人惊讶的是,我发现它非常令人耳目一新,非常讨...

    磐创AI
  • IBM斥资20亿美元收购,天气数据为何值钱?

    大数据文摘

扫码关注云+社区

领取腾讯云代金券