Sentry--通过Cloudera Manager配置Sentry

  本篇博客讲解一下通过Cloudera Manager配置Sentry的一个过程,如果对Sentry不够了解的可以查看这篇博客http://blog.javachen.com/2015/04/29/apache-sentry-architecture.html。添加Sentry服务,以及Cloudera Manager的界面配置这些都很简单,我就做一些简要说明,重点会说明我实际在Sentry配置过程中遇到的一些坑吧。其他配置方式可以参考博客http://blog.csdn.net/shenliang1985/article/details/50463432,说明:本博客CDH版本5.5.1,CDH版本5.8.0也同样适用。

添加Sentry服务

  • 添加Sentry很简单,下一步下一步即可,选择sentry服务也只需要一台主机。
    通过Cloudera Manager界面添加Sentry服务
  • 选择数据库时,最好使用MySQL,需要注意的一点就是:
  1. 在数据库节点如下“fetch-loadTest-26”下面需要安装MySQL并有相应的用户和数据库
  2. 在Sentry Server节点如上“fetch-loadTest-25”需要有MySQL驱动包

配置

  • 在hue配置中修改
  1. hue选择为Sentry
  2. 搜索Impersonation,取消下面该选项
  3. 在sentry-site.xml 的 Hive 服务高级配置代码段(安全阀)
    1
    2
    3
    4
    <property>
    <name>sentry.hive.testing.mode</name>
    <value>true</value>
    </property>
  • 在Sentry中配置,添加一个root(这有点奇怪,必须添加root用户)

    • 登陆hue,发现多出一个Security选项,我们就可以通过Sentry表来管理,选项下面直接管理hive表

    • 注意:再CDH5.8.0默认Hue™ 3.10里面Security选项有所不同,但使用都是相同的,如下:

使用

  • 用户管理界面下,添加root用户和root组,作为超级管理员,提供授权等功能

授权

  1. 通过root登陆hue,在用户管理员下添加test1用户test1用户组,并在Security下给test1组授权(勾选创建主目录会在hdfs上创建相应目录);

  2. 在安装HiveServer2的机器上添加相应的Linux用户(如果不添加,即使授权了也无法查看到信息)

    [root@xiaoxiaomo ~]# groupadd test1 && useradd -g test1 test1 ##创建Linux组和用户

  3. 通过Security选项下的,Roles给用户组test1授权

3.1. 添加test1_role角色,设置为test1组,并授权db=default给该组(PS:改组映射的是linux用户组)

3.2. 然后我们登陆test1用户,查看信息,Okay了!
Sentry授权成功!

  • 注意
  1. hue用户管理界面下添加的用户组,和Sentry里面授权的组没有直接关系;
  2. Sentry里面分配角色权限的组和Linux里面的组关联;
  3. 当我们添加完hue用户和组时,一般在linux相应这么添加,如下命令
    3.1. 新增加一个用户并将其列入一个已有的用户组中:adduser -g 组 用户
    3.2. 一个已有用户追加到一个已有用户组:usermod -a -G 组 用户
    3.3. 直接修改组usermod -g 组 用户,上面的-a代表 append。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器