`
wgj830823
  • 浏览: 49649 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

[导入]权限系统(1)--基本模式 (转)

阅读更多

[导入]权限系统(1)--基本模式 (转)

在系统中发生的事情,抽象的说都是某个主体(subject)在某个资源(resource)上执行了某个操作(operation)。
          subject --[operation]--> resource
所谓权限管理,就是在这条信息传递路径中加上一些限制性控制。
    主体试图去做的 limited by 系统允许主体去做的 = 主体实际做的。
可以看到,权限控制基本对应于filter模式。subject试图去做的事情应该由业务逻辑决定,因而应该编码在业务系统中。

    先考虑最粗粒度的控制策略,控制点加在subject处,即无论从事何种操作,针对何种资源,我们首先需要确认subject是受控的。只有通过认证的用户才能使用系统功能,这就是authentication。boolean isAllowed subject)
   稍微复杂一些,控制可以施加在subject和operation的边界处(此时并不知道具体进行何种操作),称为模块访问控制,即只有某些用户才能访问特定模块。isAllowed(subject, operation set)
   第三级控制直接施加在operation上,即操作访问控制。operation知道resource和subject(但它尚没有关于resource 的细节知识),我们能够采取的权限机制是bool isAllowed(subject, operation, resource), 返回true允许操作,返回false则不允许操作。

    最简单的情况下,subject与resource之间的访问控制关系是静态的,可以直接写成一个权限控制矩阵

for operationA:
            resourceA   resourceB
subjectA      1           0
subjectB      0           1


isAllowed(subjectA, resourceA)恒等于true

如果多个operation的权限控制都可以通过这种方式来表示,则多个权限控制矩阵可以叠加在一起

for operationA, operationB:
            resourceA   resourceB
subjectA      10           01
subjectB      01           11

当subject和resource的种类很多时,权限控制矩阵急剧膨胀,它的条目数是N*M。很显然,我们需要进行矩阵分解。这也是最基本的控制手段之一: 在系统中增加一个瓶颈,或者说寻找到隐含的结构。
      subject_resource = subject_role * role_resource
这样系统权限配置条目的数量为 N*R + R*M, 如果R的数目远小于subject和resource,则实现简化。这称为RBAC(role based access control),它的一个额外好处是权限系统的部分描述可以独立于subject存在,即在系统中没有任何用户的时候,通过角色仍然可以表达部分权限信息。可以说角色是subject在权限系统中的代理(分解)。

     有时候引入一个瓶颈还不过瘾,有人引入组的概念,与role串联,
subject_resource = subject_group_role * role_resource
或着group与role并联,
subject_resource = subject_group * group_resource

     与role稍有不同,一般情况下group的业务含义更加明显,可能对应于组织结构等。将组织机构明确引入权限体系,有的时候比较方便,但对于权限系统自身的稳定性而言,未见得有什么太大的好处。并联模式有些多余,串联模式又过于复杂,细节调整困难,特别是多条控制路径造成的冲突情况。一般情况下,我不提倡将group引入权限控制中。

    比操作控制更加深入的控制就是数据控制了,此时需要对于resource的比较全面的知识。虽然表面上,仍然是
boolean isAllowed(subject, operation, resource),但控制函数需要知道resource的细节。例如行级控制(row-level)或者列级控制(column-level)的实现。因为我们一般情况下不可能将每一个条目都建模为独立的resource,而只能是存在一个整体描述,例如所有密级为绝密的文档。在witrix平台中,数据控制主要通过数据源的filter来实现,因为查询条件(数据的定位条件)已经被对象化为Query类,所以我们可以在合适的地方自由的追加权限控制条件。

     以上的讨论中,权限控制都是根据某些静态描述信息来进行的,但现实世界是多变的。最简单的,当subject从事不同业务时,对应于同一组资源,也可能对应的权限控制并不同(在witrix平台中,对应于IDataSource的模式切换)。更复杂一些, 在不同的时刻, 我们需要根据其他附加信息来作出是否允许操作的判断, 即此时我们权限设置的不仅仅是一些静态的描述信息, 而是一个完整的控制函数, 这就是所谓的工作流权限控制,一种动态权限控制.

分享到:
评论

相关推荐

    Access2003中文版应用基础教程part1

    3-1-1 导入其他数据库的表 3-1-2 导出表到其他数据库 3-1-3 导入Excel的工作表 3-1-4 导入文本文件 3-1-5 导入XML文件 3-2 查找与替换数据 3-2-1 查找数据 3-2-2 替换数据 3-3 聪明的字段设定 3-3-1 输入...

    Access2003中文版应用基础教程part2

    3-1-1 导入其他数据库的表 3-1-2 导出表到其他数据库 3-1-3 导入Excel的工作表 3-1-4 导入文本文件 3-1-5 导入XML文件 3-2 查找与替换数据 3-2-1 查找数据 3-2-2 替换数据 3-3 聪明的字段设定 3-3-1 输入...

    ASP和SQL网站数据库程序设计(DOC)

    3-1-1 数据库系统的类型 40 3-1-2 数据库系统的结构 40 3-1-3 数据库系统的主要组件 42 3-1-4 数据集中化管理 44 3-1-5 数据独立 46 3-2 数据库管理系统(DBMS) 46 3-3 关系型数据库 48 3-3-1 数据的...

    邦仁桶装水软件(送水管理系统)

    1、系统增加对支装水、饮水机和纸杯等勿需回瓶的产品销售支持; 2、建订水记录时,增加了短讯自动通知送水工上门配送的功能; 3、更换了短讯发送网关,解决以往版本发短讯有延时的问题; 4、支持多用户联网群发...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    1 Oracle 结构组件 目标 1-2 基本结构概述 1-3 Oracle 服务器 1-4 Oracle 实例 1-5 建立连接和创建会话 1-6 Oracle 数据库 1-7 物理结构 1-8 内存结构 1-9 系统全局区(SGA) 1-10 共享池 1-12 库缓存 1-13 数据字典...

    Windows Server 2008系统管理视频教程csdn.txt

    5-1将FAT分区转成NTFS分区09:08 5-2取消继承的权限07:25 5-3验证NTFS文件夹权限09:38 5-4NTFS权限的特点04:40 5-5只允许写入不允许读取的文件夹03:50 5-6创建交作业的文件夹09:11 5-7只允许用户在自己的文件夹中创建...

    ASP与SQL网页数据库程序设计

    数据库基本概念……………………..39 3-1 数据库系统 40 3-1-1 数据库系统的类型 40 3-1-2 数据库系统的结构 40 3-1-3 数据库系统的主要组件 42 3-1-4 数据集中化管理 44 3-1-5 数据独立 46...

    SnSitesV1.0.1共享版本

    II1-1-5-1,权限页添加,删除,编辑,权限开关状态设定等. II1-1-5-2,权集添加,编辑,删除等.立体权限防护 II1-1-6,终极管理  本管理仅为方便管理人员对平台下所属域组下各大栏目的全局管理 II1-1-7,初始配置  可...

    邦仁电话订餐软件(快餐管理系统)

    1、增加订餐记录保存后,短讯内容会自动复制到系统剪贴板,用户可直接粘贴到飞信软件或QQ软件里,将短讯免费发送到配送员的手机上; ---------------------------------------------------------------------------...

    Access 2000数据库系统设计(PDF)---025

    Access 2000数据库系统设计(PDF)---025目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    版次:1-1 内容简介  《ocp/oca认证考试指南全册:oracle database 11g(1z0—051,120-052,120-053)》是为oca和ocp考试准备的独家权威指南。本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化...

    cmd操作命令和linux命令大全收集

    tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送...

    Access 2000数据库系统设计(PDF)---002

    Access 2000数据库系统设计(PDF)---002目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

    Access 2000数据库系统设计(PDF)---018

    Access 2000数据库系统设计(PDF)---018目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

    Access 2000数据库系统设计(PDF)---003

    Access 2000数据库系统设计(PDF)---002目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

    Access 2000数据库系统设计(PDF)---011

    Access 2000数据库系统设计(PDF)---011目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

    Access 2000数据库系统设计(PDF)---020

    Access 2000数据库系统设计(PDF)---020目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

Global site tag (gtag.js) - Google Analytics