集中权限管理框架——Ranger
一、什么是Ranger
Apache Ranger是提供集中式权限管理的框架,可以实现Hadoop生态中的HDFS、YARN、Hive、Kafka、Storm和Solr等组件进行细粒度的权限访问控制。同时提供审计功能,如日志审计,记录各个组件资料的访问信息。
1、组件特性
1)基于策略(Policy)的访问权限模型;
2)通用的策略同步与决策逻辑,方便控制插件的扩展接入;
3)内置常见系统(HDFS、YARN、HBase等)的控制插件,且可扩展;
4)内置基于LDAP(轻量级目录访问协议)、File、Unix的用户同步机制,且可扩展;
5)统一的中心化管理界面,包括策略管理、审计查看、插件管理等。
2、权限模型
访问权限描述了“用户-资源-权限”三者之间的关系,其中:
用户:由User或Group来表达访问资源的用户或用户所在用户组;
资源:由Resource来表达,不同组件对应的业务资源不一样,如HDFS的File Path,HBase的Table;
权限:由AllowACL、DenyACL表达允许和拒绝访问。
Ranger中对于访问权限模型的表达式描述为:
Service = List<Policy>
Policy = List<Resource> + AllowACL + DenyACL
AllowACL = List<AccessItem> allow + List<AccessItem> allowException
DenyACL = List<AccessItem> deny + List<AccessItem> denyException
AccessItem = List<User/Group> + List<AcessType>
由表达式可知一条Policy分为:allow、allowException、deny、denyException四组AccessItem,则优先级:denyException > deny > allowException > allow
决策下放:如果没有Policy能决策访问,一般情况认为没有权限拒绝访问,Ranger支持将决出下放给系统自身的访问控制层。
3、总体架构
Ranger Admin:创建和更新安全访问策略,这些策略被存储在数据库中,各个组件的Plugin定期对这些策略进行轮询。具体作用:
- 接受UserSync进程传过来的用户/组信息,并存储在MySQL数据库中。
- 提供创建policy策略接口
- 以RESTFUL形式提供策略增删改查接口,同时内置一个web管理界面。
Ranger Plugins:嵌入各个集群组件进程中,是一个轻量级的Java程序,Plugin从Ranger Admin服务端拉取策略,并存储在本地文件中,当接收到来自组件用户请求时,对应组件Plugin拦截该请求,根据安全策略进行评估。
Ranger UserSync:提供的用户同步工具,可以从Unix或LDAP中拉去用户和用户组信息,这些用户和用户组信息被存储在Ranger Admin数据库中,可以在定义策略时使用。
注:
a)UserSync同步用户是单向的;不是实时同步;不支持用户删除。
b)Ranger TagSync同步Atlas中的Tag信息,基于标签的权限管理,基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权
c)KMS: Hadoop透明加密,Hadoop Key Management Server(KMS)是一个基于HadoopKeyProvider API编写的密钥管理服务器。
4、Kerberos与Ranger区别
Keberos与Ranger都是Hadoop安全体系中的重要部分,但是其分工不同,多数系统两种组件相互系
本文地址:https://blog.csdn.net/qq_25062299/article/details/108203207
上一篇: 你的肚子是不是也三折了
下一篇: Java中,一个存在十几年的bug...
推荐阅读
-
java权限框架(java管理员和用户权限管理)
-
SpringBoot2.0 整合 Shiro 框架,实现用户权限管理
-
SpringBoot2.0 整合 SpringSecurity 框架,实现用户权限安全管理
-
java权限框架(java管理员和用户权限管理)
-
Shiro权限管理框架(四):深入分析Shiro中的Session管理
-
基于mvc5+ef6+Bootstrap框架实现身份验证和权限管理
-
Laravel框架实现的rbac权限管理操作示例
-
SSM框架角色权限管理系统脚手架
-
ASP.NET权限管理框架
-
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo