Sentry授权的组(GROUP)来源

趁我未失忆之前,记录过去曾经的自己


前言

在设定sentry 授权时, 发现错误指令Error: Error while compiling statement: FAILED: SemanticException Sentry does not allow privileges to be granted/revoked to/from: USER 。且总觉得要用户要存在在集群的每个节点上很麻烦,就开始细查Sentry授权的组(GROUP)来源,但我发现我设定OS GROUP 却没work,但设定的OS USER却是有用,让我更详细差来源设置。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Sentry 特性

Sentry 特性是利用User身份和Group相互映射,进行权限控管,但是Sentry 只能操作在Group,所以使用User 方法都不适用。但是在Linux 创建用户时,同时也会创建一个一样名称的Group。

[hive@002/]$ id hive
uid=764(hive) gid=765(hive) groups=765(hive)

那Sentry的组管理是怎么配置,通常是根据HADOOP的用户组设置,可以设置基于shell或基于LDAP或是基于Jni。可以透过下面查看HADOOP的用户组设置与原理

二、Hadoop用户组映射实施

1.CM介面设定

我们可以透过CM上HDFS服务在配置标签下用「Hadoop User Group Mapping Implementation」关键字查询。就会出现下面图示:
在这里插入图片描述
通常预设为 ShellBased,其原理如下面章节所述。

2.Hadoop用户到组的映射

hadoop 使用一个名为hadoop.security.group.mapping的配置参数,以控制用户到用户组的映射。默认的实现方法使用标准 UNIX 接口进行本地调用,或者使用 shell 命令查找用户到组的映射。这意味着,只有配置在调用映射的那台服务器上的用户组才对 Hadoop 可见。在实际操作中,这不是个大问题,因为 Hadoop 集群对访问集群的用户和用户组会有一致的视图。也是为什么很多文章都说要一定要在集群上每台节点都要存在有这个用户。但是,hadoop.security.group.mapping 的配置参数能够设置于任意实现其他接口的实现,下面这三点分别说明功能

  • JniBasedUnixGroupsMapping: 一个基于 JNI(Java Native Interface,Java 本地接口)的实现,调用 libc 库函数 getpwnam_r() 和 getgrouplist() 确定组成员。
  • ShellBasedUnixGroupsMapping:一种基于 shell 的实现,使用 id -Gn 命令。ShellBasedUnixGroupsMapping 类来获取某个用户属于哪个组,实际是调用id命令来获取用户组信息。为了方便管理,也可以自己实现这个类,通过读取文件的方式来获得组信息。可参考hadoop组映射从配置文件读取
  • LdapGroupsMapping:与 LDAP 或 Active Directory 服务器直连,确定组成员。

除了以上三点是CDH 6.0.X 提供三个hadoop group mapping 设定外,原本hadoop 是还有另外两项功能是CDH 6.0.X没提供:

  • JniBasedUnixGroupsNetgroupMapping:JniBasedUnixGroupsMapping 的一种扩展,通过调用库函数 setnetgrent() 、getnetgrent() 和 endnetgrent() 确定网络组成员。只有服务分层授权访问控制列表中使用到的网络组才会被引入这个映射。
  • ShellBasedUnixGroupsNetgroupMapping:ShellBasedUnixGroupsMapping 的一种扩展,使用 getent netgroup shell 命令确定网络组成员。只有服务分层授权访问控制列表中使用到的网络组才会被引入这个映射。

总结

我们这里预设设定是ShellBasedUnixGroupsMapping ,则ShellBasedUnixGroupsMapping类来获取某个用户属于哪个组,且实际是调用id命令来获取用户组信息。所以意思在沟通时是利用用户查找组,然后再设置用户时,要嘛就每个集群上的节点都要有此用户,要嘛就装一个LDAP 来控制用户组与用户。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值