您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页RBAC

RBAC

来源:保捱科技网
基于RBAC的权限设计

http://tech.ddvip.com2008年01月27日社区交流

关键字:DbUnit单元测试过程持续集成MavenXQuery动态编译本文详细介绍基于RBAC的权限设计

基于RBAC的权限设计模型:RBAC介绍RBAC模型作为目前最为广泛接受的权限模型。NIST(TheNationalInstituteofStandardsandTechnology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(CoreRBAC)、角色分级模型RBAC1(HierarchalRBAC)、角色模型RBAC2(ConstraintRBAC)和统一模型RBAC3(CombinesRBAC)[1]。RBAC0模型如图1所示。

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

BAC1引入角色间的继承关系

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

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

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

建立角色定义表。定出当前系统中角色。

因为有继承的问题,所以角色体现出的是一个树形结构。

2权限设计:

配置资源以及资源的操作:这里资源可以定义为一个通用的资源模型。提供通用的资

源统一接口。

数据库ER图:

关系图:

3对象组成。

分析:根据以上的类关系图和ER图可以看出。整个权限可以抽象为五个

OrgBean:用于描述org模型。Role:用于描述角色。Permission:用于描述权限。

Resource:用于描述资源。Operation:用于描述操作。

其中Permission中有Resource,Operation的聚合,资源和操作组成权限。Role和Permission都有自包含。因为设计到权限的继承。资源Resource也可能出现一颗树形结构,那资源也要有自包含。思想:

权限系统的核心由以下三部分构成:1.创造权限,2.分配权限,3.使用权限,然后,系统各部分的主要参与者对照如下:1.创造权限-Creator创造,2.分配权限-Administrator分配,3.使用权限-User:

1.Creator创造Privilege,Creator在设计和实现系统时会划分,一个子系统或称为模块,应该有哪些权限。这里完成的是Privilege与Resource的对象声明,并没有真正将Privilege与具体Resource实例联系在一起,形成Operator。

2.Administrator指定Privilege与ResourceInstance的关联。在这一步,权限真正与资源实例联系到了一起,产生了Operator(PrivilegeInstance)。Administrator利用Operator这个基本元素,来创造他理想中的权限模型。如,创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等等...这些操作都是由Administrator来完成的。

3.User使用Administrator分配给的权限去使用各个子系统。Administrator是用户,在他的心目中有一个比较适合他管理和维护的权限模型。于是,程序员只要回答一个问题,就是什么权限可以访问什么资源,也就是前面说的Operator。程序员提供Operator就意味着给系统穿上了盔甲。Administrator就可以按照他的意愿来建立他所希望的权限框架可以自行增加,删除,管理Resource和Privilege之间关系。可以自行设定用户User和角色Role的对应关系。(如果将Creator看作是Basic的发明者,Administrator就是Basic的使用者,他可以做一些脚本式的编程)Operator是这个系统中最关键的部分,它是一个纽带,一个系在Programmer,Administrator,User之间的纽带。

4.权限APIGuid

getPermissionByOrgGuid(StringorgGuid)

org

通过传入一个org的

拿到当前这个对象都具有那些访问权限。

通过传入一个

getSourcePermissionByOrgGuid(StringorgGuid,StringresouceGuid)

org的Guid和一个资源的Guid,返回改Org对当前这个资源的访问权限。getPermissionByResourceGuid(Stringresource)当前资源下都有那些权限定义。resouceGuid):Boolean

通过传入一个资源的Guid,得到

havingHeritPermission(StringorgGuid,String

传入一个orgGuid,资源GUID,查看改OrgGuid下对资源

是否有向下继承的权限。这里继承是资源的继承。即对父栏目有权限,可以继承下去对父栏目下的子栏目同样有权限。havingPermission(StringorgGuid,StringresourceGuid):Boolean

判断某Org对某一资源是否用权限。

以上是粗粒度的权限API。以下为细粒度的权限:getOperationByPermission(StringpermissionGuid)

通过permission的Guid得

到该permission的所有有效操作。getOperationByGuid(StringpermissionGuid,StringresourceGuid)

通过permision的Guid,资源的Guid得到该资源下所有的有效操作。

screeningOpreationByGuid(StringpermissionGuid,StringresourceGuid,StringorgGuid)通过permission,resource,org的Guid得到改Org对这一资源的有效操作。hasOperation(StringoperationGuid):boolean具有操作权限。

通过传入的operationGuid返回是否

5权限的实现:

1.表单式认证,这是常用的,但用户到达一个不被授权访问的资源时,Web容器就发出一个html页面,要求输入用户名和密码。

2.用

Filter防止用户访问一些未被授权的资源,

Filter会截取所有

Request/Response,然后放置一个验证通过的标识在用户的Session中,然后Filter每次依靠这个标识来决定是否放行Response。这个模式分为:Gatekeeper:采取Filter或统一Servlet的方式。Authenticator:在Web中使用JAAS自己来实现。Filter拦截只是拦截该用户是否有访问这个页面,或这一资源的权限。真正做到显示后拦截是在应用

程序内部去做。

做显示拦截提供API,标签这两种方式。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务