Ranger 的审计配置
默认Hadoop集群环境是没有权限控制的,HDFS、Hive上文件和表是可以随意访问的,这对公司的数据资产带来的很大风险。随着大数据生态的进化和成熟,越来越多的公司都实施了自己数据治理策略,权限管理就是其中不可或缺的一部分。Apache Ranger是Hadoop开源生态中提供集中式权限管理的框架,可以对Hadoop生态中Hive、HDFS、YARN等组件进行细粒度的权限访问控制。
Ranger主要有以下三个组件组成
Ranger Admin
提供创建和更新安全访问策略,这些策略被存储在数据库中。各个组件的plugin定期对这些策略进行轮询。
Ranger Plugins
Plugin是嵌入各个组件的一个插件,它是一个轻量级的程序,例如Ranger对Hive插件就会嵌入到Hiveserver2中。插件会定期从Admin拉取策略数据,并把它们保存在本地文件系统中,当接受到用户的访时时,对应组件的插件会拦截用户请求,并根据安全策略对其进行评估。
Ranger UserSync
提供了一个用户同步工具,可以从Linux或LDP同步用户和用户租的信息。这些用户和用户组的信息被存储在Admin的本地数据库中,可以在定义策略时使用。
Ranger是支持审计功能的,安装时可以选择审计数据保存的位置,默认支持Solr和HDFS。HDFS的配置比较简单,这里就不赘述了。这次遇到的问题主要是在Solr配置这部分,我安装的是HDP 2.6.5对应的Ranger Version是 0.7,Ranger0.7中自带的Solr Schema比较老,我用的是Solr 8.6,直接使用自带Schema是不兼容的,需要对Schema进行升级改动。Schema升级成功之后,可以通过Ranger管理后台中的查看审计功能页面进行验证,如果配置错误,页面会提示错误信息。这里我遇到的问题是,当Solr配置好以后审计日志并没有写入Solr,Solr查不到数据。检查Ranger Hive Agent源代码没看什么问题,后台通过管理后台添加一条记录,Solr就可以工作了,可能是Solr这边的一个Bug。
- 启动Solr Docker
#创建Solr Docker
docker run -d -v "solrdata:/var/solr" --name solr -p 8983:8983 solr:8
#进入UI验证一下是否启动成功
http://10.91.1.85:8983/solr/#/
#创建solr collection
docker exec -ti solr bash
solr create_core -c ranger_audits
#后台UI验证一下
http://10.91.1.85:8983/solr/#/ranger_audits/core-overview
#更新Schema
- 在Ranger后台管理页面,添加Solr配置,保存并启动相关服务
3. 用户登陆beeline进行查询,进入Ranger查看Audit记录,此时应该是没有结果的,也就是说数据没有写入成功
4. 在Solr后台为Collection添加一条记录
5. 再次进入Ranger后台中的Audit页面,这时就可以看到审计的记录了
managed-schema 放到网盘了,有需要可以参考
链接: https://pan.baidu.com/s/1KISNKdx1PkHsY58XKfoI6A
密码: hcaj