简介
Ranger提供一个集中式安全管理框架,提供统一授权和统一审计能力。它可以对整个Hadoop生态中如HDFS、Hive、HBase、Kafka、Storm等进行细粒度的数据访问控制。用户可以利用Ranger提供的前端WebUI控制台通过配置相关策略来控制用户对这些组件的访问权限 。
Ranger主要由RangerAdmin、RangerUserSync、RangerPlugin三个组件构成。其中,RangerAdmin和RangerUserSync都是独立的JVM进程,而RangerPlugin需要根据不同组件的部署方式安装在对应节点上。
| 名称 | 描述 |
|---|---|
| RangerAdmin | Ranger的管理角色,拥有策略管理、用户管理、审计管理等功能,提供WebUI和RestFul接口。 |
UserSync | 负责周期从外部同步用户和用户组信息并写入RangerAdmin中。 |
组件Ranger插件
Ranger为各大数据组件提供了基于PBAC的权限管理插件,用于接管或替换组件原生的鉴权能力。
Ranger插件通常基于组件侧已有的鉴权接口进行扩展和适配。管理员可在Ranger WebUI中针对指定Service配置访问控制策略。组件侧Ranger插件会周期性从RangerAdmin拉取最新策略,并将策略缓存在组件本地。当客户端请求访问组件资源时,Ranger插件会根据请求中的用户、用户组、访问资源、操作类型等信息,与本地缓存的策略进行匹配,并最终返回允许或拒绝的鉴权结果。
UserSync用户同步
Ranger UserSync负责将外部用户体系中的用户与用户组信息同步到RangerAdmin中。在Ranger2.2.0中,UserSync可从LDAP、Unix等用户源同步用户信息。在安全模式下,通常从LDAP同步用户和用户组;在非安全模式下,则可从Unix系统用户中同步。UserSync默认采用增量同步机制,即在每个同步周期内仅同步新增或发生变更的用户及用户组信息。
需要注意的是,当外部用户源中的用户或用户组被删除时,UserSync默认不会将该删除操作同步到RangerAdmin,因此RangerAdmin中已存在的用户或用户组不会被自动删除。同时,为提升同步效率,UserSync通常不会同步不包含任何用户的空用户组。
统一审计
Ranger插件支持对访问请求进行审计记录。组件在执行鉴权时,Ranger插件可将用户、访问资源、操作类型、鉴权结果、访问时间等信息记录为审计日志。
在当前使用的Ranger2.2.0版本中,审计日志可写入本地文件,用于后续的问题排查、合规审计和访问行为追踪。
高可靠性
Ranger支持RangerAdmin高可用部署。通过部署多个RangerAdmin实例,可以避免单点故障对整体权限管理能力造成影响。
在双RangerAdmin场景下,多个RangerAdmin实例可同时对外提供服务。当其中任意一个RangerAdmin实例发生故障时,组件侧Ranger插件仍可通过其他可用的RangerAdmin获取策略信息,从而保障权限管理能力的连续性。同时,组件侧插件会在本地缓存策略,即使RangerAdmin短时间不可用,也可以基于本地已缓存的策略继续完成鉴权,进一步提升系统可用性。
高性能
Ranger通过策略本地缓存机制降低了组件鉴权过程对RangerAdmin的实时依赖。组件侧Ranger插件会周期性拉取策略并缓存到本地,在实际请求鉴权时主要基于本地缓存策略完成匹配判断,从而减少远程调用开销,提升鉴权性能。
在RangerAdmin多实例部署场景下,可结合负载均衡能力对WebUI访问及策略服务请求进行分发。用户通过浏览器访问RangerWebUI时,负载均衡组件可将请求转发至当前可用且负载较低的RangerAdmin实例,从而提升管理端访问的稳定性与整体服务能力。