ApacheRanger介绍与使⽤
1.Ranger简介
Apache Ranger提供⼀个集中式安全管理框架, 并解决授权和审计。它可以对⽣态的组件如HDFS、Yarn、、等进⾏细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制⽤户访问权限。
优点:
提供了细粒度级(hive列级别)
基于访问策略的权限模型
权限控制插件式,统⼀⽅便的策略管理
⽀持审计⽇志,可以记录各种操作的审计⽇志,提供统⼀的查询接⼝和界⾯
丰富的组件⽀持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM)
⽀持和kerberos的集成
提供了Rest接⼝供⼆次开发
为什么我们选择Ranger
多组件⽀持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM),基本覆盖我们现有技术栈的组件
⽀持审计⽇志,可以很好的查到哪个⽤户在哪台机器上提交的任务明细,⽅便问题排查反馈
拥有⾃⼰的⽤户体系,可以去除kerberos⽤户体系,⽅便和其他系统集成,同时提供各类接⼝可以调⽤
2.Ranger系统架构
1、架构介绍
2、组件介绍
RangerAdmin
以RESTFUL形式提供策略的增删改查接⼝,同时内置⼀个Web管理页⾯。
Service Plugin
嵌⼊到各系统执⾏流程中,定期从RangerAdmin拉取策略,根据策略执⾏访问决策树,并且记录访问审计
Ranger-SDK
对接开放平台,实现对⽤户、组、策略的管理
3、权限模型
访问权限⽆⾮是定义了”⽤户-资源-权限“这三者间的关系,Ranger基于策略来抽象这种关系,进⽽延伸出⾃⼰的权限模型。”⽤户-资源-权限”的含义详解:
⽤户
由User或Group来表达,User代表访问资源的⽤户,Group代表⽤户所属的⽤户组。
资源
不同的组件对应的业务资源是不⼀样的,⽐如
HDFS的FilePath
HBase的Table,Column-family,Column
Hive的Database,Table,Column
Yarn的对应的是Queue
权限
由(AllowACL, DenyACL)来表达,类似⽩名单和⿊名单机制,AllowACL⽤来描述允许访问的情况,DenyACL⽤来描述拒绝访问的情况,不同的组件对应的权限也是不⼀样的。
4、权限实现
Ranger-Admin职责:
管理员对于各服务策略进⾏规划,分配相应的资源给相应的⽤户或组,存储在db中
Service Plugin职责:
定期从RangerAdmin拉取策略
根据策略执⾏访问决策树
实时记录访问审计
策略执⾏过程:
策略优先级:
⿊名单优先级⾼于⽩名单
⿊名单排除优先级⾼于⿊名单
⽩名单排除优先级⾼于⽩名单
决策下放:如果没有policy能决策访问,⼀般情况是认为没有权限拒绝访问,然⽽Ranger还可以选择将决策下放给系统⾃⾝的访问控制层5.Ranger 安装
5.1 官⽹下载源码包
wget mirrors.tuna.tsinghua.edu/apache/ranger/2.0.0/apache-ranger-2.0.
5.2 下载maven
wget mirrors.tuna.tsinghua.edu/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.
解压,并添加环境变量,同时修改maven的Java堆内存最⼤值,避免编译内存溢出
# tar -zxvf apache-maven-3.6.
# vim /etc/profile
export MAVEN_HOME=/opt/app/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
MAVEN_OPTS=-Xmx2048m
export JAVA_HOME MAVEN_HOME MAVEN_OPTS JAVA_BIN PATH CLASSPATH
# source profile
修改maven源为阿⾥源或其他源
在maven 的conf⽬录下的settings.ximl⽂件中添加如下内容
5.3 编译Ranger
# cd /home/apache-ranger-2.0.0
# mvn clean compile package assembly:assembly install -DskipTests -Drat.skip=true
如果编译成功,据说会在当前⽬录下的target会⽣成相应的tar包⽂件,如下:(我这⾥也没有编译成功)
5.4 Ranger-admin安装部署
准备:
a 检测是否安装python2(这⾥版本必须为2)
如果没有检测到python2,则执⾏下⾯的命令 # yum -y install python
b postgres数据库安装以及下载驱动包
把postgresql-42.2.8.jar下载,并创建 /usr/share/java/ ⽬录,最后转移到该⽬录下
数据库安装完后,⼿动创建数据库ranger(下⾯操作会⽤到):create database ranger c 解压ranger-admin软件包
# tar -zxvf ranger-2.0.
d 修改install.properties⽂件
# cd /home/ranger-2.0.0-SNAPSHOT-admin
# vim install.properties
修改install.properties⽂件,这⾥使⽤的数据库是postgres,不安装solr服务
1)数据库配置(⽀持多种数据库,这⾥以postgresql为例)
DB_FLAVOR=POSTGRES #指明使⽤数据库类型
SQL_CONNECTOR_JAR=/usr/share/java/postgresql-42.2.8.jar #数据库连接驱动
db_root_user=postgres #数据库root⽤户名
db_root_password=postgres #数据库主机
db_host=192.168.4.54:5432 #数据库密码
# 以下三个属性是⽤于设置ranger数据库的
db_name=ranger #数据库名
db_user=postgres #管理该数据库⽤户
db_password=postgres #密码
# 不需要保存,为空,否则⽣成的数据库密码为'_'下载apache
cred_keystore_filename=
2) 审计⽇志, 如果没有安装solr,对应的属性值为空,或者注释掉即可
audit_store=
audit_solr_urls=
audit_solr_user=
audit_solr_password=
audit_solr_zookeepers=
4) 配置hadoop集的l⽂件,把l⽂件拷贝到该⽬录
hadoop_conf=/etc/hadoop/conf
5) rangerAdmin、rangerTagSync、rangerUsersync、keyadmin密码配置。默认为空,可以不配,对应的内部组件该属性也要为空rangerAdmin_password=
rangerTagsync_password=
rangerUsersync_password=
keyadmin_password=
e 初始化ranger-admin
# cd /home/ranger-2.0.0-SNAPSHOT-admin
编辑setup.sh,注释掉以下⼏⾏
#if [ "$?" != "0" ]
#then
#        validateDefaultUsersPassword 'admin' "${rangerAdmin_password}"
#        validateDefaultUsersPassword 'rangertagsync' "${rangerTagsync_password}"
#        validateDefaultUsersPassword 'rangerusersync' "${rangerUsersync_password}"
#        validateDefaultUsersPassword 'keyadmin' "${keyadmin_password}"
#fi
然后再执⾏ setup.sh 脚本
# ./setup.sh
初始化结果如下则成功:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。