基于角色的访问控制(RBAC)设计思想
基于角色的访问控制(RBAC)设计思想
基于角色的访问控制设计思想
摘要
分析访问控制的一般设计思路,提出一套基于角色的访问控制的设计思路,并使其成为一个模块加入到系统中使得系统能实现为不同角色的用户提供不同的权限并进行验证等功能。
内容简介
有这么一个案例:国内有一家大型知名医药企业,它们使用了一套企业管理系统,总公司经理用自己的账户登录后能进行查看企业销售报表,审核订单等操作,而区域销售代表用自己的账户登录后能够使用该系统进行客户信息维护、为客户下订单、提取预付款等操作,在公司总部大楼内,财务部会计用自己的账户登录后可以使用帐务结算、工资发放等操作…
在这套系统中,区域销售代表是无权查看企业销售报表,也无权进行审核订单操作的,其他人也类似,整个企业的所有员工在该系统中都各司其职,都无法越权使用超越自己职责范围的操作。
甚至他们各自进入系统所能看到的界
面都不尽相同。
这对该系统来说,它就必须要有一个判断逻辑:主体、行为、对象,也就是说谁能做什么事或者谁不能做什么事。
本文将和你一起讨论该访问控制模块的设计思想,首先将会提供一些模型并加以分析,然后一步步改进,最后得到一个小型但是比较完整的模型。
目的
注意本文所实现的模型并不是完整意义的访问控制系统,它仅仅实现了其中的一小部分,它只解决一些粗粒度的权限,也就是仅仅告诉系统谁能做什么事或者谁不能做什么事。
从程序的角度来讲,它只是以能为上层的访问控制系统提供服务为目标。
相当多细粒度的权限问题因其极其独特而不具通用意义,它们被看作是业务逻辑的一部分。
比如,要求:合同只能被它的创建者删除,与创建者同组的用户可以修改,所有的用户能够浏览,这既可以认为是一个细粒度的权限问题,也可以认为是一个业务逻辑问题,在整个权限系统的架构设计之中对其不予过多考虑。
当然,权限系统的架构也必须要能支持这样的控制判断。
或者说,系统提供足够多但不是完全的控制能力。
系统只提供粗粒度的权限,细粒度的权限被认为是业务逻辑的职责,它不提供所有关于权限的问题的解决方法,只提供一个基础,并解决那些具有“ 共性” 的( 或者说粗粒度的) 部分。
功能分析
在总公司经理张三审核订单中,总公司经理是一个角色,张三是一个用户,订单是一个资源,审核是对该资源的一个行为。
如果只说审核,这是无意义的,当它结合了一个特定资源的实例(订单)时,可以称为这是一个权限,也就是说,审核订单是一个权限。
对于总公司经理来说,审核订单这一权限是得到许可授权的,当张三得到总公司经理这一角色的任命后,它就得到了审核订单这一权限的许可授权。
当然,张三既然是总公司经理了,总公司经理的权限有一大堆,比如查看销售报表,所以张三还能进行查看销售报表等操作。
当然还有其它几个人也具有总公司经理这一角色,所以他们能进行和张三同样的工作。
于是,对于张三,它通过总公司经理这一角色获得了属于它的一系列权限集(审核订单、查看销售报表等)。
这样就形成一个映射关系:从张三到他的权限的映射关系。
rbac概念
rbac概念
基于角色的访问控制(RBAC)是一种广泛应用的权限管理方法,其核心思想是将权限与角色关联,用户通过成为适当角色的成员而获得相应的权限。
这种方法极大地简化了权限的管理,使得管理员可以根据用户的职责和角色来授予不同级别的权限,以限制和管理对系统资源的访问。
RBAC模型可以分为RBAC0、RBAC1、RBAC2、RBAC3四种,其中RBAC0是基础模型,其它三种都是在RBAC0基础上的变种。
在20世纪90年代期间,大量的专家学者和专门研究单位对RBAC的概念进行了深入研究,先后提出了许多类型的RBAC 模型,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有系统性,得到普遍的应用。
使用RBAC的好处包括:简化权限管理、提高安全性、降低管理成本等。
然而,它也存在一些缺陷,如角色继承问题、性能问题等。
为了更好地理解和使用RBAC,需要深入探讨其原理、模型、实践以及与其他访问控制方法(如ABAC、ACL、PBAC等)的比较。
RBAC的基本思想
RBAC的基本思想RBAC(角色访问控制)的基本思想可简单地用图1来表示,即把整个访问控制过程分成两步:访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。
由于RBAC实现了用户与访问权限的逻辑分离,因此它极大的方便了权限管理。
例如,如果一个用户的职位发生变化,只要将用户当前的角色去掉,加入代表新职务或新任务的角色即可,角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,并且委派用户到角色不需要很多技术,可以由行政管理人员来执行,而配置权限到角色的工作比较复杂,需要一定的技术,可以由专门的技术人员来承担,但是不给他们委派用户的权限,这与现实中情况正好一致。
用户权限在.NET中的设计与实现利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应一些权限,然后利用中的用户控件(UserControl)来判断该用户对应的角色是否对访问页面有访问的权力。
下面将从数据库设计、添加角色和用户控件的使用等三方面来阐述具体实现过程。
1、数据库中表的设计首先,在数据库中设计功能模块表、功能表和角色表等三个表。
(1)功能模块表为了管理好用户的权限,首先要组织好系统的模块,为此设计了一个功能模块表。
见表1。
(2)功能表每个功能模块所具有的子功能称为功能,如商品管理模块goods(属于功能模块的范畴)包含商品信息查询、商品信息更新、商品信息删除、商品定价信息查询以及商品定价信息更新五种功能,功能表的设计见表2。
上面提到的例子可以作为这样几条记录分别插入功能模块表和功能表。
insert into TModule values(0,\'商品管理模块\',\'goods\',5);insert into Tfunction values(0,\'商品信息查询\',\'selectgoods\',0);insert into Tfunction values(1,\'商品信息更新\',\'updategoods\',0);insert into Tfunction values(2,\'商品信息删除\',\'deletegoods\',0);insert into Tfunction values(3,\'商品定价信息查询\',\'selectgoodsprice\',0);insert into Tfunction values(4,\'商品定价信息更新\',\'updategoodsprice\',0);(3)角色表角色表的设计关键在于角色值的定义,它是一个由0和1组成的类似二进制数的字符串。
RBAC
基于角色访问控制RBAC1 RBAC模式介绍RBAC的基本思想是在用户和访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的访问。
角色是访问权限的集合,用户通过赋予不同的角色获得角色所拥有的访问权限。
一个用户可拥有多个角色,一个角色可授权给多个用户;一个角色可包含多个权限,一个权限可被多个角色包含。
用户通过角色享有权限,它不直接与权限相关联,权限对存取对象的操作许可是通过角色实现的。
2 NIST标准RBAC的4种部件模型NIST(The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成:1.基本模型RBAC0(Core RBAC)2.角色分级模型RBAC1(Hierarchal RBAC)3.角色限制模型RBAC2(Constraint RBAC)4.统一模型RBAC3(Combines RBAC)1. 基本模型RBAC0RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。
在RBAC 之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,此模型指明用户、角色、访问权限和会话之间的关系。
每个角色至少具备一个权限,每个用户至少扮演一个角色;可以对两个完全不同的角色分配完全相同的访问权限;会话由用户控制,一个用户可以创建会话并激活多个用户角色,从而获取相应的访问权限,用户可以在会话中更改激活角色,并且用户可以主动结束一个会话。
2.角色分级模型RBAC1RBAC1引入角色间的继承关系,角色间的继承关系可分为一般继承关系和受限继承关系。
一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。
而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。
基于角色的访问控制技术(RBAC)
RBAC(Role Based Access Control)访问控制是通过某种途径显示的准许或限制访问能力及范围,从而限制对目标资源的访问,防止非法用户的侵入或合法用户的不慎操作所造成的破坏[2]。
目前流行的访问控制模型有自主访问控制模型(Discretionary Access Control,DAC)、强制访问控制模型(Mandatory Access Control, MAC)和基于角色的访问控制模型(Role-Based Access Control,RBAC)。
自主访问控制是访问控制技术中最常见的一种方法,允许资源的所有者自主地在系统中决定可存取其资源客体的主体,此模型灵活性很高,但安全级别相对较低;强制访问控制是主体的权限和客体的安全属性都是固定的,由管理员通过授权决定一个主体对某个客体能否进行访问。
无论是DAC 还是MAC 都是主体和访问权限直接发生关系,根据主体/客体的所属关系或主体/客体的安全级别来决定主体对客体的访问权,它的优点是管理集中,但其实现工作量大、不便于管理,不适用于主体或客体经常更新的应用环境。
RBAC是一种可扩展的访问控制模型,通过引入角色来对用户和权限进行解耦,简化了授权操作和安全管理,它是目前公认的解决大型企业的统一资源访问控制的有效访问方法,其 2 个特征是:(1) 由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,从而减小授权管理的复杂性,降低管理开销;(2)灵活地支持企业的安全策略,并对企业变化有很大的伸缩性。
2.2 RBAC 模型的基本思想在 RBAC 模型中,角色是实现访问控制策略的基本语义实体。
系统管理员可以根据职能或机构的需求策略来创建角色、给角色分配权限并给用户分配角色,用户能够访问的权限由该用户拥有的角色权限集合决定,即把整个访问控制过程分成2步:访问权限与角色相关联,角色再与用户关联,从而实现用户与访问权限的逻辑分离。
RBAC 模型引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Pr ivilege(权限,表示对Resource的一个操作,即Operation+Resource),当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。
rbac权限管理 类设计
rbac权限管理类设计
权限管理是软件系统中非常重要的一个部分,它可以确保用户
只能访问他们被授权的资源和功能。
基于角色的访问控制(RBAC)
是一种常见的权限管理方法,它通过将用户分配到角色上,然后将
角色分配到权限上来管理用户的访问权限。
在设计RBAC权限管理类时,我们需要考虑以下几个方面:
1. 用户类,用户类包括用户的基本信息(如用户名、密码、邮
箱等),以及用户和角色之间的关联关系。
2. 角色类,角色类包括角色的基本信息(如角色名、描述等),以及角色和权限之间的关联关系。
3. 权限类,权限类包括系统中所有的权限信息,如访问某个功能、查看某个资源等。
4. RBAC管理类,这个类负责管理用户、角色和权限之间的关
联关系,包括用户和角色的关联、角色和权限的关联等。
在设计这些类时,我们需要考虑类之间的关联关系,以及如何
有效地进行权限的管理和控制。
我们可以使用面向对象的设计原则,如单一职责原则、开放-封闭原则等来设计这些类,确保其高内聚、
低耦合。
另外,我们还需要考虑如何在实际系统中使用这些类,如何进
行权限的验证和控制,以及如何进行日志记录和审计等方面的设计。
总的来说,设计RBAC权限管理类需要考虑用户、角色、权限之
间的关联关系,以及如何有效地进行权限管理和控制。
通过合理的
设计,可以确保系统的安全性和可靠性。
rbac 标准
rbac 标准
RBAC即基于角色的访问控制(Role-Based Access Control),在RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
这种设计极大地简化了权限的管理,而且权限的设计非常清晰,管理起来非常方便。
RBAC认为授权实际上是“主体”对“客体”的操作,其中“主体”是权限的拥有者或主体(如:User,Role),“客体”是操作或
对象(operation,object)。
RBAC标准模型可以分为四个模型:RBAC0、RBAC1、RBAC2和RBAC3。
其中,RBAC0是RBAC的核心思想,RBAC1是角色分层的模型,RBAC2
增加了约束模型,而RBAC3则是RBAC1和RBAC2的结合。
此外,基于RBAC模型的权限管理可以分为三级:一级权限是应用访问权限,即用户可以访问哪些应用;二级权限是菜单访问权限,即用户可以访问一个应用中的哪些菜单和按钮的权限;三级权限是数据访问权限,即用户可以访问某个菜单下的哪些数据的权限。
以上内容仅供参考,建议咨询专业人士以获取准确的信息。
权限管理设计模式
权限管理设计模式
在软件开发中,权限管理是一个重要的功能。
它可以控制用户对系统资源的访问,保证系统的安全性和数据的隐私性。
常见的权限管理设计模式有以下几种:
1. 基于角色的访问控制(RBAC):这种模式将用户分配到不同的角色中,每个角色具有不同的权限。
用户通过扮演特定的角色来获得相应的权限。
这种模式的优点是易于管理和维护,适用于大型系统。
2. 基于属性的访问控制(ABAC):这种模式根据用户、资源和操作的属性来决定是否授予权限。
属性可以包括用户的身份、资源的类型、操作的时间等。
这种模式更加灵活,可以实现细粒度的权限控制。
3. 自主访问控制(DAC):这种模式将权限直接授予给用户,用户可以自行决定是否将权限授予其他用户。
这种模式比较灵活,但安全性较低,容易出现权限滥用的情况。
4. 强制访问控制(MAC):这种模式根据安全策略对用户和资源进行分类,并规定不同类别的用户和资源之间的访问权限。
这种模式安全性高,但管理和维护比较复杂。
在实际应用中,可以根据具体需求选择适合的权限管理设计模式。
通常情况下,会将多种模式结合使用,以达到更好的权限控制效果。
rbac权限设计原则
rbac权限设计原则
基于角色的访问控制(RBAC)是一种常见的权限设计模式,它
基于用户的角色来管理对系统资源的访问。
在设计RBAC权限时,有
一些重要的原则需要考虑:
1. 最小化权限原则,用户被授予的权限应该是其工作职责所需
的最小权限,这样可以降低系统被滥用的风险。
RBAC通过角色的分
配来实现这一原则,每个角色只拥有完成特定工作所需的最小权限。
2. 分离责任原则,RBAC需要区分权限管理和用户身份验证,
权限管理应该由系统管理员或授权的角色负责,而用户身份验证则
由专门的身份验证系统来处理。
这样可以确保权限管理的独立性和
安全性。
3. 一致性原则,RBAC需要确保权限的分配和管理在整个系统
中是一致的,不同的用户或角色在不同的环境下应该有相同的权限。
这可以通过统一的权限管理策略和流程来实现。
4. 可扩展性原则,RBAC需要具备良好的可扩展性,能够适应
系统的增长和变化。
在设计权限时,需要考虑到未来可能的角色和
权限变化,并确保系统可以灵活地适应这些变化。
5. 审计和监控原则,RBAC需要具备完善的审计和监控机制,
能够跟踪和记录用户对系统资源的访问情况,以便及时发现和应对
潜在的安全问题。
综上所述,RBAC权限设计需要遵循最小化权限、分离责任、一
致性、可扩展性和审计监控等原则,以确保系统的安全性和灵活性。
在实际应用中,还需要根据具体的业务需求和安全要求来进行具体
的设计和实现。
rbac权限管理设计案例
rbac权限管理设计案例
RBAC(基于角色的访问控制)权限管理是一种流行的控制访问权限的技术,它利用角色的概念来控制用户的访问权限,通过用户身份的角色来确定用户被授予的权限。
1、RBAC 权限管理系统:
(1)权限定义:在RBAC中定义权限级别,可以分为基础权限和高级权限;
(2)角色定义:定义可以拥有某种特定权限的特定角色,以及可以为用户分配此类角色的操作;
(3)用户定义:为用户指定特定角色,以及为这些用户授予特定权限;
(4)权限分配:为特定用户设定特定的角色和权限;
(5)角色管理:确定每个用户的授权角色。
2、 RBAC 权限管理实施方法:
(1)数据库架构设计:构建用户表、角色表和权限表,定义角色和权限之间的关系;
(2)业务流程定义:为不同的业务场景定义合适的流程,并且在每个流程中对RBAC系统进行处理;
(3)安全管理:确定合理的安全解决方案,并严格执行,避免未经
授权的访问;
(4)系统调试:使用测试用例确保RBAC系统的正常运行,并通过
安全测试确保系统的安全性。
3、 RBAC 权限管理应用场景:
(1)企业组织:在企业内部进行精细化的权限管理,控制员工的访
问权限和功能权限;
(2)金融行业:用于控制银行业务的权限,确保用户访问银行业务
的安全性;
(3)软件开发:用于控制针对不同用户当前软件功能的访问权限;(4)互联网应用:确保网站访问者和用户能够访问正确权限的内容。
总之,RBAC权限管理是一种经过完善的安全控制解决方案,它可以
根据实际的场景,更精细地控制用户的访问权限,帮助企业实现细分
的权限控制,确保企业网络的安全。
用户权限管理数据库设计(RBAC)
⽤户权限管理数据库设计(RBAC) RBAC(Role-Based Access Control,基于⾓⾊的访问控制),就是⽤户通过⾓⾊与权限进⾏关联。
简单地说,⼀个⽤户拥有若⼲⾓⾊,每⼀个⾓⾊拥有若⼲权限。
这样,就构造成“⽤户-⾓⾊-权限”的授权模型。
在这种模型中,⽤户与⾓⾊之间,⾓⾊与权限之间,⼀般者是多对多的关系。
(如下图) ⾓⾊是什么?可以理解为⼀定数量的权限的集合,权限的载体。
例如:⼀个论坛系统,“超级管理员”、“版主”都是⾓⾊。
版主可管理版内的帖⼦、可管理版内的⽤户等,这些是权限。
要给某个⽤户授予这些权限,不需要直接将权限授予⽤户,可将“版主”这个⾓⾊赋予该⽤户。
当⽤户的数量⾮常⼤时,要给系统每个⽤户逐⼀授权(授⾓⾊),是件⾮常烦琐的事情。
这时,就需要给⽤户分组,每个⽤户组内有多个⽤户。
除了可给⽤户授权外,还可以给⽤户组授权。
这样⼀来,⽤户拥有的所有权限,就是⽤户个⼈拥有的权限与该⽤户所在⽤户组拥有的权限之和。
(下图为⽤户组、⽤户与⾓⾊三者的关联关系) 在应⽤系统中,权限表现成什么?对功能模块的操作,对上传⽂件的删改,菜单的访问,甚⾄页⾯上某个按钮、某个图⽚的可见性控制,都可属于权限的范畴。
有些权限设计,会把功能操作作为⼀类,⽽把⽂件、菜单、页⾯元素等作为另⼀类,这样构成“⽤户-⾓⾊-权限-资源”的授权模型。
⽽在做数据表建模时,可把功能操作和资源统⼀管理,也就是都直接与权限表进⾏关联,这样可能更具便捷性和易扩展性。
(见下图) 请留意权限表中有⼀列“权限类型”,我们根据它的取值来区分是哪⼀类权限,如“MENU”表⽰菜单的访问权限、“OPERATION”表⽰功能模块的操作权限、“FILE”表⽰⽂件的修改权限、“ELEMENT”表⽰页⾯元素的可见性控制等。
这样设计的好处有⼆。
其⼀,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。
