zhouyongguo

欢迎
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

权限控制和法官判罪

Posted on 2010-07-06 22:22  zhouyongguo  阅读(714)  评论(2编辑  收藏  举报

 

   业务程序的权限控制是一个复杂的问题,从应用层面来说至少要解决三个方面的问题。

   1. 我是谁,确定用户的标识,解决用户的ID的标记、访问和存储问题。

   2。我可以做什么,即用户的功能权限问题。

   3.我可以对什么做什么,也就是数据权限问题。例如项目经理可以查看那些项目,可不可以删除,项目经理的上级可不可以对当前项目操作,部门助理可不可以看本部门的项目等等问题。

第一个和第二个问题相对比较好解决,第三个问题比较麻烦。

数据权限的问题实质是数据可以按照数据的ID、属性、业务过程进行授权。我们这里举一个例子。

 

文档授权:

       1.文档创建人可以设置是否可以删除、查看等等权限

       2.文档创建人所属部门领导可否删除、查看等等权限

       3.如果文档和项目相关,项目经理和成员可否删除、查看等等权限

       4.文档发布在A类型下,A类型文档的管理员可否删除、查看等等权限

我们发现文档的权限实际和企业的业务过程和文档本身的属性相关,现在有两个解决方案。

方案A:

        1.定义权限业务规则(即定义文档创建人可以设置是否可以删除)。

        2.访问数据的时候实时换算出当前数据的访问控制作用于数据。

方案B:

       1.定义权限业务规则(即定义文档创建人可以设置是否可以删除)。 

       2.当数据产生的时候,根据数据属性和权限业务规则对数据进行授权,授权直接作用在数据资源本身,授权后和业务再无关系。

       3.访问数据的时候直接对控制点验证。

 


        

 

 

法官判案:

         1.定义刑法 (相当于确定权限的业务规则)。
         2.当犯罪案件发生时候,法官根据法律条文和犯罪事实(抢劫、伤人、贩毒等等)不同量刑。(相当于根据规则发放资源权限密钥)。

         3.罪犯服刑,此时只关心服刑多少年,不再关注犯罪事实。

 

方案A,和权限相关的数据列表统计非常困难 ,负责的业务控制需要换算,程序不稳定。

方案B,讲权限规则分离出去,数据的权限控制依赖一致的数据控制密钥。