Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。
前置环境
- JDK 运行RangerAdmin RangerKMS
- RDBMS
- 存储授权策略
- 存储Ranger用户/组
- 存储审核日志
- Solr(可选)存储审核日志
- HDFS(可选)存储审核日志
- Kerberos(可选)确保所有请求都被认证
本教程对应的是Apache Ranger版本为1.2.0,为版本当前比较常用的稳定版本。方便我们直接应用于日常的工作当中。
Apache Ranger安装部署
1. 下载源码
大家可以访问Ranger官网下载对应版本的Ranger安装包,本教程使用的是Ranger-1.2.0版本,当前最新版本为2.0.0。
我们到清华的镜像网站去下载,同时下载mysql的java驱动包mysql-connector-java。
1
2
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/ranger/1.2.0/apache-ranger-1.2.0.tar.gz -P ~/download
$ wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/Connector-J/mysql-connector-java-5.1.48.zip -P ~/download/
2. 编译打包
下载完成之后,解压缩,对源码进行编译打包,生成安装包。
1
2
3
4
$ cd ~/download
$ tar zxvf apache-ranger-1.2.0.tar.gz
$ cd apache-ranger-1.2.0
$ mvn clean compile package install assembly:assembly -Dmaven.test.skip=true
编译完成后可在target下看到一系列的安装包。
1
2
3
4
5
6
$ ls target
...
ranger-1.2.0-admin.tar.gz
ranger-1.2.0-hdfs-plugin.tar.gz
ranger-1.2.0-hive-plugin.tar.gz
...
3. 解压
编译完成之后,对安装包进行解压到目录/usr/local
下,同时拷贝mysql驱动包到/usr/share/java
目录下,并去掉版本号。
1
2
$ tar zxvf ranger-1.2.0-admin.tar.gz -C /usr/local
$ cp mysql-connector-java-5.1.22-bin.jar /usr/share/java/mysql-connector-java-bin.jar
4. 配置
Ranger的安装非常简单,我们只需要配置它自带的install.properties
文件即可,配置完成之后执行安装命令会自动进行安装,无需其他配置。我们安装的为简单版本的ranger,没有开启其他功能,比如Kerberos、审计日志等等。我们来看一下install.properties
需要关注的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 指定Ranger使用的数据库类型,我们这里使用mysql
DB_FLAVOR=MYSQL
## 指定数据库driver的path
SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java-bin.jar
## 指定数据库root用户链接信息
db_root_user=root
db_root_password=12345678
db_host=localhost
## 指定Ranger数据库名称及用户信息
db_name=ranger
db_user=root
db_password=12345678
## 设置一下相关秘钥,后续登录会使用到,注意至少是8位
rangerAdmin_password=12345678
rangerTagsync_password=12345678
rangerUsersync_password=12345678
keyadmin_password=12345678
## 审计日志配置成数据库
audit_store=db
audit_db_user=root
audit_db_name=ranger
audit_db_password=12345678
5. 安装
配置完成之后,进行安装。
1
$ ./setup.sh
6. 启动服务
我们切换到root用户,启动ranger-admin服务,启动完成之后可以通过Web界面进行登录访问。
1
2
3
4
$ sudo su -
$ ranger-admin start
Starting Apache Ranger Admin Service
Apache Ranger Admin Service with pid 17543 has started.
7. 验证服务状态
我们访问 http://hadoop.canhui.wang:6080,可以看到我们Ranger的登录界面,登录的用户名密码为admin
,密码是我们前面配置文件中配置的密码。
安装Ranger-HDFS-Plugin
1. 解压
解压缩安装包到指定目录。
1
$ tar zxvf ranger-1.2.0-hdfs-plugin.tar.gz -C /usr/local
2. 配置
只需要修改以下的配置项,其他功能不开启,保持默认即可。
1
2
3
4
5
6
7
8
9
## Ranger Admin地址
POLICY_MGR_URL=http://hadoop.canhui.wang:6080
## 服务名称 很重要,后面在ranger-admin添加时需要保持一致
REPOSITORY_NAME=hdfs
## 安装目录,指定hadoop home
COMPONENT_INSTALL_DIR_NAME=/usr/local/hadoop-2.8.5
## 用户和用户组,我的环境默认使用hadoop用户启动相关服务
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop
3. 安装
执行安装命令。
1
$ ./enable-hdfs-plugin.sh
4. 在Ranger的Web界面添加Services
登录Ranger Admin的Web界面,添加HDFS Service。
安装Ranger-Hive-Plugin
1. 解压
解压缩安装包,并移动到指定目录。
1
$ tar zxvf ranger-1.2.0-hive-plugin.tar.gz -C /usr/local
2. 配置
修改以下的配置项,其他保持默认。
1
2
3
4
5
6
7
8
9
## Ranger Admin地址
POLICY_MGR_URL=http://hadoop.canhui.wang:6080
## 服务名称 很重要,后面在ranger-admin添加时需要保持一致
REPOSITORY_NAME=hive
## 安装目录,指定hive home
COMPONENT_INSTALL_DIR_NAME=/usr/local/apache-hive-2.3.6-bin
## 用户和用户组,我的环境默认使用hadoop用户启动相关服务
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop
3. 安装
执行安装命令
1
$ ./enable-hive-plugin.sh
4. Ranger-Admin界面添加Services
这里有坑,测试点不通,但是能直接添加上。