文章目录
- 1.Ranger简介
- 2.Ranger构成
- 2.1 内部依赖
- 2.2 内部组件
- 2.3 Ranger插件(version-2.0)
- 3.Ranger架构
- 4.Ranger+Knox+Kerberos架构
- 5.Ranger权限模型
- 6.Ranger策略评估
- 7.Ranger编译、打包、集成
- 8.Ranger API
- 9.Ranger权限映射表
- 10.Ranger技术体系梳理
1.Ranger简介
- Apache Ranger是大数据领域一个集中式
安全管理框架
,并解决授权和审计,是Hadoop生态的综合安全管理组件。 - 通过制定策略(policies)实现对诸如HDFS、Yarn、Hive、Kafka、HBase、Storm等组件进行细粒度的
权限控制
。 - 通过Ranger控制台,管理员通过配置策略来控制用户访问权限,比如,可以控制用户读取HDFS文件权限,甚至可以控制用户对Hive某列的访问权限。
2.Ranger构成
2.1 内部依赖
依赖 | 描述 |
| 支持RangerAdmin、RangerKMS正常执行 |
| Ranger自动化安装 |
| Ranger编译环境 |
| 存储Ranger授权策略、用户/组、审核日志信息 |
| (可选)存储审计日志 |
| (可选)认证系统 |
注:
1
2.2 内部组件
组件 | 描述 |
| 用户管理策略,提供WebUI和RestFul接口 |
| 用于从Unix系统、FILE、LDAP/AD用户/组,同步用户/组到RangerAdmin |
| 同步Atlas中的Tag信息,基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权 |
| 管理Ranger密钥信息 |
2.3 Ranger插件(version-2.0)
组件 | 版本 | 插件安装节点 | 资源类型 | 权限类型 |
HDFS |
| Name Node | Path | Read,Write,Execute |
HBASE |
| Master,Regional Server | Table,Column-family,Column | Read,Write,Create,Admin |
HIVE |
| HiveServer2 | database,table,Column | select,update,Create,Drop,Alter,Index,Lock,All, Read,Write,ReplAdmin,Service Admin,Temporary UDF Admin,Refresh |
YARN |
| Resource Manager | Queue | submit-app,admin-queue |
KNOX |
| Knox gateway | ||
STORM(授权需要Kerberos认证) |
| ALL/Cluster | Topology | Submit Topology,File Upload,File Download,Kill Topology, Rebalance,Activate,Deactivate,Get Topology Conf,Get Topology,Get User Topology,Get Topology Info,Update New Credential |
SOLR(授权需要Kerberos认证) |
| ALL/Cluster | ||
KAFKA(授权需要Kerberos认证, 删除all-topic策略中public组) |
| ALL/Cluster | topoc | Publish,Consume,Configure,Describe, Create,Delete,Describe Configs,Alter Configs |
NIFI | 1.8.0(未在pom.xml找到,参考ranger1.1.0支持版本) | NA | ||
KYLIN |
| ALL/Stand-alone | ||
NIFI-REGISTRY | (未在pom.xml找到) | - | ||
SQOOP |
| ALL/Stand-alone | ||
ATLAS |
| ALL/Stand-alone | ||
ELASTICSEARCH |
| ALL/Cluster | ||
PRESTO |
| - | ||
OZONE |
| - |
注:
Apache atlas 是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。
ranger-release-ranger-2.0.0/pom.xml
显示依赖组件版本
3.Ranger架构
Ranger授权本质上是:通过读取安装组件时生成的配置文件及组件自带的jar包,通过hook方式调用各个组件服务达到权限管理
。
在安装服务组件插件过程中,当执行./enable-xxx-plugin.sh
时,主要执行了以下三个步骤:
第一,将插件自带的
conf
更新到系统安装的服务conf
下;
第二,将插件自带的lib
更新到系统安装的服务lib
下;
第三,将install.properties
生成.xml
文件,更新到系统安装的服务conf
下;
4.Ranger+Knox+Kerberos架构
参考:https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=57901344
5.Ranger权限模型
权限模型 | 描述 |
用户 | User/Group,User代表访问资源的用户,Group代表用户所属的用户组 |
资源 | Resource,不同组件资源差异 HDFS:Resource Path; HBase:[Table,Column-family,Column] |
权限 | AllowACL/DenyACL类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况,不同的组件对应的权限也是不一样的 |
Service = List<Policy>
Policy = List<Resource> + AllowACL + DenyACL
AllowACL = List<AccessItem> allow + List<AccssItem> allowException
DenyACL = List<AccessItem> deny + List<AccssItem> denyException
AccessItem = List<User/Group> + List<AccessType>
一条Policy有四组AccessItem:allow、allowException、deny、denyException,优先级由高到低依次是:
denyException >> deny >> allowException >> allow
黑名单排除优先级 >> 黑名单 >> 白名单排除优先级 >> 白名单
黑名单优先级高于
白名单,黑名单排除优先级高于
黑名单,白名单排除优先级高于
白名单
6.Ranger策略评估
注:
Ranger的联合授权模型-[HDFS+Yarn]参考:
https://blog.csdn.net/Happy_Sunshine_Boy/article/details/103368889https://cwiki.apache.org/confluence/display/RANGER/Deny-conditions+and+excludes+in+Ranger+policies
7.Ranger编译、打包、集成
- 以下两篇博客,详细描述了Ranger 编译、打包、集成Ambari的过程
- Ranger0.7.0 编译、打包参考:
- Ranger2.0.0 编译参考:
- Ambari2.7.3-HDP3.0.1-Ranger版本1.1.0升级2.0.0:
8.Ranger API
- 《Apache Ranger Public REST APIs-Server-Policy使用Postman测试》描述了Ranger中对应服务和策略的REST API
- 《Apache Ranger Public REST APIs-User-Group使用Postman测试》 描述了Ranger中对应用户和用户组的REST API
9.Ranger权限映射表
Hadoop Component Commands to Ranger Permission Mapping
- Ambari2.7.3+HDP3.0.1 大数据集群组件命令与Ranger权限映射表: