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

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java