Fork me on Gitee

Ranger概述及安装配置

0. 前序

希望拥有一个框架,可以管理大多数框架的授权,包括:

  • hdfs的目录读写权限
  • 各种大数据框架中的标的权限,列级(字段)权限,甚至行级权限,函数权限(UDF)等相关资源的权限
  • 是否能帮忙做数据脱敏

Ranger 框架应运而生。

Ranger

1. 概述

1.1 何为Ranger

Apache Ranger是一个用来在Hadoop平台上进行监控,启动服务,以及全方位数据安全访问管理的安全框架。

Ranger愿景是在Apache Hadoop生态系统中提供全面的安全管理。随着企业业务的扩展,企业可能在多用户环境中运行多个工作任务,这就要求Hadoop内的数据安全性需要扩展为同时支持多种不同的需求进行数据访问,同时还需要提供一个可以可以对安全策略进行集中管理,配置和监控用户访问的框架。Ranger由此产生。

Ranger官网:https://ranger.apache.org

1.2 Ranger目标

  • 允许用户使用Web UI或者Rest API对所有和安全相关的任务进行集中化的管理
  • 允许用户使用一个管理工具对操作Hadoop体系中的组件和工具的行为进行细粒度的授权
  • 支持Hadoop体系中各个组件的授权认证标准
  • 增强了对不同业务场景需求的授权方法支持,例如基于角色的授权或者基于属性的授权
  • 支持对Hadoop组件所涉及安全的审计行为的集中化管理

1.3 Ranger支持的框架

  • Apache Hadoop
  • Apache Hive
  • Apache HBase
  • APache Storm
  • Apache Knox
  • Apache Solr
  • Apache Kafka
  • NIFI
  • YARN

1.4 Ranger架构

![image-20230130142242981](/Users/zhangshao/Library/Application Support/typora-user-images/image-20230130142242981.png)

img

1.5 Ranger的工作原理

Ranger的核心是Web应用程序,也称为Ranger Admin模块,此模块由管理策略、审计日志和报告三部分组成。

管理员角色的用户可以通过Ranger Admin提供的web界面或REST API来定制策略。这些策略会由Ranger提供的轻量级的针对不同Hadoop体系中组件的插件来执行。插件会在Hadoop不同组件的核心进程启动后,启动对应的插件进程来进行安全管理。

1.6 Ranger组件细分

  • Ranger UserSyn

同步Unix(当前那台服务器上用户和用户组)或者LDAP中的用户和用户组的信息到Ranger用户管理中

image-20230131154642668

  • Ranger Admin

提供Web UI配置权限

与Ranger Plugin进行交互,将权限同步至Ranger Plugin所在节点

你看到的User Source里写的Internal,就是你在Ranger里创建的用户,这个用户主要是用来登录Ranger的WebUI,初始状态下,该用户仅能查看Ranger Service和Policy,管理员用户admin可以在用户管理中,升级普通用户为管理员用户

image-20230131155130804

  • Plugin

集中到服务中进行权限控制,每个组件的权限分开配置,像插件一样

image-20230131155606692

2.Ranger编译

Ranger官网提供的源码包版本最新为2.3.0,不提供二进制安装包。故需要maven进行编译。目测测试环境如下

ranger版本 2.0.0
hadoop版本 3.1.3
hive版本 3.1.2
mysql版本 5.7.40
python版本 2.7.5

2.1 下载Ranger源码包

wget https://repo.huaweicloud.com/apache/ranger/2.0.0/apache-ranger-2.0.0.tar.gz

2.2 下载maven并配置国内源

# 下载maven3.6.3
wget https://repo.huaweicloud.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

配置到环境变量

tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt
mv apache-maven-3.6.3 maven-3.6.3

vi /etc/profile


export MAVEN_HOME=/opt/maven-3.6.3
export PATH=$JAVA_HOME/bin:$/usr/local/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$MAVEN_HOME/bin:$PATH

更新settiings.xml中 mirror 为华为源

<mirror>
    <id>huaweicloud</id>
    <mirrorOf>*</mirrorOf>
    <url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>

2.3 安装git

yum -y install git

2.4 编译Ranger

首次编译ranger,需要较长的时间,主要是由于maven下载相应的依赖。

[root@single ranger-2.0.0]# pwd
/opt/ranger-2.0.0
mvn clean compile package assembly:assembly install -DskipTests -Drat.skip=true

编译完成如下:

image-20230131165309371

编译完成后,在当前目录下的target文件夹会生成相对应的tar包文件,如下

image-20230131163156226

