通用数据权限管理系统设计(一)
作者:逸云
前言:
本文提供一种集成功能权限和数据权限的解决方法,以满足多层次组织中权限管理方面的集中控制。本方法是RBAC(基于角色的访问控制方法)的进一步扩展和延伸,即在功能权限的基础上增加数据权限的管理,实现数据权限和功能权限的集中处理。
解释:
功能权限:能做什么的问题,如增加销售订单;
数据权限:能在哪里干什么的问题,如察看北京分公司海淀销售部张三的销售订单;
术语:
资源:系统中的资源,主要是各种业务对象,如销售单、付款单等;
操作类型:对资源可能的访问方法,如增加、删除、修改等;
功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等;
数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等;
数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的对象值;
权限:角色可使用的功能,分角色的功能权限和角色的数据权限;
角色:特定权限的集合;
用户:参与系统活动的主体,如人,系统等。
通用数据权限管理系统设计(二)
方法说明:
在实际应用中,数据权限的控制点一般相对固定,如针对公司、部门、个人、客户、供应商等,也就是说数据权限一般针对指定数据类型下的一些数据对象。
本方法中,数据权限的依赖于功能权限,是对功能权限的进一步描述,说明角色在指定的功能点上的数据控制权限。
本方法中采用“没有明确规定即视为有效”的原则,如果没有定义功能的数据权限,则说明该角色具有该功能的全部的权限。如果定义了功能的某种类型的数据权限,则该用户只具有该类型下指定数据的数据权限。
这段话比较绕口,下面举个例子实际例子。
某公司有北京销售部、上海销售部和广州销售部三个销售部,现在需要定义几种角色:
    销售总监      -- 能察看所有销售部的销售订单;
    北京销售经理 -- 只能察看北京销售部的所有销售订单;
    上海销售经理 -- 只能察看上海销售部的所有销售订单;  
    广州销售经理 -- 只能察看广州销售部的所有销售订单;  
上述角色的定义如下:
     -------------------------------------------------------------------
     角色名称             功能             数据类型     数据对象  
     -------------------------------------------------------------------
     销售总监           察看销售订单                                 
     北京销售经理       察看销售订单         部门         北京  
     上海销售经理       察看销售订单         部门         上海     
     广州销售经理       察看销售订单         部门         广州     
     -------------------------------------------------------------------
    上述定义中,销售总监只定义了功能权限,而没有定义数据权限,所以销售总监能够察看所有的销售订单;而其他几位销售经理分别定义了这一功能的数据权限,所以只能察看指定部门的销售订单。
     在实际应用中,往往会出现部门分组,组长能够察看本组所有人员处理的销售订单的情况,以及某些情况下,某些人只能察看本人的销售订单的情况,这些特殊情况在上述的说明中无法解决,需要在设计和实现中进行处理。
    北京销售代表 -- 只能察看北京销售部的本人的所有销售订单;  
     北京销售代表         察看销售订单           部门            北京     
                                                 个人                  
通用数据权限管理系统设计(三)--数据库设计
我们先来看看传统的基于角色的权限管理系统,如下图所示,最简单的基于角色的权限管理由系统功能、系统角色、系统用户、角色功能和用户角色五部分组成。
图一:基于角色的数据库结构
为实现数据权限控制,在设计上对基于角色的权限管理进行扩充,如下图所示:
图二:通用数据权限管理系统数据库设计
对比两张图,我们可以看到,他们之间的主要变化为:
1、 增加系统资源信息和操作类型信息,系统资源为树形结构、如销售模块、销售订单等;操作类型记录可能的操作,如增加、删除、修改、查看、查询等,系统功能是资源与操作类型的组合,对资源的操作就是系统功能。
2、 增加数据对象类型和数据对象两张表,数据对象类型记录系统中需要控制的对象类型,如部门、库房、员工、客户、供应商等;数据对象记录各对象类型的对象实例,如北京销售部、上海销售部、张三、李四等等。(独立保存的好处后面会说到)
3、 增加系统资源与数据对象类型的关联表(多对多),本表为配置表,说明某种资源可能需要的控制点,如销售订单与部门类型的关联可能涉及到分部门分配权限;销售订单与客户的关联可能涉及到按客户分配权限等等。
4、 增加数据对象与角色权限的关联,这张表是真正最终实现数据权限管理的所在地。
通过这种设计,能够最小化地减少对原有权限系统的更改,并且可以很灵活地增加数据的控制点。在产品化软件的设计中使用,能够灵活满足客户的需要。
下一篇文章将讨论这种结构如何满足第二部分功能需求的问题,如果时间允许,将对程序的设计做进一步阐述。
本设计方法已应用于自行开发的通用供应链管理系统中,欢迎指正。

