当前位置: 代码迷 >> 综合 >> Apache Ranger 统一授权管理框架(三)与Hive集成
  详细解决方案

Apache Ranger 统一授权管理框架(三)与Hive集成

热度:64   发布时间:2024-02-28 23:13:34.0

一、前提

基于前篇文章《Apache Ranger 统一授权管理框架(二)集成CDH6.3.1编译安装》,已完成Apache Ranger编译和ranger-admin安装。

二、ranger-hive-plugin安装

HiveServer2节点安装ranger-hive plugin

下文ranger-hive-plugin即表示ranger-2.1.0-hive-plugin

1、安装ranger-hive-plugin

tar -zxvf ranger-2.1.0-hive-plugin.tar.gz

在这里插入图片描述

2、修改install.properties文件

cd /opt/ranger-2.1.0-hive-plugin
vi install.properties

在这里插入图片描述

# 配置ranger admin的地址
POLICY_MGR_URL = http://S1:6080# 配置hive的仓库名
REPOSITORY_NAME=hivedev# 配置hive组件的HIVE_HOME
COMPONENT_INSTALL_DIR_NAME=/opt/cloudera/parcels/CDH/lib/hive# 配置hive的审计日志
# 关闭审计日志:XAAUDIT.SOLR.ENABLE=false
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://S0:6083/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=S0:2181,S1:2181,S2:2181,S3:2181/ranger_audits
XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/hive/audit/solr/spool# 配置ranger-hive-plugin的所属用户、用户组
CUSTOM_USER=hive
CUSTOM_GROUP=hadoop

3、使hive-plugin生效

cd /opt/ranger-2.1.0-hive-plugin
./enable-hive-plugin.sh

在这里插入图片描述
验证

  • 在/opt/cloudera/parcels/CDH/lib/hive/conf目录下生成五个文件
    在这里插入图片描述
  • 在/opt/cloudera/parcels/CDH/lib/hive/lib目录下生成两个JAR文件软连接和一个目录软连接
    在这里插入图片描述在这里插入图片描述

4、新建xasecure-audit.xml

Hiveconf目录新建xasecure-audit.xml文件

cd /opt/cloudera/parcels/CDH/lib/hive/conf
vi xasecure-audit.xml

添加以下内容:

<property> <name>xasecure.audit.jpa.javax.persistence.jdbc.url</name><value>jdbc:mysql://S0/ranger</value>
</property>
<property><name>xasecure.audit.jpa.javax.persistence.jdbc.user</name><value>rangerlogger</value>
</property>
<property> <name>xasecure.audit.jpa.javax.persistence.jdbc.password</name><value>rangerlogger</value>
</property>

三、重启HiveServer2服务

CHD集群和通过界面操作方式进行重启

四、Ranger Admin配置

Ranger的默认端口是6080,如果需要修改,请修改install.properties配置文件。

访问http://s1:6080/,默认用户名/密码:admin
在这里插入图片描述
登录 Ranger 管理界面,点击 HADOOP SQL +
在这里插入图片描述
配置hive组件服务,下图的service name要与ranger-hive-plugininstall.properties配置的REPOSITORY_NAME值要一致。
在这里插入图片描述

五、简单验证

利用beeline -u jdbc:hive2://S0:10000

出现以下异常:

WARN jdbc.HiveConnection: Failed to connect to S0:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://S0:10000: 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)

解决方案

修改/opt/cloudera/parcels/CDH/lib/hive/conf/目录下的hive环境变量文件hive-env.sh注释删除export HIVE_OPTS配置
在这里插入图片描述

1、不指定username

测试beeline -u jdbc:hive2://S0:10000

出现:Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [anonymous] does not have [USE] privilege on [*] (state=42000,code=40000)
在这里插入图片描述

2、指定username

测试beeline -u jdbc:hive2://S0:10000 -n test

其中test为上文hivedev中配置的用户
在这里插入图片描述

六、权限配置示例

1、在Ranger Admin中的Scurity Zone创建测试用户hive_test

在这里插入图片描述
测试hive_test

beeline -u jdbc:hive2://S0:10000 -n hive_test

在这里插入图片描述

2、在hivedev中新建Policy测试useshowcreate权限

删除掉原hivedev Policies
在这里插入图片描述
hive_test用户配置Service Admin权限,如下图权限
在这里插入图片描述
测试hive_test

beeline -u jdbc:hive2://S0:10000 -n hive_test

此时hive_test用户,具有useshow权限
在这里插入图片描述
修改all - database 新增create权限
在这里插入图片描述
测试create权限,发现创建数据库可执行成功。

create database if not exists hive_test;

在这里插入图片描述
测试创建表,发现执行失败,测试create 权限只针对上文配置的database:*并无建表权限

CREATE TABLE t_ppp_hive (id int,pice decimal(2, 1))
STORED AS PARQUET;

在这里插入图片描述

3、新增tableselectupdate权限

update权限控制insert相关操作

在这里插入图片描述

执行建表语句

CREATE TABLE t_ppp_hive (id int,pice decimal(2, 1))
STORED AS PARQUET;

在这里插入图片描述
执行数据插入

insert into t_ppp_hive values (1,2.2);

在这里插入图片描述
测试查询,发现不具有数据列的查询权限

select * from t_ppp_hive;

在这里插入图片描述
4、新增table数据列select权限
在这里插入图片描述
测试查询,发现可以正常查询

select * from t_ppp_hive;

在这里插入图片描述

4、hive列脱敏配置

在这里插入图片描述
在这里插入图片描述
测试查询,发现可以正常查询,对hive_test->t_ppp_hive->id,对id列进行脱敏变换。

select * from t_ppp_hive;

在这里插入图片描述

列屏蔽允许Ranger为用户配置列的mask策略。mask支持以下8种策略:

  • Redact策略 - 用x屏蔽所有字母字符,用n屏蔽所有数字字符。
  • Partial mask: show last 4 策略 - 仅显示最后四个字符,其他用x代替。
  • Partial mask: show first 4 策略- 仅显示前四个字符,其他用x代替。
  • Hash策略- 用值的哈希值替换原值。
  • Nullify策略 - 用NULL值替换原值。
  • Unmasked (retain original value)策略 - 原样显示。
  • Date: show only year策略 – 仅显示日期字符串的年份部分,并将月份和日期默认为01/01。
  • Custom策略 – 可使用任何有效Hive UDF(返回与被屏蔽的列中的数据类型相同的数据类型)来自定义策略。

5、hive行过滤配置

在这里插入图片描述
字段过滤红框值为: 列名 + “要过滤的内容”
在这里插入图片描述
在这里插入图片描述
测试查询,发现可以正常查询,只查询id=="1"的行。

select * from t_ppp_hive;

一般格式为:

  • 等于:列名=“要过滤的内容”
  • 不等于:列名<>“要过滤的内容”
  相关解决方案