【Ranger】基于Ranger+LDAP的权限策略方案

本文并不是解决具体某些什么问题,更相当于一个解决方案,是各个云厂商相对通用的解决方案。

当我们使用各个框架的时候,总有各种各样的权限,关系型数据库的权限可能相对比较好处理,大多数都是创建个账号,grant授权下增删改查的权限

但是到了大数据领域,如hdfs的目录和文件的权限,hive中的表,hbase中的表,presto中的表等等相关的一堆框架权限又如何控制呢?

这时候,我们需要2个东西,一个叫授权(Authorization),一个叫认证(Authentication)

 

一、授权

我们希望有一个框架,能够管理大多数框架的授权,包括:

  • hdfs的目录读写权限
  • 各种大数据框架中的表的权限,列级(字段)权限,甚至行级权限,函数权限等等相关资源的权限
  • 还有是否能帮忙做数据脱敏?

所以一个叫Ranger的框架就应运而生,这个框架结构如下:

主要有3个部分:

1、Ranger UserSync

同步unix(当前那台服务器上用户和用户组)或者LDAP中的用户和用户组的信息到ranger的用户管理中

2、Ranger Admin

提供WebUI配置权限

与Ranger Plugin进行交互,将权限同步至Ranger Plugin所在节点

你看到的User Source里写的Internal,就是你在Ranger里创建的用户,这个用户主要是用来登录Ranger的WebUI,初始状态下,该用户仅能查看Ranger Service和Policy,管理员用户admin可以在用户管理中,升级普通用户为管理员用户

3、Plugin

集成到服务中进行权限控制,每个组件的权限分开配置,像插件一样

不同组件的权限配置,还是麻烦大家自行百度或者看下Ranger的官方文档

这里单独提两个

(1)、一个是HDFS的权限策略如下图

先检查HDFS原生的权限控制,如果能通过,就不会去看Ranger中配置的任何内容

原生HDFS鉴权为拒绝时,才会通过Ranger进行权限控制

(2)、另一个是Hive的权限策略是生效于Hiveserver2的(也就是说hivecli是限制不了的)

Hive有自带的权限策略:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization

有兴趣的同学可以好好读一读上面的连接

有四种:

  • 基于metastore的权限控制(可以控制hivecli的权限,粗粒度)
  • 基于sql语法规范的权限控制(就是grant设置权限,只能控制hiveserver2,粒度比较细,可以和上面那种结合使用)
  • 基于Ranger或者Sentry权限权限控制(也是控制hiveserver2,粒度可以到列,行,甚至数据脱敏)
  • 默认的过时的权限策略(不推荐)

具体怎么配置我就不在这里说了,大家自行百度

 

二、认证

有了上面的授权,其实还不太够,hiveserver默认是没有做用户名和密码的认证的

也就是说,就算你设置了hive用户是最高权限,但是因为没有认证,任何一个用户都可以jdbc链接hiveserver2,指定hive用户(这样授权就没有意义了)

这时候就要说一个叫LDAP的框架,具体他是啥,有太多介绍的文档,我就不在这里说了

有些文章还是写的很不错的:

https://www.cnblogs.com/wilburxu/p/9174353.html

https://www.jianshu.com/p/7e4d99f6baaf

你可以这么理解,我在LDAP里面通过目录树的方式保存了不同的用户,并且这些用户会有各自的uid,邮箱,用户组等等一系列的信息

然后最关键的一点,LDAP可以很好的集成到各种不同的框架中,这样就可以实现,一个公司里员工的基础信息都记录在LDAP中,然后公司的不同系统都对接LDAP,这样公司的员工都可以用统一的账号和密码登录公司的不同平台,甚至大数据的这些框架也可以对接LDAP,比如Hiveserver2或者Presto对接LDAP后,就有用户名密码的认证!

LDAP在制作层级的时候,可以像这样做

在people下创建user,然后在group下创建公司不同的组,然后把uid加到对应的组里面(通过LDAP脚本实现)

 

三、实现的功能

有了以上两个东西之后,我们可以实现什么功能呢?

1、公司新来一个员工,只需要在ldap上为他创建一个uid,由于公司各个框架都对接了LDAP,所以该员工可以使用一个账号密码,登录公司的各个系统

2、员工的大数据框架的权限,可以通过Ranger来控制

  • 添加权限的时候要么直接添加该用户的权限,要么添加某个组的权限

  • Ranger的Ranger UserSync默认是同步Unix的用户,可以先把Ranger UserSync改成同步LDAP里的用户和用户组信息,不过这里有个注意点:如果Ranger要集成LDAP组的权限,还需要配置hadoop group mapping,否则就是Ranger里能同步到LDAP的user的group信息,但是直接添加group,但是权限不生效

 

以上就是本文想要说的所有内容,当然这里只是提出了一个比较常见通用的解决方案,各位可以当做参考来建立自己公司的权限策略方案~

当然如果有哪里说的有误的,或者有更好的方案,欢迎大家留言评论~

菜鸡一只,努力学习~

其实很早以前就想写一篇关于Ranger的文档,但是一方面了解的不够深,另一方面感觉单纯讲Ranger的配置和使用,意义不是特别的大

有时候我们要关注的不是单个框架或者某个技术的使用,而是怎么把这些框架组合起来,完成某个业务场景或者实现某个解决方案!

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值