通用数据权限管理系统设计相关推荐

  1. 基于面向对象的权限管理系统设计与实现[1]

    基于面向对象的权限管理系统设计与实现[1] 2007-9-20 作者:王如龙 网友评论 0 条 点击进入论坛 摘要:针对大型计算机应用系统对权限管理的要求,提出了采用面向对象技术,实现权限管理的思想, ...

  2. 权限管理系统设计——入门(一)

    权限管理系统设计--入门(一) 后续更新中- 概念 1.身份认证:用户是否是合法. 2.限制资源访问:根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源. 3.用途广:出现在 ...

  3. 百度超级链新专利曝光,降低隐私数据权限管理难度

    年初,多家媒体报道百度公开了一项名为"区块链的隐私数据处理方法.装置.设备以及存储介质"的专利信息.该专利由百度超级链团队研发,旨在降低隐私数据权限管理的复杂度,可广泛用于云计算和 ...

  4. 大数据权限管理sentry与Kerberos概述

    大数据权限管理sentry与Kerberos概述 常见的解决方案分为两部分 1. 管理用户身份*即用户身份认证 2. 用户身份和权限的映射关系管理 即授权 而Hadoop中常见的开源解决方案是Kerb ...

  5. 大数据权限管理组件Apache Ranger简介和原理

    大数据权限管理组件Apache Ranger简介和原理 一.什么是Ranger 二.Ranger的管理页面和Ranger支持的框架 三.Ranger的目标 四.Ranger架构 五.Ranger的工作 ...

  6. 商业智能BI工具Qlik入门第二步:创建可视化、数据权限管理和发布

    Qlik Sense是下一代自助式数据可视化工具,它让每个人都能够轻松地凭直觉创建一系列灵活.交互的可视化应用去浏览.发现数据. Qlik Sense基于QIX关联数据索引引擎-QIX是Qlik的第二 ...

  7. 大数据平台数据权限管理设计

    背景和范围 当前大数据团队没有一个统一的操作权限控制和管理平台,对于分析师在服务器上的权限,目前都是给予对应分析节点的EC2机器账号,且为了方便操作和管理都是给予的管理员权限,因此安全性风险较大:对于 ...

  8. java 数据权限_通用数据权限的思考与设计

    1.数据权限概述 1.1.什么是数据权限? 如果想学习Java工程化.高性能及分布式.深入浅出.微服务.Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:7877071 ...

  9. linuxoracle查看用户权限_权限管理系统设计过程

    今天和大家一起探讨权限管理方面的设计心得.权限管理,是B端后台系统一个重要的组成部分,属于底层的支撑功能,系统内所有的功能,甚至字段的增减都涉及到权限的分配和管理.因此怎样配置后台的权限系统,以适应多 ...

  10. 深入探讨大数据权限管理方案-从哲学到技术

    大数据平台的权限管理工作,听起来不就是用户和密码管理这点事么?找个数据库存储一下两者的映射关系,然后再找个地方记录一下每个人可以做什么事,最后在需要的时候验证一下就好了,如果不讨论各种加解密原理和算法 ...

最新文章

  1. 【翻译】《理解收益率曲线》系列
  2. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding...
  3. ArcGIS API for Silverlight开发
  4. matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题
  5. excel 汇总 mysql_利用mysql收集excel录入汇总
  6. 强悍的 ubuntu —— samba 实现 ubuntu 与 windows 之间的文件共享
  7. fcpx教程从入门到精通「4」检查器窗口的认识
  8. C# 对IOC的理解 依赖的转移
  9. 计算机科学梦想演讲稿,关于科技演讲稿讲话稿范文三篇
  10. Require statement not part of import statement. eslint@typescript-eslint/no-var-requires报错修改
  11. 将一个3x4阶矩阵转置。
  12. Git Git用户ssh公钥管理
  13. 超六类与七类等多类网线的比较—Vecloud
  14. 爬取斗鱼直播平台的所有房间信息
  15. 分享一次险象迭生的系统迁移【真实案例】
  16. 视图属性-详细参数解释
  17. mysql 报错1366
  18. 电池工况测试 matlab,一种电动汽车用动力蓄电池脉冲工况测试方法与流程
  19. vue开发中遇到的滚动到底部加载更多数据问题
  20. 安大计算机学院的张燕平导师怎么样,安大两名硕士论文被曝高度抄袭两人同届同门同属于一个导师...

热门文章

  1. ubuntu18.04安装网卡驱动
  2. java 正则表达式 检测数学公式是否正确_java 正则表达式 检测数学公式是否正
  3. java向上取整和向下取整,万字长文!
  4. 证件照更换背景 裁剪尺寸 智能图片放大 照片 证件照大师
  5. AD Undeclared identifier: GetFontID 问题解决方法
  6. 常用芯片数据手册—— INA333 低功耗、精密仪表放大器(德仪)
  7. android9 apk自动安装功能,Android自动安装APK
  8. 汉英词典python
  9. mysql pxc介绍_MySQL高可用——PXC简介
  10. Win10安装CUDA10和cuDNN