在系统中发生的事情,抽象的说都是某个主体(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的模式切换)。更复杂一些, 在不同的时刻,
我们需要根据其他附加信息来作出是否允许操作的判断, 即此时我们权限设置的不仅仅是一些静态的描述信息, 而是一个完整的控制函数,
这就是所谓的工作流权限控制,一种动态权限控制.
分享到:
相关推荐
- `GRANTS`:导入权限。 - `PROCEDURES`:导入存储过程。 - `TRIGGERS`:导入触发器。 - `SEQUENCES`:导入序列。 - `TYPES`:导入类型。 - `VIEWS`:导入视图。 - `MATERIALIZED VIEWS`:导入物化视图。 - ...
1. Vue.js 的基本概念与核心特性:数据绑定、组件化、指令系统、生命周期钩子等。 2. Element-UI组件库的使用:如何导入组件、自定义样式、响应式布局等。 3. Vue CLI的使用:创建项目、配置脚手架、热重载、打包...
以上就是关于"jsp做的权限管理系统"的基本知识框架,具体实现细节可能涉及到更多技术,如Spring Security、Shiro等权限管理框架,以及数据库设计、安全性策略等。这个完整的源代码可以帮助开发者深入理解JSP在实际...
【权限管理系统】是一种用于控制不同用户访问系统资源的机制,它是软件开发中不可或缺的一部分,尤其在企业级应用中。在本项目中,该系统是基于Java框架JFinal构建的,JFinal是一个轻量级的MVC框架,以其简单、高效...
1. **预检查**:确保硬件和操作系统满足Oracle9i的最低需求,如内存、硬盘空间和处理器速度。 2. **安装介质准备**:获取Oracle9i的安装光盘或ISO镜像,将其加载到服务器。 3. **设置响应文件**:根据实际需求定制...
- **权限管理**:执行EXPDP和IMPDP操作需要相应的系统权限,如`EXP_FULL_DATABASE`或`IMPORT_FULL_DATABASE`角色。 - **存储空间**:确保有足够的磁盘空间来保存导出文件,以及在导入时有足够的空间容纳新数据。 - *...
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 输入...
- 导入导出过程中要关注权限问题,确保用户有访问目录对象和操作数据的权限。 - 大规模导入导出可能影响数据库性能,建议在业务低峰期进行。 - 考虑数据安全,避免敏感信息泄露。 以上就是关于Oracle数据库导入...
总的来说,【jsp编写的权限管理系统】提供了一套完整的解决方案,通过JSP技术实现了用户友好的界面,结合后台的数据库和业务逻辑,确保了Web应用的安全性和可控性,是企业级应用中常见的设计模式。
1. **系统需求分析** - 用户管理:系统应支持管理员和普通用户的登录与权限区分,管理员可进行后台管理,而普通用户则进行购票操作。 - 影院信息管理:包括影院的地理位置、放映厅数量、座位布局等信息。 - 影片...
- **特定表导入**:`imp system/manager@TEST file=d:\daochu.dmp tables=(table1)`,仅导入 daochu.dmp 文件中的表 table1。 3. **权限与连接**: - 导入导出操作通常需要具有足够的权限,例如 DBA 权限或对象的...
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 输入...
系统可能包括用户管理、角色管理、权限分配等功能,这些都是权限管理系统的基本组成部分。 二次开发时,可以根据实际需求扩展功能,比如增加角色权限的细粒度控制、引入角色层次结构、实现动态权限分配等。同时,...
### StoneOS命令行用户手册-虚拟系统-5.5R8-1 #### 手册约定与内容概览 本手册旨在提供StoneOS系统中虚拟系统(VSYS)特性的全面指南,帮助管理员掌握如何利用命令行界面(CLI)进行有效的系统管理和配置。虚拟...
### 华天动力协同OA系统-管理员指导手册 ...该手册详细介绍了系统管理员如何进行系统配置、用户管理、权限分配等工作,旨在帮助管理员更好地理解和掌握系统的使用方法,从而提高工作效率和管理水平。
4. 系统设置:对系统的基本参数进行配置,如班级信息、考勤规则等。 四、技术栈解析 1. SpringBoot:作为核心框架,负责自动配置、依赖注入,简化了项目构建和部署流程。 2. Thymeleaf或Freemarker:作为模板引擎,...
- **基本语法格式**:`EXP keyword=value or keyword=(value1, value2, ..., valueN)` - **具体参数解释**: - `FULL`:用于指定是否导出整个数据库,`N` 表示不导出整个数据库。 - `BUFFER`:指定缓冲区大小,...
* 解决方案:从软件的安装目录下的excel导入配置中导出基本信息模板,按照录入信息完成后,复制一份副本,打开软件在辅助功能--导入导出--基本信息导入--选择导入路径为桌面副本--选中创建模板(副本文件清空)--把...
在Oracle数据库管理中,导入和导出数据是常见的操作,用于数据迁移、备份恢复或系统复制等场景。Oracle提供了一套强大的工具来实现这一目的,主要包括`expdp`(Export Data Pump)和`impdp`(Import Data Pump)。这...