基于角色访问控制RBAC在B/S模式下应用的疑问 -- 转
基于角色访问控制RBAC(Role Based Access Control)的概念早在七十年代就已经提出,但在相当长的一段时间并没有得到人们的关注。进入九十年代,安全需求的发展使RBAC又引起了人们的极大关注。
在RBAC中,在用户和访问许可权之间引入角色(Role)的概念,用户与特定的一个或多个角色相联系,角色与一个或多个访问许可权相联系,角色可以根据实际的工作需要生成或取消,而用户可以根据自己的需要动态地激活自己拥有的角色,避免了用户无意中危害系统安全。
目前以有多种模型,主要分为:
- 由Sandhu等人提出的RBAC96/ARBAC97/ARBAC02模型族
- 角色图模型
- NIST(National Institute of Standard and Technology)模型
- OASIS(Open Architecture for Securely Interworking Service)模型
- SARBAC(Scope Administrative RBAC)模型
这里主要是讨论RBAC96
- RBAC0定义了能构成一个RBAC控制系统的最小的元素集合
- RBAC1引入角色间的继承关系
- RBAC2模型中添加了责任分离关系
- RBAC3包含了RBAC1和RBAC2
RBAC2定义了如下约束:
互斥角色(Mutually Exclusion Roles):同一用户在两个互斥的角色集合中只能分配给以其中一个集合中的角色,这样支持了职责分离的原则:而访问许可权的分配也有约束限制,对访问许可权的约束可以防止系统内的重要的特权被失控地分散,从而保证强制控制的可靠实施。
基数约束(Cardinality Constraints):以下定义感觉第二个比较合理
1.一个用户可拥有的角色数目受限:同样,一个角色对应的访问许可权数目但受约束。
2.通过指定角色的基数来限定该角色可以拥有的最大授权用户数.如总经理角色只能由
一位用户担任.
先决条件角色(Precondition Roles):用户为获得某些高等级角色必须首先拥有低等级角色,同理,某一角色必须具备了某些权限才能获得更高的权限。如:总会计师必须首先是会计师,要写文件必须首先拥有读文件的权限。
运行时约束(Run Constraints):允许一个用户具有两个角色,但在运行中不可同时激活这两个角色。
我的不懂之处就在这里:
- 基数约束有没有必要?哪位大哥知道麻烦说一下目的是什么.
- 运行时约束应该就是最小权限原则的体现吧,那么在B/S模式下对各种组合资源的访问都采用反复要求检索用户角色的操作是否显示没有必要了,特别是.NET这种可基于System.Security.Principal的实现.
麻烦各位大哥指点一二.
浙公网安备 33010602011771号