CDH大数据平台集成Apache Ranger安全管理框架解决方案

本文主要是介绍CDH大数据平台集成Apache Ranger安全管理框架解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


一、总体解决方案

    基于apache Ranger开源项目源代码进行二次开发,实现支持CDH集成的Ranger安全管理系统。另外需要在CDH管理界面上配置部分参数。

    本文档经过测试验证的CDH和ranger版本:

CDH版本:6.3.2

Apache Ranger版本:2.0.0

二、ranger插件公共模块agent-common修改

1、配置文件处理

问题描述:

CDH在重启组件服务时为组件服务独立启动进程运行,动态生成运行配置文件目录和配置文件,ranger插件配置文件部署到CDH安装目录无法被组件服务读取到。

解决办法:

基于ranger 源代码二次开发,在agents-common模块org.apache.ranger.plugin.service

.RangerBasePlugin类init()方法内部开始处插入copyConfigFile()方法调用,并定义copyConfigFile()方法,实现复制ranger配置文件到CDH组件服务的运行配置文件目录:

    private void copyConfigFile() {String serviceHome = "CDH_" + this.serviceType.toUpperCase() + "_HOME";if ("CDH_HDFS_HOME".equals(serviceHome)) {serviceHome = "CDH_HADOOP_HOME";}serviceHome = System.getenv(serviceHome);File dir = new File(serviceHome);String userDir = System.getProperty("user.dir");File destDir = new File(userDir);IOFileFilter regexFileFilter = new RegexFileFilter("ranger-.+xml");Collection<File> configFileList = FileUtils.listFiles(dir, regexFileFilter, TrueFileFilter.INSTANCE);for (File rangerConfigFile : configFileList) {try {FileUtils.copyFileToDirectory(rangerConfigFile, destDir);} catch (IOException e) {LOG.error("Copy ranger config file failed.", e);}}}

2、enable-agent.sh配置

问题描述

  • hdfs和yarn插件安装部署后,插件jar包会部署到组件安装目录的share/hadoop/hdfs/lib子目录下,启动hdfs或yarn运行时加载不到这些jar包,会报ClassNotFoundException: Class org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer not found
  • kafka插件安装部署后,启动运行时会从插件jar包所在目录加载ranger插件配置文件,读不到配置文件会报错addResourceIfReadable(ranger-kafka-audit.xml): couldn't find resource file location

解决办法

修改agents-common模块enable-agent.sh脚本文件:

HCOMPONENT_LIB_DIR=${HCOMPONENT_INSTALL_DIR}/share/hadoop/hdfs/lib

修改为:

HCOMPONENT_LIB_DIR=${HCOMPONENT_INSTALL_DIR}
elif [ "${HCOMPONENT_NAME}" = "kafka" ]; thenHCOMPONENT_CONF_DIR=${HCOMPONENT_INSTALL_DIR}/config

修改为:

elif [ "${HCOMPONENT_NAME}" = "kafka" ]; thenHCOMPONENT_CONF_DIR=${PROJ_LIB_DIR}/ranger-kafka-plugin-impl

以上修改需重新打包ranger,然后安装部署各插件。

三、hive插件集成问题

hive插件需安装在所有hiveServer2节点服务器上

1hive环境变量文件修改

解决hive客户端访问时报如下错误的问题: 

Error: Could not open client transport with JDBC Uri: 
jdbc:hive2://****:10000/testdb: Failed to open new session: 
java.lang.IllegalArgumentException: Cannot modify hive.query.redaction.rules at 
runtime. It is not in list of params that are allowed to be modified at runtime 
(state=08S01,code=0)Error: Could not open client transport with JDBC Uri: 
jdbc:hive2://****:10000/testdb: Failed to open new session: 
java.lang.IllegalArgumentException: Cannot modify hive.exec.query.redactor.hooks atruntime. It is not in list of params that are allowed to be modified at runtime 
(state=08S01,code=0)

 手工修改/opt/cloudera/parcels/CDH/lib/hive/conf/目录下的hive环境变量文件hive-env.sh,注释删除export HIVE_OPTS配置行

2hive版本兼容性问题

Apache Ranger 2.0.0版本对应hive版本3.1.0,CDH 6.3.2版本对应hive版本2.1.1,不兼容,hive server启动会报错

解决办法:

把Apache Ranger 1.2.0版本hive插件代码hive-agent拷贝到Apache Ranger 2.0.0版本hive-agent,修改Apache Ranger 2.0.0根目录pom.xml中的hive版本号为2.1.1:

<hive.version>2.1.1</hive.version>

重新编译打包Apache Ranger 2.0.0版本并安装hive插件

四、HDFS插件集成

HDFS插件需安装在所有namenode节点服务器上

参数配置

在CDH管理界面配置HDFS参数,确保dfs.permissions参数已勾选,

编辑“hdfs-site.xml 的 NameNode 高级配置代码段”参数配置,新增配置:

dfs.namenode.inode.attributes.provider.class=org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer

五、YARN插件集成

YARN插件安装在所有ResourceManager节点服务器上

参数配置

在CDH管理界面配置YARN参数,配置“yarn-site.xml ResourceManager 高级配置代码段”,新增参数配置:

yarn.authorization-provider=org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer

六、kafka 插件集成

Kafka插件安装在所有Broker节点服务器上

参数配置

在CDH管理界面配置Kafka参数,配置“kafka.properties Kafka Broker 高级配置代码段”,新增参数配置:

authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer

七、其它插件的集成待研究和测试

这篇关于CDH大数据平台集成Apache Ranger安全管理框架解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906118

相关文章

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片