产品邦V大 发表于 2023-8-17 13:18

RBAC基于角色的用户权限管理 产品经理必修知识点

美国国家标准与技术研究院(The National Institute Of Standards And Technology,NIST)标准RABC(Role-based policies Access Control)基于角色的访问控制模型由4个部件模型组合成,这4个部件模型分别是基本模型RBAC0(Core RABC)、角色分级模型RBAC1(Hierachal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RABC)。

RBAC0模型如下图:

http://static.oschina.net/uploads/img/201501/15185637_cA2W.jpg

(1)RBAC0定义了能构成一个RBAC控制系统最小的元素集合。在RBAC中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限、会话session是用户与激活角色之间的映射、RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。

(2)RBAC1引入角色间的继承关系,角色间的继承关系可以分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。

(3)RBAC2模型添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限的关系一起决定了RBAC2模型中用户的访问许可。

(4)RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。

事实上,RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,Who、What、How构成了访问权限的三元组,也就是“Who对What(Which)进行How的操作”。

Who:权限的拥有者或主体(User、Group、Role、Actor)。

What:权限针对的对象或资源(Resource),资源具体有层次关系。例如,网页是资源,网页上的按钮、文本框等对象也是资源,是网页节点的子节点,如可以访问按钮,则必须能够访问页面。资源应该是一个树形结构。

How:具体的权限(Privilege,正向授权与负向授权),这个权限是绑定在特定的对象上的。比如说教师评测系统新闻的发布权限,叫做“部门新闻发布权限”。这就表明,该Privilege是一个发布权限,而且是针对部门新闻这种资源的一种发布权限。权限,包括系统定义权限和用户自定义权限,用户自定义权限之间可以指定排斥和包含关系(如:读取、修改、管理三个权限,管理权限包含前两种权限)。

Operator:操作。表明对Waht的How操作。也就是Privilege+Resource的集合。

Role:角色,一定数量的权限的集合,是粗粒度和细粒度(业务逻辑)的接口。一个基于粗粒度控制的权限框架软件,对外的接口应该是Role,具体业务实现可以直接继承或拓展丰富Role的内容,Role不是如同User或Group的具体实体,它是接口概念,抽象的统称。Role的继承通过Group来体现,所以不考虑Role的继承关系。但是Role可以与相关的Group相关联,便于授权。

Group:用户组,权限分配的单位和载体,直接映射组织关系。权限不考虑分配给特定的用户。组可以包括组(以实现权限的继承)。组可以包含用户,组内用户继承组的权限。Group要实现继承。即在创建时必须要指定该Group的ParentGroup是什么Group。在粗粒度控制上,可以认为,只要某用户直接或间接的属于某个Group那么它就具备这个Group的所有操作许可。细粒度控制上,在业务逻辑判断中,User仅应关注其直接属于的Group,来判断是否“同组”。

User:纯粹的用户,与权限分离,只能通过Role关联响应的权限。

根据RBAC模型的权限设计思想,简历权限管理系统的数据库模型,如图:

http://static.oschina.net/uploads/img/201501/15185638_MlOi.jpg

该模型的主要关系有:分配资源操作RA(Resource Assignment)、分配角色权限PA(Privilege Assignment)、分配用户组角色GA(Group Assignment),描述如下:

(1)分配资源访问RA:实现资源和操作之间的关联关系映射

(2)分配角色权限PA:实现操作和角色之间的关联关系映射

(3)分配用户组角色GA:实现用户组和角色之间的关联关系映射。

权限管理系统的操作模式主要分为一下三个步骤:

(1)创造资源、权限:用户创建一个资源(Resource)的实例的时候指定相关的权限以及权限分配、比如学生评测只能创建者有修改的权限,同Group的人员只能拥有查看的权限。

(2)分配权限:系统管理员指定相关资源(Resource)的权限分配,创建Role,创建Group,给Role分配权限,给Group分配User,给Group赋予某个Role等等

(3)使用权限:User使用管理员分配的角色去使用相应的系统功能。

权限管理系统服务器端:提供集中管理权限的服务、负责提供用户的鉴别、用户信息、用户组信息,以及权限关系表的计算,如下图所示:

http://static.oschina.net/uploads/img/201501/15185638_Ewjk.jpg

系统根据用户、用户组、角色、操作、访问方式和资源之间的关联关系,同时考虑权限的正负向授予,计算出用户的最小权限。采用代理Proxy模式,集中控制来自应用系统的所要访问的权限计算服务,并返回权限关系表,即二元组{ResourceId, OperationId}。

在表现层:可以通过访问能力表CL和访问控制表ACL两种可选的访问方式访问权限管理系统。以教师评测系统为例:

(1)首先采用基于表单的验证。考虑到需要鉴别的实体是用户,采用基于ACL访问方式,用户登录时调用权限管理系统的用户鉴别服务,如果鉴别成功,调用权限计算服务,并返回权限关系表,以HashTable的方式存放到登录用户的全局Session中;如果没有全局Session或者过期,则被导向登录页面,重新获取权限。

(2)直接URL资源采用基于CL访问方式进行的访问控制。如果用户直接输入URL地址访问页面,哟偶两种方式控制访问:1、通过权限标签读取CL进行控制;2、采取页面载入判断权限模式,进行权限控制,如果没有权限,则重定向到登录页面。

权限控制机制

(1)权限标识:利用页面标签来标识该页面上所有的权限访问控制对象

(2)权限控制:应用系统用户登录系统时,从权限管理中获得权限关系表后,一方面,权限标签控制页面展示;另一方面,利用权限控制组在业务逻辑中进行相关的权限控制,尤其是和业务逻辑紧密联系的控制对象实例的权限控制

来源:OSCHINA IIIThSoul

gavinphil 发表于 2023-8-19 17:24

感谢分享!
页: [1]
查看完整版本: RBAC基于角色的用户权限管理 产品经理必修知识点