论文部分内容阅读
在RBAC中,在用户(user)和访问权限(permission)之间引入角色(role)的概念,用户与特定的一个或多个角色相联系,角色与一个或多个访问许可权相联系,角色可以根据实际的工作需要生成或取消。
RBAC参考模型分为四部分,分别为基本RBAC(Core RBAC)、层次结构RBAC(Hierarchical RBAC)、职责关系静态分离(Static Separation of Duty Relation)、职责关系动态分离(Dynamic Separation of Duty Relation)。
基本RBAC(Core RBAC)是整个RBAC模型的基础,它定义了RBAC模型中需要处理的基本元素。层次结构是反应组织的授权和职责的最形象的方法和手段,它能够很好的同角色建立联系。职责关系静态分离,通过对角色的层次关系和用户-角色的分配关系提供约束条件,来提供对角色冲突的解决方案。职责关系动态分离的约束条件主要是在系统运行期间实时的进行。
对于同一个用户,在某一段时间内,大部分的User-Roles分配关系都是稳定的,总是在相同的SESSION空间的子集中活动。所以,可以考虑将用户的SESSION状态保留下来,以备以后使用。这种将用户的User-Roles分配关系的SESSION状态存储在某个固定位置,以备以后使用的过程称为UA的持久化。
为了对系统中目标的访问实现控制,将访问的策略分解为以下八个部分:主体子策略(Subject Policy)、授权机构子策略(SOA Policy)、角色分配子策略(Role Assignment Policy)、权限委托子策略(Privilege Delegation Policy)、角色层次子策略(Role Hierarchy Policy)、对象访问子策略(Object Access Policy)、域子策略(Domain Policy)、行为子策略(Action Policy)。
另外,在RBAC的实现过程中,要考虑组件的模块化、灵活性和重用性等问题。可以考虑借助类似于struts等基于MVC(Model-View-Control)的开发工具来实现。实现的核心是AccessDecisionServlet类的实现。该类中的perform()方法实现系统的控制策略,并只有在通过所有的策略验证后,系统才转发服务请求。这样,就使系统中的其它部分与RBAC的访问控制独立开来。该类的另一个最重要的方法是checkAccess()。通过该方法,判断当前会话session是否能够访问特定的对象obj并执行特定的操作op。