Apache Ranger学习总结1

  |   0 评论   |   0 浏览

Apache Ranger是Hadoop生态中的安全管理框架

Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、YARN、Hive、HBase等进行细粒度的数据访问控制。通过Ranger统一的管理控制台界面,管理员可以轻松的通过配置策略来控制用户访问权限,并且可以对用户的行为日志进行统一的审计管理。

Apache Ranger的主要特性:

· 统一的管理界面,包括用户管理、策略管理、日志审计、Ranger KMS管理、插件管理等。

· 基于策略(Policy-Based)的访问权限模型;

· 通用的策略同步与决策逻辑,方便插件的扩展接入;

· 通用的用户访问日志审计逻辑,可定义的日志存储方式,如HDFS、Solr等;

· 支持用户和LDAP、Linux系统的用户同步;

· 支持对HDFS、Hive、HBase、Storm、YARN、NiFi、Kafka等大数据组件的权限管控和审计。

目前Apache Ranger支持的大数据组件如下:

· Apache Hadoop HDFS

· Apache Hive

· Apache HBase

· Apache Storm

· Apache Knox

· Apache Solr

· Apache Kafka

· Apache NiFi

· YARN

相关概念:

user: Ranger自己管理的用户,分为internal和external,前者为Ranger自己的用户,例如admin;后者为linux或者LDAP的用户,在操作系统/LDAP里新增用户后会同步到Ranger。

group: Ranger自己管理的用户组,也有内外之分,与user类似,设置与LDAP同步后会将LDAP的组同步过来,该组为外部组;如果是Ranger自己的用户新增的组,则为internal组。

Service: 即授权管理服务,每个组件可以设置多个Service。

Policy: 每个Service中可以有多条Policy,组件不同,Policy授权模型不同

用户/组管理

Ranger的用户/组的设计跟linux基本一致。Ranger可以把操作系统新增的用户同步到Ranger内。Ranger支持Role,但没有看到完善的RBAC的功能,只有Admin/User两个角色。用户可以属于多个组,但是一旦新建后就不能修改

授权

以Hive为例。

  1. 编辑Service的属性

也可以删掉新建。默认沙箱里只给ambari-qa授权,不过我这里之前给hive做过授权,所以填了hive。需要保证Hive Service可用。

  1. 编辑Policy

Ranger支持的权限比较细,授权对象可以是DB、表、列、UDF,权限类型包括select/update/create/drop/alter/index等等。 可以选择对某一用户授权,也可以对某一用户组授权。我这里给hive授予了一个表的所有权限。

  1. 验证

注意,不经过Ranger,用户A直接连接到hive上向用户B授权,也是可以的;插件会将该配置向上同步给Ranger,因此最终也可以生效。

Hive跟HDFS不一样。HDFS可以设置二级认证,先Ranger如果失败再走一次HDFS,Hive应该只走Ranger。

下面是最终的Policy,第三条即为向上同步的grant(grant select on xademo.table1 to user xxx;)。

审计

Ranger提供4个方面的审计:

Access:记录各个服务的接入信息

Admin:记录Ranger的管理信息,例如新建了service,新建了用户等

Login Sessions:记录用户登录Ranger的信息,例如用户如果包里破解ranger web UI的登录密码会留下记录

Plugins:记录各个Plugin的同步信息

Ranger不提供认证的功能,需要搭配Kerbose。

Aapche Ranger是以插件的形式集成到HDFS中,由Ranger Admin管理访问策略,Ranger插件定期轮询Admin更新策略到本地,并根据策略信息进行用户访问权限的判定。其中提供管理员管理策略、插件的Ranger web和Ranger Plugin,与Admin之间的通信是基于HTTP的RESTful架构。Ranger集成HDFS的架构图如下:
图片1ranger.png

安装Ranger

  1. 安装Git和Maven

#wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz

解压

做软连接

#ln -s apache-maven-3.6.2-bin maven

添加环境变量

vim ~/.bashrc

export MAVEN_HOME=/data1/hadoop/maven

export PATH=${MAVEN_HOME}/bin:$PATH

2.从GitHub下载

git clone https://github.com/apache/ranger.git

3.编译安装

cd ranger

mvn clean compile package assembly:assembly install -DskipTests -Drat.skip=true

注意事项:

如果在编译安装的时候,需要对Hadoop、hbase、hive等相应的版本有要求,那么可以在下载的源代码目录下有一个pom.xml文件,这里面修改对于Hadoop组件的版本,我当初就是没有修改,导致后面在使用的时候,出现很多版本兼容性问题。

安装Ranger Admin

  1. 解压admin软件包

tar zxvf ranger-2.1.0-SNAPSHOT-admin.tar.gz -C /data/ranger

  1. 修改install.properties文件

注:ranger-admin依赖数据库,需要存储信息

cd /data/ranger/ranger-2.1.0-SNAPSHOT-admin

修改install.properties文件,需要修改的信息如下:

(1)数据库配置:

SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar #sql连接器,需要从官网下载,然后修改成该名字,当然也可以自己定义

db_root_user=root #数据库用户名

db_host=localhost #数据库主机,如果不在一台机器,请修改

db_root_password=***** #数据库密码

以下三个属性是用于设置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 ranger #创建数据库

grant all on . to ‘root’@’%’ identified by ‘your password’;

Flush privileges;

  1. 初始化ranger-admin

cd /data/ranger/ranger-2.1.0-SNAPSHOT-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';

  1. 启动ranger-admin

#ranger-admin start 或者 #./ews/ranger-admin-services.sh start 启动服务

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

查看当前的端口信息:

Netstat -anl| gerp 6080

浏览器测试输入:http://ip:6080

账户/密码:admin/admin


标题:Apache Ranger学习总结1
作者:gao1feng
地址:http://gao1feng.top/articles/2020/02/14/1581663362644.html