Apach Ranger 0.6 使用中的那些坑

公司需要增加对hdfs集群数据安全的控制,组里有人提出apach ranger可以完成数据动态模糊和hdfs目录,hive表的动态访问控制,因此尝试了下apach ranger相关的功能,并碰到了不少坑。

Ranger 是hortonworks收购XA后开源出来的项目,现在还属于项目孵化阶段,用的人不多,国内只找到两篇安装指南,第一篇写的比较详细,针对的是ranger 0.5版本,我就是参照这个安装指南安装的,第二篇比较简略,但是针对的是最新的ranger 0.6版本。

国外的用户也基本集中在hortonwork推出的平台工具上,而国内使用horton works工具平台的应该不多,所以相关文档稀少。

本文主要记录我在试用ranger 0.5和ranger 0.6的过程中遇到的坑,不再赘述安装过程。

  • 一.兼容性
    刚开始使用的时候,由于官方的安装指南还是基于ranger 0.5的,所以我首先下载编译的是ranger 0.5版本,由于maven服务器连接缓慢,所以编译时常time out。后来尝试使用proxychains连ss可以加快很多下载速度。

  • 1. hadoop版本的问题
    ranger官方声明只支持hadoop 2.7版本,在配置中,同样的设置使用hadoop 2.6.3,ranger的hdfs plugin并不能正常工作,在将hadoop更新到hadoop 2.7.2启动后,hdfs plugin 才可以正常工作。

  • 2. hive版本的问题
    在ranger 0.5的官方指南中,声明只支持hive 1.2,但是在编译ranger 0.6的过程中,maven依赖包下载的都是hive 2.1的包,实际使用过程中,ranger 0.6配合hive 1.2并不能正常使用,只有使用hive 2.0 或者hive 2.1 才能正常使用。

    ranger的特色数据动态模糊,分行授权访问是基于hiveserver2实现的,因此只能对beeline下的访问起作用,而对使用hive cli访问hive数据库起不到控制作用。

  • ranger 0.6和ranger 0.5的区别
    除了加入hive数据动态模糊,分行授权,ranger 0.6的一大变化还在于不再支持使用mysql记录资源访授权案历史,而是只支持solr。

  • 3. Sparksql访问hive表的问题
    Sparksql默认是不受Ranger的权限控制影响的。
    在Ranger 邮件组中有用户提到使用Ranger控制Sparksql权限的方法
    尝试之后发现,使用sparksql读取hive表的时候,并不通过hiveserver2,spark会从metastore中取得部分信息,然后直接去hdfs中读取表的源文件。而Ranger对hive表做的所有权限控制都是基于hiveserver2的,因此Ranger中的权限控制只有hdfs 控制能起作用,这是一个很大的遗憾,不能对Saprksql读取的hive表使用Ranger 提供的动态模糊和分行授权的功能很可惜。

  • 二.测试过程中遇到的一些坑

  • 1.hdfs audit log不显示的问题
    刚开始使用ranger 0.5的时候,发现使用hadoop用户访问ranger 控制的目录,不会留下记录,一度以为是ranger 没起作用,实际是因为hadoop是启动hdfs namenode的superuser,不受ranger acl或者hadoop acl控制,自然也不会留下audit history。

  • 2.hive 动态模糊不起作用,分行授权无效
    刚开始使用ranger 0.6时发现,dynamic masking选择不了,如下图,选择框完全就是空的。在换了不同机器分别编译了ranger 0.6.1 和0.6.2版本发现同样的问题依然存在。
    这里写图片描述

    最后发现是ranger设置的mysql数据库中的一张表x_datamask_type_def为空,因此加载不出来选择框中应该有的值。

    由于数据库是开始测试ranger 0.5时就配置的,在使用ranger 0.6的时候并没有清楚原有的数据,可能导致了数据库初始化的过程中出现了问题。

    在删除数据库并重建之后,hive的动态模糊和分行授权才可以正常运行。

  • 3.hdfs audit log记录地点
    ranger 0.6开始,所有hdfs,hive等组件访问记录都不再支持mysql储存数据,而是改为储存数据在solr,但是按照下面的设置分别配置hdfs和hive plugin中的install.property文件后,只有hive的audit log出现在了web界面,hdfs的log还是记在了mysql里面。
    XAAUDIT.SOLR.ENABLE=true
    XAAUDIT.SOLR.URL=http://10.104.90.40:6083/solr/ranger_audits
    XAAUDIT.SOLR.USER=ranger_solr
    XAAUDIT.SOLR.PASSWORD=NONE
    XAAUDIT.SOLR.ZOOKEEPER=NONE
    XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hive/audit/solr/spool

  • 总结
    由于文档稀少,官方文档也有很多地方落后与版本更新,社区支援不足,ranger作为一个孵化中的开源项目使用是存在诸多问题的,希望本文记录下来的踩坑经历可以帮助更多的人。

使用ranger 0.6过程中其他的参考网址:

https://cwiki.apache.org/confluence/display/RANGER/Row-level+filtering+and+column-masking+using+Apache+Ranger+policies+in+Apache+Hive
https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping
https://community.hortonworks.com/articles/59582/create-dynamic-row-level-filter-in-ranger.html
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.6/bk_installing_manually_book/content/enabling_audit_logging_hdfs_solr.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值