该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-09
最后修改:2011-10-10
laiweiweihi 写道 ltian 写道 zean 写道 数据级的权限控制最难了,特别是海量数据,RBAC是可以实现,不过实现了就死了,有一定规则的还好,可以通过用户自己设置规则逻辑,遇到没啥规则的,比较头痛,同样请大牛指点。
我还真不知道RBAC啥时候实现了数据级权限了,如果实现了,请告诉我一下,我真是想知道。另外,你们说的RBAC是NIST的RBAC吗?如果真是的话,我看好像RBAC标准在数据权限方面是Open的,也就是说没有指明如何实现。 恕我多言,这位大哥哥在面对RBAC的额问题时候,总是发起的反问居多,却没有分享出自己的见解。这样不好,有种居高临下的感觉。 ![]() RBAC标准及相关论文已由美国NIST分享给全世界了,关于RBAC,我实在没有什么可以分享的。我的问题很诚恳,因为当时我刚看完RBAC标准没多久,你们这么肯定的说RBAC已经把数据资源的权限问题解决了,我很怀疑。那样的口气不对,冒犯了你们,请原谅。现在,我又看了一遍RBAC的标准,发现还是老的,没有变化,也许我的水平有限,没有理解好标准,如果你认为RBAC真的可以解决数据资源问题,那么你给我们分享一下不是更好吗? |
|
返回顶楼 | |
发表时间:2011-10-10
yin_bp 写道 至于权限的划分,应该可以划分为以下三大类:
1.功能权限-系统菜单,页面功能操作点 2.数据权限-业务数据范围权限 3.管理权限-管理功能权限和数据权限的权限 部分认同,理由如下: 1.业务数据范围权限有时候会和页面功能操作点结合起来。在A范围内可以干三个操作,而在B数据范围内只能做两个操作。 2.管理权限和非管理权限可以通过一个统一模式实现。假如把用于授权的功能也看过一项业务功能话,把组织机构,角色都看过业务数据的话,那么可以用统一模式实现管理权限。 |
|
返回顶楼 | |
发表时间:2011-10-10
赞同楼上的用统一模型实现权限管理,搞清楚最低层的本质,上层怎么变化都无所谓
RBAC本质就是AC嘛,只是RB的而已,既然有RB了 上层什么rule base, group base, XB都无所谓,什么XML,JSON都是玩出得花 找到用户和权限之间的关系,找地方控制它就完了 数据级前面我已经说了 有规律,规则实现(也就是一个通用case覆盖范围广一些而已) 没规律,case by case,找到拦截点去一个个实现 目前确实没有任何人或公司能够实现通用的数据级权限管理 |
|
返回顶楼 | |
发表时间:2011-10-10
最后修改:2011-10-10
sdnasky 写道 赞同楼上的用统一模型实现权限管理,搞清楚最低层的本质,上层怎么变化都无所谓
RBAC本质就是AC嘛,只是RB的而已,既然有RB了 上层什么rule base, group base, XB都无所谓,什么XML,JSON都是玩出得花 找到用户和权限之间的关系,找地方控制它就完了 数据级前面我已经说了 有规律,规则实现(也就是一个通用case覆盖范围广一些而已) 没规律,case by case,找到拦截点去一个个实现 目前确实没有任何人或公司能够实现通用的数据级权限管理 不是没有人能够实现,鉴于国内的情况,实现了也只是给自己用,谁会拿出去给别人用,别人也不会用。而且那么多的场景,讨论起来很麻烦,也没有人愿意去讨论,所以,解决方案的讨论浅尝辄止即可。 |
|
返回顶楼 | |
发表时间:2011-10-10
这个就是"通用"的范围了,适合自己公司的通用即可
更高级别的通用就没那么简单了,目前还没有看到任何产品能做到"通用"的 就目前解决方案来说,互相借鉴下,学习下,肯定能搞定一个自己公司用的权限框架 不过我早已放弃了数据级的高层次"通用" 还是case by case好了 定好规则,符合规则的,就是通用的 至于例外情况,老实写代码catch吧 |
|
返回顶楼 | |
发表时间:2012-03-13
其实我觉得角色需要重新定义一下内涵,他到底指代的是一种身份,还是权限的容器,这是值得探讨的。在RBAC中,我们经常会面对如下的困境,一个用户面对多个角色,一个角色对应多个权限描述,而角色与角色间可能出现权限重叠、矛盾的情况,在设计和代码处理不好的情况下,系统权限设计往往陷入设计之初目标非常远大,实际实现往往不尽人意,所以权限开发也成为了重复开发最多的部分。
我认为这正是角色在充当权限容器时的问题,由于角色间接的将一个实际用户分为了不同的人格,举个例子说如果我要求某功能在某角色下可以操作某界面元素,而在某角色下不能操作这个界面元素,而这两个角色用户都要拥有,请问你该怎么设计?在进入这个功能时,你对权限的判断如何? 所以我认为角色其实充当的是用户的业务身份,而不是权限容器,用户才是权限的容器,我们可以对承担某个业务角色的用户进行权限复用。比如我要复用我上一位领导的权限,那么我直接找这个领导的角色比如部门经理,然后列出部门经理所对应的具体用户,用户可以根据自己的认识直接选人复用权限就行了 |
|
返回顶楼 | |
发表时间:2012-03-13
接上:
我认为这种权限复用的模式好处在于 1、我针对用户可以单独个性化定义权限,而不再引入一些什么虚拟权限啦、默认权限这些莫名的定义来控制用户可以自定义和不可定义的权限 2、将角色回归他本来应该承担的职责,说白了,角色是什么?管理员、业务员还是其他什么,不过都是我们对一类用户身份的描述,如果将其作为权限容器,我们在概念上就先入为主的认为这类人都是一个权限,事实上在复杂的信息系统中,这完全可能产生差别。 |
|
返回顶楼 | |
发表时间:2012-03-13
这种模式 在实际开发中会不会经常需要用?有没有别的替代方法?
|
|
返回顶楼 | |
发表时间:2012-03-19
这个帖子不错,有不少好的思想,贯穿其中
|
|
返回顶楼 | |
发表时间:2012-03-19
liyi830813 写道 其实我觉得角色需要重新定义一下内涵,他到底指代的是一种身份,还是权限的容器,这是值得探讨的。在RBAC中,我们经常会面对如下的困境,一个用户面对多个角色,一个角色对应多个权限描述,而角色与角色间可能出现权限重叠、矛盾的情况,在设计和代码处理不好的情况下,系统权限设计往往陷入设计之初目标非常远大,实际实现往往不尽人意,所以权限开发也成为了重复开发最多的部分。
我认为这正是角色在充当权限容器时的问题,由于角色间接的将一个实际用户分为了不同的人格,举个例子说如果我要求某功能在某角色下可以操作某界面元素,而在某角色下不能操作这个界面元素,而这两个角色用户都要拥有,请问你该怎么设计?在进入这个功能时,你对权限的判断如何? 所以我认为角色其实充当的是用户的业务身份,而不是权限容器,用户才是权限的容器,我们可以对承担某个业务角色的用户进行权限复用。比如我要复用我上一位领导的权限,那么我直接找这个领导的角色比如部门经理,然后列出部门经理所对应的具体用户,用户可以根据自己的认识直接选人复用权限就行了 兄弟你看过RBAC了吗? |
|
返回顶楼 | |