`
wgj830823
  • 浏览: 51288 次
  • 性别: 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的模式切换)。更复杂一些, 在不同的时刻, 我们需要根据其他附加信息来作出是否允许操作的判断, 即此时我们权限设置的不仅仅是一些静态的描述信息, 而是一个完整的控制函数, 这就是所谓的工作流权限控制,一种动态权限控制.

分享到:
评论

相关推荐

    达梦数据库导入导出+DM8-dexp和dimp使用手册+DM 数据库的备份还原包括两种类型+物理备份还原+逻辑备份还原

    - `GRANTS`:导入权限。 - `PROCEDURES`:导入存储过程。 - `TRIGGERS`:导入触发器。 - `SEQUENCES`:导入序列。 - `TYPES`:导入类型。 - `VIEWS`:导入视图。 - `MATERIALIZED VIEWS`:导入物化视图。 - ...

    基于vue-element-admin开发的cms-rbac权限管理系统后台前端源码

    1. Vue.js 的基本概念与核心特性:数据绑定、组件化、指令系统、生命周期钩子等。 2. Element-UI组件库的使用:如何导入组件、自定义样式、响应式布局等。 3. Vue CLI的使用:创建项目、配置脚手架、热重载、打包...

    jsp做的权限管理系统

    以上就是关于"jsp做的权限管理系统"的基本知识框架,具体实现细节可能涉及到更多技术,如Spring Security、Shiro等权限管理框架,以及数据库设计、安全性策略等。这个完整的源代码可以帮助开发者深入理解JSP在实际...

    Oracle导入导出工具

    - **权限管理**:执行EXPDP和IMPDP操作需要相应的系统权限,如`EXP_FULL_DATABASE`或`IMPORT_FULL_DATABASE`角色。 - **存储空间**:确保有足够的磁盘空间来保存导出文件,以及在导入时有足够的空间容纳新数据。 - *...

    权限管理系统

    【权限管理系统】是一种用于控制不同用户访问系统资源的机制,它是软件开发中不可或缺的一部分,尤其在企业级应用中。在本项目中,该系统是基于Java框架JFinal构建的,JFinal是一个轻量级的MVC框架,以其简单、高效...

    大型数据库系统概论-实验1-Oracle9i安装配置与基本操作-463.ppt

    【大型数据库系统概论】大型数据库系统是企业级数据存储和管理的核心,它们能够处理海量的数据,支持高并发访问,并确保数据的安全性和稳定性。Oracle9i是Oracle公司推出的一个重要版本,它在数据库管理领域具有广泛...

    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 输入...

    jsp编写的权限管理系统

    总的来说,【jsp编写的权限管理系统】提供了一套完整的解决方案,通过JSP技术实现了用户友好的界面,结合后台的数据库和业务逻辑,确保了Web应用的安全性和可控性,是企业级应用中常见的设计模式。

    基于GUI+MYSQL+JAVA电影院售票管理系统项目需求文档+源码+导入项目教程

    1. **系统需求分析** - 用户管理:系统应支持管理员和普通用户的登录与权限区分,管理员可进行后台管理,而普通用户则进行购票操作。 - 影院信息管理:包括影院的地理位置、放映厅数量、座位布局等信息。 - 影片...

    oracle导入导出的资源文件夹

    Oracle数据库的导入和导出是数据管理中的重要环节,它涉及到数据迁移、备份与恢复、系统复制等多个场景。Oracle提供了一套完整的工具来实现这些功能,主要包括`expdp`(Export Data Pump)和`impdp`(Import Data ...

    oracle经典导入导出语句

    - **特定表导入**:`imp system/manager@TEST file=d:\daochu.dmp tables=(table1)`,仅导入 daochu.dmp 文件中的表 table1。 3. **权限与连接**: - 导入导出操作通常需要具有足够的权限,例如 DBA 权限或对象的...

    SSH2权限管理系统源码,数据库

    系统可能包括用户管理、角色管理、权限分配等功能,这些都是权限管理系统的基本组成部分。 二次开发时,可以根据实际需求扩展功能,比如增加角色权限的细粒度控制、引入角色层次结构、实现动态权限分配等。同时,...

    StoneOS命令行用户手册-虚拟系统-5.5R8-1

    ### StoneOS命令行用户手册-虚拟系统-5.5R8-1 #### 手册约定与内容概览 本手册旨在提供StoneOS系统中虚拟系统(VSYS)特性的全面指南,帮助管理员掌握如何利用命令行界面(CLI)进行有效的系统管理和配置。虚拟...

    EXP-IMP(Oracle数据导入导出)

    - **基本语法格式**:`EXP keyword=value or keyword=(value1, value2, ..., valueN)` - **具体参数解释**: - `FULL`:用于指定是否导出整个数据库,`N` 表示不导出整个数据库。 - `BUFFER`:指定缓冲区大小,...

    学生考勤管理系统--论文.rar

    4. 系统设置:对系统的基本参数进行配置,如班级信息、考勤规则等。 四、技术栈解析 1. SpringBoot:作为核心框架,负责自动配置、依赖注入,简化了项目构建和部署流程。 2. Thymeleaf或Freemarker:作为模板引擎,...

    华天动力协同OA系统-管理员指导手册.pdf

    ### 华天动力协同OA系统-管理员指导手册 ...该手册详细介绍了系统管理员如何进行系统配置、用户管理、权限分配等工作,旨在帮助管理员更好地理解和掌握系统的使用方法,从而提高工作效率和管理水平。

    在Oracle中导入导出数据

    在Oracle数据库管理中,导入和导出数据是常见的操作,用于数据迁移、备份恢复或系统复制等场景。Oracle提供了一套强大的工具来实现这一目的,主要包括`expdp`(Export Data Pump)和`impdp`(Import Data Pump)。这...

    oracle导入导出详解

    1. 权限问题:确保用户有足够的权限执行导入导出操作。 2. 空间不足:检查目标数据库的磁盘空间,必要时扩大表空间。 3. 错误日志:通过日志文件分析错误原因,如网络、文件权限等。 4. 数据一致性:导入后进行数据...

Global site tag (gtag.js) - Google Analytics