最近项目中需要设计一个权限系统,收集了一下资料,权限系统主要有两种技术:ACL(Access Control List)和RBAC(Role-Based Access Control)。前者是将用户直接和权限关联,并通过Group来组织这些用户,windows 系统的用户权限就应该属于这一种(有待确认)。后者通过角色将用户和权限隔离开来,对角色赋予权限,而一个用户就一种角色的一个实例。
ACL的优点是能够直接针对用户进行权限设置,权限设置较为灵活,每个用户都可以完全不同,但是这也增加了管理员设置权限的复杂性。RBAC更便于用户的管理。对于两者的详述和比较在不在此啰嗦,网上有很多相关资料。
下面就说我做的事情。
设计需求:
1. 以项目为单位的权限控制;
2. 项目分为不同的小组,比如仪表组、DCS组等,每个组所使用的系统模块不同;
3. 每个小组下面又有不同岗位,比如仪表选型、样本维护等。不同岗位的人员,对该小组对应的系统模块下的不同功能的使用权限不同。
第2对应RBAC的Group,第3对应RABC的Role,这一部分画出了如下的数据库ER图。
这中结构就是通常介绍RBAC的通用结构,比较容易理解。从ER图中可以看出,权限分配是以角色为单位,这是RBAC的最主要的特点。同时,从很多资料中看到,RBAC一般只做到功能级别的权限控制,而对于更加细粒度的数据控制很难实现,比如细化到行数据,甚至是字段的操作权限控制。
下面的这些需求就是让我纠结了很久。
1. 对于同一岗位(角色)的不同人员(角色实例),能够查询该岗位的所有人员创建的数据,但是只能够修改或删除自己所创建的数据;
2. 对于非自己所创建的数据,只能访问该数据的部分字段。
其实,第1条就是基于行数据的访问控制,第2条就是基于字段的访问控制。为了满足这两项,添加了三张数据表,形成了下面的ER图。
“权限类别”数据表相当于一个枚举变量,包括 项目、组、角色、个人四个值,比如一项“样本维护-删除-样本”(角色-操作-功能)的操作权限的权限类别属于“个人”,那么一行样本数据只能够由该数据的创建者删除;如果数据“角色”,那么该数据可以由所有的样本维护角色的人员来删除。这样,就可以满足第1条需求了。
上述仅为自己做这个权限设计的初始想法,还未验证,也未进行编码,欢迎各位拍砖!
相关推荐
### 基于角色的权限管理数据库设计 #### 概述 本文档主要介绍了一种基于角色的权限管理系统(RBAC)的数据库设计方案,并通过具体的SQL脚本实现了该方案的基本功能。RBAC(Role-Based Access Control)是一种常用的...
首先,文档介绍了信息管理系的概况,强调了其师资力量和科研成就,这为设计数据库提供了背景信息,表明该系统需要支持大量的信息存储和管理,同时也需要考虑用户的专业背景和需求。 接着,文档列出了数据库设计的...
角色权限设计是一种常见的访问控制策略,它将权限与角色关联,而不是直接与用户关联。这样,当一个用户被分配到某个角色时,他自动获得了该角色所包含的所有权限。这种设计简化了权限管理,因为只需修改角色的权限...
综上所述,基于Java-EE的仓库管理系统通过精心设计的数据库和ER图,能够有效地管理和跟踪库存,协调各个角色的工作,确保仓库操作的高效和准确。在实际开发中,开发者将根据ER图转换为具体的数据库模式,进而构建出...
基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理是一种广泛采用的策略,它将权限与角色关联,而不是直接分配给单个用户。这种设计模式简化了权限管理,提高了系统的灵活性和可扩展性。下面...
在本项目中,"软件工程课程设计-数据库课程设计-宿舍信息管理系统JAVA"是一个实践性的学习任务,旨在让学生深入理解软件工程的整个生命周期,特别是利用Java语言开发基于数据库的管理系统。这个系统专注于宿舍信息...
标题中的“基于角色权限管理PDM图”指的是在软件开发中使用的一种设计模式,即“基于角色的权限控制”(Role-Based Access Control, RBAC)。PDM是“产品数据管理”(Product Data Management)的缩写,通常用于管理...
在基于数据库的DEMO中,访问决策将根据用户的角色和权限进行判断。 6. **过滤器链**: - SpringSecurity通过一系列过滤器来保护应用程序的请求。这些过滤器如`DelegatingFilterProxy`、`ChannelProcessingFilter`...
**概念**:基于角色的权限设计(Role-Based Access Control, RBAC)是一种常见的权限管理方法,它通过赋予用户不同的角色来控制其访问权限。每个角色都与一组预定义的操作权限关联,用户通过获得这些角色间接获得...
在众多的权限管理模型中,基于角色的访问控制(Role-Based Access Control,简称RBAC)因其灵活性和易用性而被广泛采用。本文将详细介绍基于RBAC模型的权限控制设计,并探讨其在实际项目中的应用。 #### 二、RBAC...
2. **数据库设计**:设计数据库时需要考虑数据的逻辑结构和物理结构。逻辑设计涉及ER图(实体-关系模型),用于描述实体间的关系;物理设计则关注存储方式和访问效率。 3. **关系数据库**:这是最常见的数据库类型...
本文将基于一份关于“学生管理系统”的数据库课程设计报告,深入解析其核心知识点,涵盖系统设计、数据库架构、应用开发以及用户界面设计等关键环节。 ### 系统设计背景与目标 学生管理系统旨在通过计算机技术,...
它通常基于角色(Role-Based Access Control, RBAC)模型,其中,用户被分配到不同的角色,每个角色拥有特定的操作权限。例如,管理员可能具有所有权限,而普通用户可能只能访问和修改自己的数据。权限管理包括三个...
本资料集“web系统权限设计书”深入探讨了这一主题,提供了详细的数据库设计分析,旨在帮助开发者和系统架构师理解并实施有效的权限管理和角色控制策略。以下是核心知识点的详细说明: 1. **权限与角色概念**: - ...
它基于关系理论,由埃德加·科德提出的SQL语言就是为关系数据库设计的。在这一部分,你会学习到如何创建和操作表,理解主键、外键和索引等概念,以及如何使用SQL进行数据查询、更新和删除。 此外,课程还会涉及...
4. **RBAC模型**:Role-Based Access Control(基于角色的访问控制)是该系统的核心设计模式。用户通过其所属的角色获得权限,而角色的权限可以动态调整,增强了系统的灵活性。 5. **数据库设计**:系统中应包含...
在设计数据库时,需要遵循关系数据库理论,如实体-关系模型(E-R Model),并进行概念设计、逻辑设计和物理设计。规范化理论是数据库设计的重要组成部分,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)...
在解决权限设计问题时,作者提出了基于二进制的8421权限判定法则,并引入了中国古老的数学理论-"盈不足术",超递增序列的魅力。作者还讨论了保存权值到int还是varchar的问题,并提出了十六进制串的解决方案。 在...