1.Ranger概述
Apache Ranger提供集中式的权限管理框架,可以对Hadoop生态中的各个组件进行细粒度的权限访问控制,并且提供了Web UI方便管理员操作。
Ranger主要有以下功能:
(1)提供细粒度的权限控制,可到列级。
(2)基于访问策略的权限模型。
(3)权限控制插件式,统一方便的策略管理。
(4)支持审计日志,可以记录各种操作的审计日志,提供统一的查询接口和界面。
(5)丰富的组件支持(HDFS、HBASE、HIVE、YARN、KAFKA、STORM等)
(6)支持和Kerberos的集成。
(7)提供了Rest接口供二次开发。
2.Ranger架构
Ranger的总体架构如下图所示:
从上图可看出,Ranger主要由三个组件组成:
(1)Ranger Admin:您可以创建和更新安全访问策略,这些策略被存储在数据库中。各个组件的Plugin定期对这些策略进行轮询。
(2)Ranger Plugins:Plugin嵌入在各个集群组件的进程里,是一个轻量级的Java程序。例如,Ranger对Hive的组件,就被嵌入在Hiveserver2里。这些Plugin从Ranger Admin服务端拉取策略,并把它们存储在本地文件中。当接收到来自组件的用户请求时,对应组件的Plugin会拦截该请求,并根据安全策略对其进行评估。
(3)Ranger UserSync:Ranger提供了一个用户同步工具。您可以从Unix或者LDAP中拉取用户和用户组的信息。这些用户和用户组的信息被存储在Ranger Admin的数据库中,可以在定义策略时使用。
2.1.Ranger Plugin
系统插件主要负责三件事:定期从RangerAdmin拉取策略;根据策略执行访问决策树;实时记录访问审计。
多数的系统在实现时都有考虑功能扩展形的问题,一般会为核心的模块暴露出可扩展的接口,访问控制模块也不例外。Ranger Plugin正是通过实现访问控制接口,将自己的逻辑嵌入到各个系统中。下表列出了Ranger Plugin对所支持的紫铜的扩展接口。
各个Ranger Plugin的安装也有所不同:HDFS安装插件在NameNode节点;HBase安装插件在MasterServer和RegionServer;Hive安装在HiveServer2……。
2.2.辅助组件
Ranger架构中还包含KMS和TAG。
2.2.1.KMS
Hadoop透明加密,全称Hadoop Key Management Serve。是一个基于HadoopKeyProvider API编写的密钥管理服务器。RangerKMS就是对KMS的策略管理和密钥管理,使用keyadmin用户登录。
2.2.2.TAG
TAG是基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权。
3.权限模型
访问权限无非是定义了“用户-资源-权限”这三者之间的关系,Ranger基于策略来抽象这种关系,进而延伸出自己的权限模型。
3.1.用户
由User或Group来表达,User代表访问资源的用户,Group代表用户所属的用户组。
3.2.资源
不同的组件对应的业务资源是不一样的。比如:HDFS的FilePath;HBase的Table、Column-family、Column;Hive的Database、Table、Column;Yarn的是Queue。
3.3.权限
由(AllowACL, DenyACL)来表达,类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况,不同的组件对应的权限也是不一样的。如下表所示:
不同插件对应不同的权限项,具体可查看Ranger Plugin源码。
3.4.权限管理流程
Ranger权限管理遵循以下流程,主要包含六项工作:
(1)Ranger Admin创建服务service。
(2)Ranger Admin创建策略policy。
(3)Ranger Plugin插件拉取策略。
(4)Ranger Plugin对用户访问请求鉴权:show connector。
(5)Ranger Plugin插件记录审计日志audit。
(6)Ranger Admin查看审计日志audio。