http://blog.chinaunix.net/u/11262/showart_213703.html
http://wiki.springside.org.cn/display/springside/Acegi+Reference
RBAC初学笔记
什么是RBAC?
RBAC就是Role-Based Access Control,基于角色的访问控制。角色访问控制(RBAC)引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privilege(权限,表示对Resource的一个操作,即Operation+Resource),更符合企业的用户、组织、数据和应用特征。
RBAC的关注点在于Role与user,Role与privilege的关系,也就是User Assignment与Permission Assignment的关系。
RBAC有以下优点:
1、减少授权管理的复杂性,降低管理开销
2、灵活的支持企业的安全策略,对企业的变化有很大的伸缩性
解决复杂的权限管理问题的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。
RBAC中的几个重要概念:
l Who:权限的拥有者或主体。典型的有Principal、User、Group、Role、Actor等等。跟授权有关系的实体就只有角色(Role)和用户(User)。譬如:业务经理(Role),张三(User)
Role:作为一个用户(User)与权限(Privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予Role而不是直接给User或Group。基于角色的访问控制方法的思想就是把对用户的授权分成两部份,用角色来充当用户行驶权限的中介。角色是一组访问权限的集合,一个用户可以是很多角色的成员,一个角色也可以有很多个权限,而一个权限也可以重复配置于多个角色。
User:用户就是一个可以独立访问计算机系统中的数据或者用数据表示的其它资源的主体,我们用USERS表示一个用户集合。用户在一般情况下是指人。
Group:是一组相关user的集合。User从group继承出来,也就具有了该group的角色权限。
个人觉得可以这么认为,role是抽象化了的user或group。
l What:权限针对的资源(Resource)(包括资源类别(the type of Resource)和资源实例(the instance of Resource))。譬如:报表。
粗粒度:表示类别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特定实例。比如,用户管理中,创建、删除,对所有的用户都一视同仁,并不区分操作的具体对象实例。
细粒度:表示实例级,即需要考虑具体对象的实例(the instance of object),当然,细粒度是在考虑粗粒度的对象类别之后才再考虑特定实例。比如,合同管理中,列表、删除,需要区分该合同实例是否为当前用户所创建。
l How:亦作action,表示某种访问方法(亦请参考Operator条目解释)。譬如:删除。
l Operator:操作。表示施加于What的How动作。是一种Resource Related的概念,单独的How动作是没有实际意义的,譬如:删除;只有与具体资源结合在一起才有意义,譬如:删除报表。
下面的图展示了user,group,role,how的关系
权限系统的核心由以下三部分构成:
1. 创造权限
2. 分配权限
3. 使用权限
系统各部分的主要参与者对照如下:
1.创造权限 - Programer创造,
2.分配权限 - Administrator 分配,
3.使用权限– User
- Programer 向权限系统提供 Operator = Privilege + Resource
- Administrator 利用 Operator 这个基本元素,来创造他理想中的权限模型。
如,创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等等...
这些操作都是由 Administrator 来完成的. - User 使用 Administrator 分配给的权限去使用各个系统。
程序员只要回答一个问题,就是, 什么权限可以访问什么资源,也就是前面说的 Operator。程序员提供 Operator 就意味着给系统穿上了盔甲。Administrator 就可以按照他的意愿来建立他所希望的权限框架。Operator是这个系统中最关键的部分,它是一个纽带,一个系在Programmer,Administrator,User之间的纽带。