Ranger简介
Ranger的几个特性
• 基于策略(Policy-based)的访问权限模型
• 通用的策略同步与决策逻辑,方便控制插件的扩展接入
• 内置常见系统(如HDFS、YARN、HBase等12个)的控制插件,且可扩展
• 内置基于LDAP、File、Unix的用户同步机制,且可扩展
§ 权限模型
权限模型
访问权限定义了”用户-资源-权限“这三者间的关系,Ranger基于策略来抽象这种关系,进而延伸出自己的权限模型。”用户-资源-权限”的含义详解:
• 用户:由User或Group来表达,User代表访问资源的用户,Group代表用户所属的用户组。
• 资源:由Resource来表达,不同的组件对应的业务资源是不一样的,比如HDFS的File Path,HBase的Table。
• 权限:由(AllowACL, DenyACL)来表达,类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况。不同的组件对应的权限也是不一样的。
Ranger中的访问权限模型可以用下面的表达式来描述,从而抽象出了”用户-资源-权限“这三者间的关系:
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’>
说明:
Resource 这里指组件的实际资源,比如hdfs的path,hive的database、table、column等
AccessType 这里指访问权限的类型,比如read,write,excute等操作
AccessItem 这里是访问项,包含用户和访问权限两部分
优先级别
denyException > deny > allowException > allow
下表列出了Ranger支持的部分系统的模型实体枚举值(即访问权限类型):
Service | Resource | Access Type |
---|---|---|
HDFS | Path | Read,Write,Execute |
HBase | Table,Column-family,Column | Read,Write,Create,Admin |
Hive | Database,Table,UDF,Column,URL | Select,Update,Create,Drop,Alter,Index,Lock,Write,Read,ALL |
系统插件(AgentPlugin)
系统插件主要负责三件事:
• 定期从RangerAdmin拉取策略
• 根据策略执行访问决策树
• 实时记录访问审计
下表列出了Ranger插件对部分支持的系统的扩展接口:
Service | Extensible Interface | Ranger Implement Class |
---|---|---|
HDFS | org.apache.hadoop.hdfs.server.namenode.INodeAttributeProvider | org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer |
HBase | org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface | org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor |
Hive | org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory | org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory |
- 点赞
- 收藏
- 关注作者
评论(0)