2.5 编译过程中遇见的问题汇总

Failed to execute goal org.codehaus.mojo:native-maven-plugin:1.0-alpha-8:compile……

解决方案:

在这个错误上方找到了没有gcc命令相关日志,安装个gcc
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

3. Ranger Admin使用

3.1 数据库环境准备

在Mysql数据库中创建ranger存储数据的数据库,

create database ranger;

创建用户名和密码均为ranger的用户

grant all privileges on ranger.* to ranger@'%' identified by 'ranger';

可能用到的命令(密码强度low)ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

set global validate_password_policy=LOW;
set global validate_password_length=6;

3.2 解压ranger-admin软件包

mkdir -p /opt/ranger
cd /opt//opt/ranger-2.0.0/target
tar -zxvf ranger-2.0.0-admin.tar.gz -C /opt

3.2 修改install.properties文件

cd /opt/ranger/ranger-2.0.0-admin/

vi install.properties

修改install.properties文件,这里使用的数据库是mysql,不安装solar服务

1) 数据库配置
DB_FLAVOR=MYSQL #指定使用的数据库类型
SQL_CONNECTOR_JAR=/opt/mysql-connector-java-8.0.21.jar #数据库链接jar包所在位置
db_root_user=root  #数据库root用户
db_root_password=123456 #root用户密码
db_host=localhost  #数据库主机名

# 以下是设置ranger数据库的
# DB UserId used for the Ranger schema
#
db_name=ranger
db_user=ranger
db_password=ranger

# 不需要保存,为空,否则生成的数据库密码为'_'
cred_keystore_filename=

2)审计日志,如果没有安装solar,对应属性值为空

#Source for Audit Store. Currently only solr is supported.
# * audit_store is solr
audit_store=

3)策略管理配置,配置ip和端口。默认即可

policymgr_external_url=http://single:6080

4)配置hadoop conf文件目录

hadoop_conf=/opt/hadoop-3.1.3/etc/hadoop/conf

5)rangerAdmin、rangerTagSync、keyadmin密码配置。默认为空,可以不配置。

rangerAdmin_password=admin123456 #密码强度为 字母加数字
rangerTagsync_password=admin123456
rangerUsersync_password=admin123456
keyadmin_password=admin123456


6) 是否需要ranger用户

# 启动ranger是否需要创建ranger用户
# ------- UNIX User CONFIG ----------------
#
unix_user=ranger
unix_user_pwd=ranger
unix_group=ranger

3.3 初始化ranger-admin用户

# 以root用户指定该脚本, 需要写入一些配置
./setup.sh

image-20230131175248351

使用ll命令查看软链接是否以生成,如若没有,执行./set_global.sh

image-20230131175410803

3.3 启动ranger-admin

ranger-admin start
# 或者
./ews/ranger-admin-services.sh start

ranger默认执行端口是6080。或者进程中看到EmbeddedServer进程

image-20230131175552608

查看Ranger Admin server执行日志,默认路径为ews/log/

image-20230131175732975

浏览器测试链接: http://single:6080,登录界面用户名和密码为上文配置文件中配置rangerAdmin_password的admin/admin123456,登录进入界面如下

image-20230131175841690

4.Ranger-usersync安装部署

4.1 解压ranger-usersync安装包

tar -zxvf ranger-2.0.0-usersync.tar.gz -C /opt/ranger

4.2 修改install.properties文件

# 配置ranger_admin地址
POLICY_MGR_URL = http://single:6080

# 同步源系统类型
SYNC_SOURCE = unix

# 同步时间间隔设置(单位:分钟)
SYNC_INTERVAL = 1

# usersync程序运行的用户和用户组
#User and group for the usersync process
unix_user=ranger
unix_group=ranger

# 修改rangerusersync用户的密码。注意,此密码应与Ranger admin中install.properties的rangerusersync_password相同。此处可以为空,同样Ranger admin的也要为空

#change password of rangerusersync user. Please note that this password should be as per rangerusersync user in ranger
rangerUsersync_password=admin123456

# 配置hadoop 配置路径
hadoop_conf=/opt/hadoop-3.1.3/etc/hadoop/conf

# 配置usersync的log路径 
#user sync log path
logdir=logs

4.3 初始化ranger-usersync

./setup.sh

image-20230131180609072

4.4 启动ranger-usersync

ranger-usersync start

验证是否安装成功,可以查看是否同步到unix上的用户信息

image-20230131180814911

参考文章

  1. Ranger安装部署
posted @ 2023-01-31 18:11  shine-rainbow  阅读(2600)  评论(0编辑  收藏  举报