`
metadmin
  • 浏览: 168403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

对权限管理认识的一些误区

阅读更多

经常和周边软件开发的朋友、网友 ,甚至还有不懂计算机的朋友们聊“权限管理”。有些朋友对权限管理理解非常透彻,有些朋友对有些概念模糊不清。这里将我遇到的问题总结一下,供大家参考。欢迎拍砖!

 

1,“权限系统是否有加密功能”。 呵呵,这一般是不懂计算机的人说的。他们联想路线图是:权限--->安全--->加密。加密属于安全,加密是将明文通过算法转化为密文,不属于权限管理。

 

2,“哦,就是用户管理系统啊”。这是将用户管理系统当作权限管理系统。这也是不对的。权限基本都是基于用户的,这个用户有什么权限,那个用户有什么权限。用户管理系统,只是将用户管理起来。(权限可以是不局限于用户的,可以是某个网站使用另一个网站资源,一台计算机权限,一个线程权限等,这个按下不表)

 

3,“哦,就是用户-角色-权限嘛”。这个属于权限管理范畴,但权限管理范畴已经远远扩大了。比如审核员和高级审核员都能审核财务数据,但审核权限肯定是不同的。资金达到一定规模的财务数据,只有高级审核员才能审查。这个资金限度,可能还会和行业有关呢。比如:钢铁行业限额是1000万,零售行业限额是50万。

 

4,“细粒度权限和业务紧密关联,将细粒度权限抽象起来管理,这是不可能的”。这句话说对了一大半,只要将后面改为“这是很难的”就全对了。广大开发者都在孜孜不倦的寻找好的办法来解决这个事情。XACML规范听说制定了都10年多了(我没有考证,呵呵,有点懒),Oracle Entitlement Server(原来是BEA AquaLogic Enterprise Security)也有几年的历史了。IBM1996年收购了Tivoli,这也有写年头了吧。中国本土产品效方为安Metadmin Access Manager,都实现了通过界面来管理授权策略,不需要写程序。

 

5,“细粒度权限是业务方法,不是权限”。这个我不敢完全说对或者错。以前这方面缺少好的方法,将权限从业务中解开耦合,对其进行封装,所以不好实现。大多采用硬编码。随着时代进步了,这部分功能可以做了。那么如果这个划入权限管理范畴,业务代码不是变的简单、纯粹了嘛!多好啊。将细粒度权限划入权限吧。

 

6,“机构层级查询怎么做呢”。这显然有点急性子。按机构层级查询、维护数据,只是细粒度权限中的一个需求。细粒度权限应该而且必须实现这个需求。但我建议设计权限系统的设计师们,不要抱着这个不放。将这个机构当作一个纬度(而且在权限系统里面应该是一个无意义的纬度,也就是说和其他的纬度没有什么区别,没有特殊性),这样权限系统的可扩展性会更好一些。

 

7,“数据查询不是权限”。这个在中国企业里面,很多人都会认为是权限。比如总经理能查询什么数据,部门经理又能查询什么数据。这当然要授权啊。不过一些外企,反而认为这是业务方法,不做处理。Oracle Entitlement Server和IBM Tivoli Access Manager认为这是业务方法。他们产品只提供了“决策权限”,也就是只返回“true/false”那种。还好Metadmin Access Manager是在中国长大的,认为“查询权限”是权限,所以实现了这个需求。

 

 

目前,我遇到的基本就这些。欢迎大家讨论,拍砖!

 

 

------------------------------

权限管理圈子,专门讨论权限管理问题,欢迎大家加入!

http://accessmanager.group.iteye.com/

分享到:
评论
35 楼 GonnaFlyNow 2009-04-09  
<div class="quote_title">LinuxForShare 写道</div>
<div class="quote_div">我们单位的权限划分我研究过,用以下来做的:<br />1.功能划分——模块<br />2.菜单划分<br />3.数据划分——CRUD<br />4.部门划分<br />5.角色划分<br />数据库里主要涉及了大概8张表来做权限的划分吧<br />感觉很普通,但是已经完全满足客户的需求了。<br />我感觉,权限问题说白了还是数据库的设计问题。(各位大侠少拍砖啊)</div>
<p><br /><br />是不是你们的应用系统没有太多的细粒度权限需求啊?<br />如果只是CRUD的控制,权限实现起来确实不难。<br />同时我们也看到,大一点儿的系统,比如ERP,CRM,OA,里面都有很多复杂权限需求,我随便举几个例子:<br /><br />1) 入职不满3个月的销售人员不允许修改客户资料<br />2) 初级合同审核员只能审核10000元以下合同<br />3) 10万元以上的订单货物只能由1级供货商提供<br />4) 仓库管理员只能在规定的时间段收发货物<br /><br />这些需求引入了较复杂的权限判断逻辑,通常要开发人员针对每一项定制编码实现。</p>
<p>如果权限系统的框架不好,很容易将业务和权限耦合在一起,不便于以后的维护。</p>
<p> </p>
34 楼 ranyut 2009-04-09  
对权限的控制 我还是一团浆糊。。。。。。。。。
33 楼 LinuxForShare 2009-04-09  
我们单位的权限划分我研究过,用以下来做的:
1.功能划分——模块
2.菜单划分
3.数据划分——CRUD
4.部门划分
5.角色划分
数据库里主要涉及了大概8张表来做权限的划分吧
感觉很普通,但是已经完全满足客户的需求了。
我感觉,权限问题说白了还是数据库的设计问题。(各位大侠少拍砖啊)
32 楼 metadmin 2009-04-08  
InnocentBoy 写道
有没有人对数据的权限有研究的?不仅是功能权限。

进入权限管理圈子看看:http://accessmanager.group.iteye.com/ , 也欢迎浏览我的BLOG。我是专门研究数据的权限管理的。
31 楼 InnocentBoy 2009-04-08  
有没有人对数据的权限有研究的?不仅是功能权限。
30 楼 metadmin 2009-04-08  
GonnaFlyNow, 看了您的回复。觉得您对权限管理的认识,和我有很多重叠的地方。加我gtalk吧:wangjbao@gmail.com
期待和您的交流。
29 楼 GonnaFlyNow 2009-04-08  
<div class="quote_title">LucasLee 写道</div>
<div class="quote_div">
<div class="quote_title">引用</div>
<div class="quote_div"><br />1.Police - 入职不满3个月的销售人员不允许修改客户资料。这里“入职3个月”就是对Subject销售人员的进一步限制<br /><br />2.Police - 初级合同审核员只能审核10000元以下合同。这里“10000元以下”就是对Resource合同的进一步限制 </div>
<br />我觉得这个似乎挺适合用规则引擎来处理,这东西跟打折促销、老客户折扣这类规则听类似的。<br />不过还没研究过。</div>
<p><br /><br />趁这几天活不多,研究了一下 Oracle ,IBM 以及 Metadmin,发现他们对细粒度权限的支持就是通过定义规则来实现的。<br />比如要实现“入职不满3个月的销售人员不允许修改客户资料”,步骤是:<br /><br /><strong>1.定义规则 </strong></p>
<p><br /><strong>rule1</strong>:员工<strong>.</strong>入职时间 &gt; 3个月<br /><strong></strong></p>
<p> </p>
<p><strong>rule2</strong>:</p>
<p><br />if(rule1==true){<br />   允许修改客户资料<br />}else{<br />   不允许<br />}.<br /><br /><strong>2.在运行时刻,规则引擎会对rule1和rule2进行评估,最终返回评估结果(允许或拒绝)</strong></p>
<p> </p>
<p> </p>
<p>在规则的表示上,三家使用了不同的方式</p>
<p> </p>
<p>IBM 用 XSL 语法来描述</p>
<p>Oracle 用 XACML 来描述</p>
<p>Metadmin 通过图形界面配置产生</p>
<p> </p>
<p> </p>
28 楼 ljnmagic 2009-04-08  
yangyi 写道
1,2不说了
3 实际上还是角色,概念混淆
4-7 java的话spring security就可以实现



实质上权限管理,我的认为是:"角色分配"
27 楼 LucasLee 2009-04-08  
Frederick 写道
细粒度权限控制如何从业务中抽象出来,这是个问题,我正在为这个头疼。个人感觉完全抽象出来根本没有可能性。

我也没有做过将细粒度权限抽象出来的系统。
我做的就是将CRUD等业务权限和数据范围抽象出来。

你不妨说说哪些细粒度权限难以抽象出来?
我觉得这方面还挺有意思,我看还是有可能抽象出来的。

如上面提到的
引用

1.Police - 入职不满3个月的销售人员不允许修改客户资料。这里“入职3个月”就是对Subject销售人员的进一步限制

2.Police - 初级合同审核员只能审核10000元以下合同。这里“10000元以下”就是对Resource合同的进一步限制

我觉得这个似乎挺适合用规则引擎来处理,这东西跟打折促销、老客户折扣这类规则听类似的。
不过还没研究过。
26 楼 benbenming 2009-04-08  
GonnaFlyNow 写道
snowfox2008 写道
其实不用搞这么复杂,说白了,权限是什么?那么先要搞清楚什么叫权限主体(Principal),什么叫资源主体(Subject),什么叫动作(Action)?权限就是哪些权限主体对哪些资源主体可以执行哪些动作。这里的权限主体,不一定非得是什么人、岗位、组等组织机构实体,它可以是任何东西,例如服务器A,是否可以在读写磁盘柜上的文件,服务器A就是权限主体。


这里小弟给出XACML标准中针对权限相关概念的说明,供大家参考:

1.Subject - 主体。就是权限中执行操作Action的实体,可以是登录用户,进程或其他东西

2.Resource - 资源。Subject要访问的数据,服务或系统组件,在应用系统中,一般是业务数,比如员工,订单等

3.Action - Subject对Resource的具体操作,比如增加,删除,修改,查看,审核,预订等

4.Police - 授权策略。即Subject-Action-Resource的组合。 定义什么样的主体能对什么样的资源执行什么操作。比如:销售人员(Subject)只能查看(Action)自己的客户信息(Resource)。

权限从概念上看很确实不复杂,其核心就是对授权策略Police的定义,不过在实现具体权限需求时,特别是细粒度权限,往往要求Subject和Resource满足特定的条件,这时权限逻辑就会变得复杂了。比如:

1.Police - 入职不满3个月的销售人员不允许修改客户资料。这里“入职3个月”就是对Subject销售人员的进一步限制

2.Police - 初级合同审核员只能审核10000元以下合同。这里“10000元以下”就是对Resource合同的进一步限制


我经历的很多项目在讨论这部分时主题是权限管理,但常常关心用户管理,同时也不会忘记角色管理,因为角色通常被用来做为权限的载体、集合,这就是楼上各位提到的“权限--角色--用户”。
这种方式没有领会权限管理的核心,但确是常用的。
我觉得如GonnaFlyNow所说,Police才是我们解决权限问题的关键,单单说权限本身没有啥,关键是我们如何定义Police,如何定义Police简捷、方便。
25 楼 GonnaFlyNow 2009-04-06  
我有个项目使用spring security实现细粒度权限。spring倒是把权限管理从业务中提取出来了,不过所有的权限逻辑还是需要自己写voter来实现,感觉不是很爽。另外spring security学习梯度很大,手下几个程序员跟进很慢。

这几天看了楼主的权限管理圈子里的文章和 Metadmin 演示, 觉得这个产品挺不错的。不但实现了权限和业务的解耦合,同时支持用配置的方式实现权限判断逻辑,不用编码。

Oracle和IBM的权限管理产品还没有研究过,不知道好不好用,等研究好了再跟大家分享。

24 楼 Frederick 2009-04-05  
细粒度权限控制如何从业务中抽象出来,这是个问题,我正在为这个头疼。个人感觉完全抽象出来根本没有可能性。
23 楼 grandboy 2009-04-04  
metadmin 写道
stevensinclair 写道
最近在考虑一个单点登录问题 用户A单点登录到I系统,但现在问题是A在I系统是没信息的,如何解决此问题 而我解决此问题的目的是达到对数据库中的记录做筛选 剔除非该用户的记录。
现在小组讨论的结果为随便哪个用户,只要是单点登录到I系统,则全部显示I系统中的数据记录,此方案明显是有局限,即在I系统角色中只有用户A一人存在情况下成立。

打算研究spring security !


这个问题,可以分为2个部分:1,用户身份集中管理和认证;2,用户权限信息管理。

用户身份信息,我建议集中管理,这样免去信息冗余,而且只要在一个地方维护,而不是多个系统同步维护;
用户权限信息,集中管理和分散在各个系统管理,都可以。集中管理当然很好,只是担心工作量大,给各个系统权限判断造出麻烦。

Oracle Entitlement Server和IBM Tivoli Access Manager是将所有系统的权限集中起来管理。可以参考一下他们的设计思路。


这种思路很好, 我也认为应该分为两部分,但是是用户身份管理和用户权限管理。至于是不是集中管理,很多时候是由用业务系统决定的,如:证券公司和银行的系统就一般就无法进行集中管理身份,而是通过身份映射来实现。权限完全可以由业务系统自己控制。我对CA的SiteMinder比较熟悉, IBM的TAM产品应该基本思路是一样的,权限是不是集中,就看PS怎么管理了。 多个系统的帐号同步的问题确实很复杂的,这个涉及到IdM的问题。呵呵,怎么越说越多了。就到这里吧。希望多交流。
22 楼 GonnaFlyNow 2009-04-04  
snowfox2008 写道
其实不用搞这么复杂,说白了,权限是什么?那么先要搞清楚什么叫权限主体(Principal),什么叫资源主体(Subject),什么叫动作(Action)?权限就是哪些权限主体对哪些资源主体可以执行哪些动作。这里的权限主体,不一定非得是什么人、岗位、组等组织机构实体,它可以是任何东西,例如服务器A,是否可以在读写磁盘柜上的文件,服务器A就是权限主体。


这里小弟给出XACML标准中针对权限相关概念的说明,供大家参考:

1.Subject - 主体。就是权限中执行操作Action的实体,可以是登录用户,进程或其他东西

2.Resource - 资源。Subject要访问的数据,服务或系统组件,在应用系统中,一般是业务数,比如员工,订单等

3.Action - Subject对Resource的具体操作,比如增加,删除,修改,查看,审核,预订等

4.Police - 授权策略。即Subject-Action-Resource的组合。 定义什么样的主体能对什么样的资源执行什么操作。比如:销售人员(Subject)只能查看(Action)自己的客户信息(Resource)。

权限从概念上看很确实不复杂,其核心就是对授权策略Police的定义,不过在实现具体权限需求时,特别是细粒度权限,往往要求Subject和Resource满足特定的条件,这时权限逻辑就会变得复杂了。比如:

1.Police - 入职不满3个月的销售人员不允许修改客户资料。这里“入职3个月”就是对Subject销售人员的进一步限制

2.Police - 初级合同审核员只能审核10000元以下合同。这里“10000元以下”就是对Resource合同的进一步限制
21 楼 snowfox2008 2009-04-04  
其实不用搞这么复杂,说白了,权限是什么?那么先要搞清楚什么叫权限主体(Principal),什么叫资源主体(Subject),什么叫动作(Action)?权限就是哪些权限主体对哪些资源主体可以执行哪些动作。这里的权限主体,不一定非得是什么人、岗位、组等组织机构实体,它可以是任何东西,例如服务器A,是否可以在读写磁盘柜上的文件,服务器A就是权限主体。
20 楼 metadmin 2009-04-03  
stevensinclair 写道
最近在考虑一个单点登录问题 用户A单点登录到I系统,但现在问题是A在I系统是没信息的,如何解决此问题 而我解决此问题的目的是达到对数据库中的记录做筛选 剔除非该用户的记录。
现在小组讨论的结果为随便哪个用户,只要是单点登录到I系统,则全部显示I系统中的数据记录,此方案明显是有局限,即在I系统角色中只有用户A一人存在情况下成立。

打算研究spring security !


这个问题,可以分为2个部分:1,用户身份集中管理和认证;2,用户权限信息管理。

用户身份信息,我建议集中管理,这样免去信息冗余,而且只要在一个地方维护,而不是多个系统同步维护;
用户权限信息,集中管理和分散在各个系统管理,都可以。集中管理当然很好,只是担心工作量大,给各个系统权限判断造出麻烦。

Oracle Entitlement Server和IBM Tivoli Access Manager是将所有系统的权限集中起来管理。可以参考一下他们的设计思路。
19 楼 stevensinclair 2009-04-03  
metadmin 写道
感谢yangyi的肯定!

在易用性上,不是很好。这不是Spring Security才有这种情况,世界上充斥着很多复杂的东东。很多项目也是这样。当年,我在学徒的时候(哈哈,刚毕业的时候,有师傅带着做。呵呵,幸福)师傅给我灌输了很多知识。那个时候就是羡慕、崇拜。

后来,自己做了高级程序员。经理让我设计一个日志系统。天哪,我苦思冥想了1个多星期。搞了一个复杂的东东。经理没有看懂。将我的设计废了。然后把Log4j的链接给我。

天哪,那个时候,有种“被青春撞了一下腰”的感觉。这么简单,配置好了,就随便debug,info。想哪里用就哪里用。唯一需要注意的地方就是(打这种拼接日志,最好先做个判断):
if( logger.isDebugEnabled() ) {
  logger.debug( "some text" + obj.getSomeAttribute() + .. + ..;
}


我比你好 哈哈 在前任的基础上把log4j封装了一把 满足华为的日子基线规范就ok了
现在用的蛮爽的

最近在考虑一个单点登录问题 用户A单点登录到I系统,但现在问题是A在I系统是没信息的,如何解决此问题 而我解决此问题的目的是达到对数据库中的记录做筛选 剔除非该用户的记录。
现在小组讨论的结果为随便哪个用户,只要是单点登录到I系统,则全部显示I系统中的数据记录,此方案明显是有局限,即在I系统角色中只有用户A一人存在情况下成立。

打算研究spring security !


18 楼 metadmin 2009-04-03  
dfedora 写道
metaadmin是不是美特软件.见过metacrm.安全很差.一个GUEST帐号就能得到整个系统的控制权.

不是美特软件
17 楼 dfedora 2009-04-03  
metaadmin是不是美特软件.见过metacrm.安全很差.一个GUEST帐号就能得到整个系统的控制权.
16 楼 whaosoft 2009-04-03  
要是不用acegi 我还真不知道怎么写复杂的权限呢

相关推荐

    时间管理的误区.doc

    首先,管理者需要认识到时间管理的第一大误区是缺乏计划。这可能导致无目标的工作,浪费大量时间在不紧迫或不重要的事务上。例如,查尔斯·史瓦与李爱菲的故事强调了明确工作优先级的重要性。制定并按照重要性顺序...

    企业在内控体系建设认识上的几点误区.docx

    企业在构建内控体系时,常常会遇到一些认知误区,这些误区可能会阻碍内控体系的有效实施。以下是关于这些误区的详细解析: 1. 目标误区:企业常常误以为内控体系的目标只是获得第三方的“标准意见”审计报告,而...

    认识无线技术WiMAX以及常见误区

    对于WiMAX的一些常见误解,首先,传输范围并不总是大于Wi-Fi。WiMAX在授权频段运行时确实可以达到更远的距离,这得益于更高的功率和更大的带宽。然而,这需要相应的许可证,并且在非授权频段,WiMAX的传输优势就会...

    02十项管理技能训练:时间管理.pptx

    工作紧急性分析强调区分真正紧急和重要的任务,避免被琐事牵扯,同时考虑授权管理,让下属处理一些可以由他们完成的工作。工作重要性分析则强调将更多时间投入到核心任务中,减少不重要工作的干扰。 授权分析是提高...

    Windows系统时常见的操作误区.docx

    #### 四、对杀毒软件的过分依赖及操作系统安全性认识误区 在Windows系统中,用户常常询问有关杀毒软件的选择问题,这反映出对系统安全性的担忧。然而,这种担忧很大程度上源自对操作系统安全性的误解。 Windows系统...

    论工程监理的认识误区与风险防范 (2002年)

    业主对监理工作的一些误区主要表现在对监理委托性的认识不足,以及过多干预监理工作。业主往往认为既然委托了监理,监理就应该对工程中的质量问题负责,甚至以此作为评价监理成效的标准。但实际上,业主应该通过监理...

    谈关于经销商的轻松管理.pptx

    第四个误区是对人才重要性的认识不足。卡内基的名言表明,人才是企业最宝贵的资源。失去人才,即使拥有最好的设施,也无法保证业务的持续成功。因此,经销商应当重视人力资源的培养和保留。 第五个误区是缺乏挑选...

    工程项目管理信息化解决方案PPT课件.pptx

    这些风险因素多种多样,包括业务体系变革、组织结构调整、管理模式更新、业务需求不明晰、对信息化认识存在误区、急于求成、过度追求全面覆盖而忽视实效、软件供应商选择不当以及缺乏具备业务和技术背景的决策层等。...

    人力资源管理培训-员工关系管理PPT下载.rar

    随着管理理论的发展,人们对人性本质认识的不断进步,以及国家劳动法律体系的完善,企业开始越来越注重加强内部沟通,改善员工关系。 员工关系是组织中由于雇佣行为而产生的关系,是人力资源管理的一个特定领域。...

    学习型班组管理的重心

    中层管理者需要明确自身角色定位,避免角色误区,如过度干预或过于放任。基本任务包括制定计划、执行控制、分析问题和解决问题等。同时,管理者应具备正确的管理意识和态度,以及必要的管理技能。 对于组织的基本...

    专题资料(2021-2022年)初做主管常见管理问题解决之道doc7.doc

    综上所述,新任主管在面对管理过程中的种种挑战时,需要不断深化对管理的认识,平衡新老员工的融合,构建科学合理的制度环境,并合理授权以提高团队效率。这些策略的执行需要耐心和时间,但它们是确保团队高效运转、...

    “从精兵到强将”中高层管理技能提升培训PPT课件.ppt

    综上所述,《从精兵到强将》中高层管理技能提升培训PPT课件通过系统性的指导和实用的建议,帮助新晋的管理者们认识自我角色,避免常见的管理误区,提升领导力,从而促进整个组织的高效运行和持续成功。通过这样的...

    供电公司管理培训借鉴.pdf

    8. 授权管理,强调授权的重要性、误区、原则和方法。 9. 管理沟通与关系协调,学习有效的沟通技巧,以促进团队协作和工作成果。 通过这些内容,供电公司管理培训旨在帮助管理者提升个人素养,优化团队协作,最终...

    中基层干部核心管理技能提升训练.pptx

    然而,日常管理中容易出现误区,如过于依赖个人技术而不善管理、过分掌控导致无法有效授权、缺乏目标控制和计划制定等。这些误区可能导致工作效率低下,团队协作受阻。因此,中基层干部需要通过培训和学习提升管理...

    等保2.0之身份安全管理.pdf

    身份安全的认识误区是指在实施身份安全管理过程中,容易产生的一些误解和错误观念。例如,一些企业可能过分依赖传统的网络边界防护,而忽视了内部威胁和横向移动攻击的风险;或者错误地认为某些内部账户或设备天然...

    高效的时间管理培训课程.pptx

    同时,也指出了一些时间管理的障碍,比如自我感觉时间安排良好、认为计划无法适应变化、认为时间难以掌控等心态误区。这些障碍阻碍了我们对时间的高效利用。 针对中层管理者,他们的时间管理特点更为复杂,包括多...

    管理者的角色定位及认知PPT.pptx

    管理者可能会陷入“土皇帝”、“民意代表”、“自然人”和“传声筒”等角色误区。例如,“土皇帝”可能会过分强调自己的职位和待遇,而忽视团队的智慧和力量;“民意代表”则可能过于站在下属的立场上,忽视对上层...

    项目管理培训精彩回顾.ppt

    同时,管理者还应合理授权,避免过度干预,从而激发团队成员的主动性和创造力。 通过反思“三边行动”和“六拍运动”,我们认识到了沟通、规划和持续学习的重要性。为改善这些问题,企业应建立一套完善的决策流程,...

    食品品质管理.pptx

    消费者对食品的品质有了更高的认识和要求,不再仅仅关注价格,而是更加注重产品的内在质量和安全性。因此,食品品质管理成为了企业成功的关键因素之一。企业从过去的生产导向转向了以市场和消费者需求为导向,涵盖...

Global site tag (gtag.js) - Google Analytics