一、Apache Ranger是什么?
Apache Ranger是一个框架,Hadoop上对于保护数据数据安全性的安全框架。用于在整个Hadoop平台上启用,监视和管理全面的数据安全性。
二、特性
Apache Ranger具有以下特性:
- 集中式安全管理,可在中央UI或使用REST API管理所有与安全相关的任务。
- 使用Hadoop组件/工具执行特定操作和/或操作的精细授权,并通过中央管理工具进行管理
- 跨所有Hadoop组件标准化授权方法。
- 增强了对不同授权方法的支持-基于角色的访问控制,基于属性的访问控制等。
- 在Hadoop的所有组件中集中审核用户访问和管理操作(与安全性相关)。
三、RANGER内部结构
1、包含的组件如下:
- Ranger Admin 用户管理策略,提供WebUI和RestFul接口
- Ranger UserSync 用于将Unix系统或LDAP用户/组同步到RangerAdmin
- Ranger TagSync 同步Atlas中的Tag信息
- Ranger KMS
2、依赖的组件如下:
- JDK 运行RangerAdmin RangerKMS
- RDBMS 1.存储授权策略 2.存储Ranger 用户/组 3.存储审核日志
- Solr(可选) 存储审核日志
- HDFS(可选) 存储审核日志
- Kerberos(可选) 确保所有请求都被认证
3、当前2.1.0支持的组件如下:
- YARN
- HDFS
- SOLR
- KYLIN
- ATLAS
- OZONE
- HBASE
- KNOX
- KAFKA
- NIFI-REGISTRY
- ELASTICSEARCH
- HIVE
- STORM
- NIFI
- SQOOP
- PRESTO
4、处理流程如下:
四、编译
Ranger当前在GitHub中最新版本是2.2.0。安装ranger需要源码安装,官方没有提供编译好的二进制包,同时,对于要使用ranger部署的Hadoop组件,需要考虑到版本之间的兼容性。
官网地址:https://ranger.apache.org/
Git地址:https://github.com/apache/ranger
前提条件
- JDK 8
- Maven 3.6.2
maven配置阿里云仓库,这样下载能快些。
GIt
yum
install
git -y
Python3 这里是需要安装的,官方给的是需要py3
yum
install -y python3
yum
install -y
bzip2
yum -y
install fontconfig-devel
pip3
install requests
下载
wget https://mirror.bit.edu.cn/apache/ranger/2.1.0/apache-ranger-2.1.0.tar.gz
这里我们选择的是2.1.0版本 官方最新版本是2.2.0
或
git clone --branch release-ranger-2.1.0 https://github.com/apache/ranger.gi
编译RANGER-2.1.0
/opt/ranger-release-ranger-2.1.0
mvn clean compile package install -DskipTests -Drat.skip=true
约十多分钟或者更长(时间取决于当前网络和配置环境),可编译完成,过程中可能出现编译错误,根据错误信息进行逐条解决。
编译RANGER-2.1.0
/opt/ranger-release-ranger-2.1.0
mvn clean package install -Dmaven.test.skip=true -X
出现
Could not resolve dependencies for project org.apache.ranger:ranger-kylin-plugin:jar:2.1.
修改ranger-release-ranger-2.1.0/plugin-kylin的pom.xml文件
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-server-base</artifactId>
<version>${kylin.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-external-htrace</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-linq4j</artifactId>
</exclusion>
</exclusions>
</dependency>
约10多分钟,可编译完成,过程中可能出现编译错误,根据错误信息进行逐条解决。
注意:编译ranger-2.0.0和ranger-2.1.0的maven命令是不同的,用ranger-2.0.0的命令来编译2.1.0时会编译失败
在ranger-release-ranger-2.1.0/target目录下生成以下文件:
五、安装RANGER-ADMIN
安装ranger-admin的机器可以不在Hadoop集群内部,可以是随便一台。这里我就安装在当前机器上。
1、解压admin软件包
tar zxvf ranger-2.1.0-admin.tar.gz -C /opt/ranger-2.1.0-admin
2、修改install.properties文件
注:ranger-admin依赖数据库,需要存储信息。安装数据库操作请自行百度。
cd /opt/ranger-2.1.0-admin
修改install.properties文件,需要修改的信息如下:
(1)数据库配置:
SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar #sql连接器,需要从官网下载,然后修改成该名字,当然也可以自己定义
db_root_user=root #数据库用户名
db_root_password=***** #数据库密码
db_host=localhost #数据库主机,如果不在一台机器,请修改
以下三个属性是用于设置ranger数据库的
db_name=ranger #数据库名字
db_user=root #管理数据库的用户
db_password=**** #密码
(2)、审计日志
如果没有安装solr,这里可以全部注释
audit_store=solr
audit_solr_urls=http://localhost:6083/solr/ranger_audits
audit_solr_user=solr
(3)、策略管理配置
policymgr_external_url=http://localhost:6080 #配置用户名和端口,如果不想使用默认值,可以修改。
ranger在连接数据库的时候,对于密码强度要求很高,当然,这也是由于数据库的密码策略导致的,如果设置的密码不符合数据库的密码策略,那么ranger连接数据库会失败,同时,还需要在数据库里面赋予相应的权限。如下:
mysql5.7数据库密码策略:大小写+数字+特殊字符+密码长度>8
create database `ranger2` CHARACTER SET utf8 COLLATE utf8_general_ci; #创建数据库
grant all on *.* to 'root'@'%' identified by 'your password';
flush privileges;
六、初始化RANGER-ADMIN
cd /opt/ranger-2.1.0-admin
./setup.sh
如果初始化ok,启动admin
如果执行的过程中报:
SQLException : SQL state: 42000 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'root'@'%' to database 'ranger' ErrorCode: 1044
连接数据库,执行:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
七、启动RANGER-ADMIN
ranger-admin start
或
cd /opt/ranger-2.1.0-admin
./ews/ranger-admin-services.sh start
启动服务
Ranger的默认端口是6080,如果需要修改,请修改install.properties配置文件。