Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >权限管理——多系统下的数据权限通用控制

权限管理——多系统下的数据权限通用控制

作者头像
政采云前端团队
发布于 2023-11-02 07:23:37
发布于 2023-11-02 07:23:37
4.6K00
代码可运行
举报
文章被收录于专栏:采云轩采云轩
运行总次数:0
代码可运行

大家好:

常见的,在项目实际开发中我们不光要控制一个用户能访问哪些资源,还需要控制用户只能访问资源中的某部分数据。这就是所谓的数据权限。典型的如列表数据权限,主要通过数据权限控制行数据,让不同的人有不同的查看数据规则。

行业背景

在互联网系统中,权限一般分为功能权限和数据权限,功能权限比较常见,因为通用性和复用性,业内有很多的通用框架和设计。但对应数据权限来说,由于数据权限强依赖客户组织架构和具体业务的关系,往往实现起来会比较复杂,很少有一个设计架构能完全覆盖住,所以大部分的系统都一致性的遵循此策略:如非必要的尽量不使用数据权限,必须要的则单独控制。

目前常见数据权限方案基本为硬编码,具体分为如下两种:一是拆分功能页面,即根据不同数据权限用户,通过复制拷贝的方式,增加多个类似的菜单,再通过功能权限配置来给不同用户设置不同的菜单,从而实现数据权限的控制;二是在功能对应的后端接口里做判断,对不同数据权限的用户,过滤不同的数据列表透出给用户。硬编码的方式显而易见的优点是技术难度低,实现简单。

但以上硬编码的方式,无论选择用哪一种,都无法解决系统灵活性的问题,每当系统有老的需求要变更或者新的需求要新增,对应的开发人员就不得不去调整编码,修改菜单和页面,由此可见,硬编码对开发的成本和运维的成本都比较高。与此同时,行业内常见的通用数据权限控制,大都是给单一业务使用,和业务耦合度较高,可能在当前业务客户端是通用可扩展的,但是在另一个业务客户端就无法做到无缝接入了。

因此,如何提高数据权限设置的灵活性,降低耦合性,是本领域技术人员需要解决的问题。

建设价值

首先来说一下,为什么我们要做这样一个多系统的数据权限控制装置?

大背景是我司当前有多个业务系统需要通过数据权限控制业务数据,它们的用户体系或相同或不同,控制维度各有定制。

于是产生诸如以下需求:

  • 权限可配置化
  • 支持业务快速接入
  • 模型统一

为了支持以上需求,于是理所当然的出现了如下一套多系统的通用数据权限控制系统。

系统介绍

本系统底层使用统一的一套模型,支持权限配置化,业务方可自定义权限维度,用户体系解耦,满足不同系统快速接入数据权限的业务场景。

数据权限

RBAC是经典的功能权限模型,它是 Role-BasedAccess Control 的英文缩写,意思是基于角色的访问控制。

运营事先会在系统中定义出各种不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一组权限的集合。而系统的所有用户都会被分配到不同的角色中,一个用户可能拥有多个角色。使用这种模型可以极大地简化权限的管理。

但是,在该模型下,系统只会验证用户甲是否属于角色A,而不会判断用户甲是否能访问只属于用户乙的数据 Data。这种问题我们称之为“水平权限管理问题”。

所以,为了解决这个问题,我们基于 RBAC 模型下,又扩展了功能和维度的概念,使系统能基于角色控制用户的数据权限。如下:

同时,为了做到多系统通用,我们又对系统、功能、权限做了如下抽象:

模型把每个系统抽象成由一个个业务组成,业务下分解成多个功能,功能对应多个维度:

  • 数据权限的颗粒度为到功能,一个功能可包含多个 Rest 接口。
  • 功能下分多个维度,所谓的数据权限实际就是控制每个维度,维度最终对应的是每个功能业务数据的筛选字段。
  • 最终当所有都配置完成后,每个角色对应每个功能下就挂着多个数据规则。当用户访问具体功能时,根据用户角色的数据规则,返回对应数据。
  • 当固定值不满足业务需求时,提供开放端口给业务方,业务方可实现对应维度的选择项端口,来达到自定义维度对应值的目的。
数据规则

根据以上描述,显而易见的,要实现数据权限,最重要的是需要抽象出数据规则。

比如我们营销系统的订单列表,需要从下面几个维度来控制数据访问权限

销售人员只能看自己的数据;

a 部门的人只能看自己部门的数据;

a 部门的上级部门 A 的人能看自己部门的数据和下级 b 部门的人;

上面的这些维度就是数据规则。

这样数据规则的几个重点要素我们也明晰了,就是规则字段,规则表达式,规则值,上面三个场景对应的规则分别如下:

规则字段:创建人,规则表达式:= ,规则值:当前登录人

规则字段:所属部门,规则表达式:= ,规则值:a

规则字段:所属部门,规则表达式:in ,规则值:A,a

即数据规则由【维度+条件表达式+维度对应值】组成,业务数据的数据权限就是由多个数据规则组成的范围控制。具体模型如下:

接入流程

那么,本套多系统权限控制系统,到底该如何接入呢?大致流程如下:

按照此通用方案,数据控制整体接入过程如下:

1.业务确定需要数据权限接入的功能。

2.产品、开发、业务确认功能的维度。

3.运营在开发的支持下在运营管理端配置数据权限,包括支持的维度、表达式、固定值等等。如需自定义维度对应值,实现对应端口。

4.各系统管理员登录各自的数据权限配置端,设置每个角色的数据规则。

5.客户访问系统的具体功能,根据客户的角色,获得数据规则,根据数据规则组装业务数据返回。

接入案例-订单列表

订单是很常见的系统功能,当前,需要对不同员工查看订单的数据范围做控制,根据员工所属的部门不同,查看对应部门的订单列表。

步骤一:确定系统、功能、维度

系统:xxx系统 功能:订单列表 维度:部门

步骤二:管理端配置数据权限

步骤三:业务方接入 Sdk,实现自定义维度(部门)选择项配置端口

示意代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 获取维度选择项 
 */
List<DimensionOption> getDimensionOptionList(List<String> dimensionCodes);

步骤四: 对应api查询数据接口接入 Sdk,完成数据过滤

步骤五: 系统管理员配置角色数据权限

只要完成以上5步,就实现了接入数据权限的功能。整个流程只有接入 Sdk 的成本,1天内即可完成,快速、高效,极大的降低了成本。同时公司内所有系统都拥有了一套完整统一的权限控制系统。

Sdk 如何进行数据权限控制

那么,底层究竟是如何实现数据权限控制的?

以下是一个请求的控制链路:

权限 Sdk 是真正实现权限控制的核心组件。

Sdk 中的基石是一个个对外开放的端口,其中最底层的是上下文端口。接入方需实现这个端口接口,根据当前缓存用户封装数据权限上下文。如有自定义维度,需实现自定义维度选择项端口,返回业务自定义的维度选择项。

数据权限生效实现过程如下:

1.请求 Path 被 Sdk 拦截,通过正则匹配配置的权限 Api,匹配到说明需要被控制。

2.在功能接口中,Sdk 根据上下文端口获取当前请求上下文,根据上下文获取对应用户所有角色的数据权限。

3.根据数据权限设置的配置,组装权限控制的条件。

4.业务方查询时加上权限控制条件,得到的数据,就是控制了数据权限后的数据。

ps:本sdk只针对java语言的后端

如果业务方使用的是 MyBatis 的 Xml 原生语句, Sdk 会把所有的数据权限组装成对应的 Sql 片段,自动对XML查询注入该 Sql 片段;如果使用的是 MyBatis-plus 的 QueryWrapper 方式,Sdk 会把所有的数据权限自动注入到生成的 QueryWrapper 条件中。

业务方也可以自主使用权限控制配置查询数据,关闭 Sdk 的自动注入。

问题
  • 当前只能直接对数据库存在的字段进行控制,如果是间接条件,无法控制数据权限
  • 自动注入当前只支持 MyBatis 的 Xml 原生语句和 MyBatis-plus 的 QueryWrapper 方式,其他如 Jpa 等不支持
思考

还有更多的类似问题,都是多系统数据权限控制需要解决的。虽然具体到每个小点,单从技术的角度来说,可能未必很难,但要支持更多系统,具备更好的通用化,还有很长的一段路可走。这是一个会随着业务的发展,需要持续改进的工作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 政采云技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
邹良城:视频聚合类APP的网络版权侵权认定问题
  本文为作者在“第三届中国互联网新型版权研讨会——互联网+内容产业的生态发展及制度保障”上的发言。 邹良城  腾讯公司诉讼维权总监   各位领导,各位专家、同行,大家下午好,非常荣幸参加今天的
腾讯研究院
2018/03/06
2.9K0
邹良城:视频聚合类APP的网络版权侵权认定问题
软考系统架构设计师(七):知识产权与标准化
知识产权保护范围与对象 法律法规名称 保护对象及范围 注意事项 著作权法 著作权、文学、绘画、作品、摄影等 1、不需要申请,作品完成即开始保护。2、绘画或摄影作品原件出售(赠予)著作权还归原作者,原件拥有者有:所有权、展览权。 软件著作权法、计算机软件保护条例 软件著作、权软件作品 1、不需要申请,作品完成即开始保护2、登记制度便于举证 专利法 专利权 需要申请,专利权有效期是从申请日开始计算 商标法 商标权 需要申请,核准之日起商标受保护 反不正当竞争法 商业秘密权 1、商业秘密包括技术与经营两个方面2、
陈大剩博客
2023/03/26
1.1K0
软考系统架构设计师(七):知识产权与标准化
【信管12.2】知识管理与知识产权
想必你对知识的概念多少都会有一些自己的理解,毕竟我们经过了那么多年的教育,学来学去可不都学习的是“知识”嘛。在今天的学习中,内容还是会比较多,因为除了知识管理相关的内容之外,还有知识产权相关的法律法规的学习,这里必须都是原样摘抄的,所以后面的内容会比较多。不过也不用太过于担心,大家只要把握关键点进行记忆就可以啦!
硬核项目经理
2023/03/02
4570
【信管12.2】知识管理与知识产权
94岁的米老鼠快要离家出走了吗?
大数据文摘授权转载自澎湃美数课 编辑:实习生陈芙蓉 设计:卫瑶 2022 年 11 月 18 日,卡通届的超级明星米老鼠将迎来它的 94 岁生日。 米老鼠,是迪士尼成为娱乐产业巨头的起点。迪士尼创始人华特·迪士尼曾说过:“我只希望人们不要忘记一件事,那就是一切都开始于一只老鼠”。 不过,这只老鼠可能要跑出迪士尼的保护圈了——初代米老鼠的 95 年版权保护期或将在 2024 年结束。届时,诞生于 1928 年的初代米老鼠形象可能会进入公共领域,成为公众自由创作的素材。 而对于此次的到期,“版权斗士”迪士尼早
大数据文摘
2023/04/10
2880
94岁的米老鼠快要离家出走了吗?
国内体育版权侵权索赔纪录刷新!B站被索赔4.06亿!
7月25日晚,话题#CBA公司因侵权向B站索赔4亿#登上热搜,24小时内阅读量超1.5亿次。 据悉,在2019-2020赛季中,CBA官方授权的新媒体赛事版权合作伙伴为咪咕、腾讯、优酷三家,而B站在未经授权的情况下,大规模向公众提供CBA赛事视频的点播服务,故而被对方起诉至北京市知识产权法院。 经CBA公司取证发现,B站中存在281个CBA联赛2019-2020赛季的全场比赛视频,同时包含当赛季全明星赛的全场比赛视频,以及至少416个该赛季的赛事节目集锦视频。 但CBA公司为何索赔4.06亿人民币呢?这
腾讯云DNSPod团队
2022/08/26
8510
国内体育版权侵权索赔纪录刷新!B站被索赔4.06亿!
丛立先:移动互联网时代版权侵权责任的认定
 本文为作者在“第三届中国互联网新型版权研讨会——互联网+内容产业的生态发展及制度保障”上的发言。 丛立先 北京外国语大学法学院教授,博士生导师   移动互联网时代版权侵权责任的认定,这个问题相对来说
腾讯研究院
2018/02/06
5930
丛立先:移动互联网时代版权侵权责任的认定
计算机软件著作权保护的原则及司法侵权鉴定标准
计算机的工作离不开软件的控制指挥。软件具有开发工作量大、开发投资高,而复制容易、复制费用极低的特点。计算机软件作为作品形式之一,根据国家颁布的软件著作权法规所获得的保护。为了保护软件开发者的合理权益,鼓励软件的开发与流通,广泛持久地推动计算机的应用,需要对软件实施法律保护,禁止未经软件著作权人的许可而擅自复制、销售其软件的行为,许多国家都制订有保护计算机软件著作权的法规。2002年,我国颁布了《计算机软件保护条例》对软件实施著作权法律保护作了具体规定。
西安弈聪软件公司
2018/07/25
9080
为人工智能筹划法律保护
●人工智能的法律保护与法律纠纷,已经拉开序幕。科学家、律师、投资人在关注人工智能产业的时候,势必需要回答:如何为自己的人工智能产品制定法律保护战略,法律保护成为人工智能战略的重要组成部分。 ●给机器人
企鹅号小编
2017/12/27
8800
数据抓取与利用行为的不正当竞争法规制
编者按: 随着大数据时代的来临,数据的利用纠纷在司法实践中初露端倪。数据虽然在新修订的《民法总则》中作为一种新的客体出现,但其客体的范围、权利归属,权利界限在立法中几乎还是空白状态。本文将通过几个案例说明数据利用行为在司法实践中的规制。 一、引言 “网易云音乐”里有一项非常令人喜闻乐见的功能——“日推”。根据你经常听的歌曲类型,每日推送20首音乐,有好久以前听过早就忘记了歌名却一直村与记忆深处的老歌,或者之前不知道在哪听过只是知道其中一部分旋律,心心念念求而不得的歌等等,常常令人惊喜甚至是惊艳。日推功能也成
企鹅号小编
2018/01/15
2.1K0
数据抓取与利用行为的不正当竞争法规制
迪士尼将失去米老鼠版权,大家可以随便用了?
据英国《卫报》报道,美国迪士尼公司的标志性动画形象米老鼠的版权保护期即将到期。 这意味着迪士尼公司可能在不久后,将失去这一长达95年的形象专有权。到期之后,米老鼠形象将自动进入公共领域,任何想要使用米老鼠形象的人不用申请,也无需支付版权费用,就可以随意使用。 迪士尼的“摇钱树” 1928年,美国迪士尼公司的创始人华特·迪士尼创造了“米老鼠”这个动画形象,并在同年的《汽船威利》电影中首次亮相。 经过长年运营,米老鼠成为了迪士尼公司的象征,深受全球大众的喜爱,而其变现之路也十分的“野”:从影视作品到周边商品,再
腾讯云DNSPod团队
2022/09/19
1.2K0
迪士尼将失去米老鼠版权,大家可以随便用了?
互联网商业模式创新与反不正当竞争法规制
陶 钧   北京市高级人民法院   我今天跟大家交流的题目是“互联网商业模式创新与反不正当竞争法的规制”,“天下熙熙皆为利来,天下攘攘皆为利往,来往之间皆为利”,在经营主体为谋取利益最大化的过程中,“创新”商业模式是其扩展经营规模、实现商业盈利的重要方式之一,而创新也为消费者带来了更多的“福利”。由此,“创新”是“互联网+”经济时代广大经营者所必须考量、面对与解决的问题。   然而“创新”并非毫无边界,其藩篱的设置更需要理性的考虑。正是因为商业模式创新更多的在于行为模式与方式的变化,若其中涉及到具体的
腾讯研究院
2018/02/01
6630
清华崔国斌:网络加框链接的版权法规制
    10月24日,由腾讯互联网与社会研究院与《中国版权》杂志社联合主办的“第二届中国互联网新型版权问题研讨会”在京举行。本次论坛的主题是内容聚合与深度链接的法律问题。研究院微信将陆续推出研讨会的精
腾讯研究院
2018/03/13
1.6K0
清华崔国斌:网络加框链接的版权法规制
司晓:“互联网内容产业十年回顾与未来展望”研讨会综述
司晓  腾讯公共战略研究部总经理、腾讯研究院秘书长   4月23日—24日,由腾讯研究院承办的“第十三届知识产权南湖论坛互联网分论坛——‘互联网内容产业十年回顾与未来展望’”专题研讨会在北京友谊宾馆召
腾讯研究院
2018/02/06
1.3K0
司晓:“互联网内容产业十年回顾与未来展望”研讨会综述
侵犯著作权法定赔偿额上限提高至500万元
我国对于著作权的保护是在法律上有依据的,甚至写进了刑法。违法者首先要承担民事赔偿责任,那么民事赔偿责任这块对此是有怎样的标准呢?
JEECG
2021/10/21
3430
互联网领域具体不正当竞争行为法律规制的几点思考
黄蕴华  工信部电子知识产权中心   首先,非常感谢主办方能够给我这样一个机会与各位专家和前辈同台在这里探讨问题;其次,我要感谢主办方邀请的嘉宾,刚才提到我们承担的最高院互联网领域商业竞争法律规制方面
腾讯研究院
2018/02/06
1.1K0
互联网领域具体不正当竞争行为法律规制的几点思考
拦截“正当经营的互联网广告”行为的违法性分析
谢兰芳   西南政法大学知识产权法博士研究生     王  喆   腾讯公司法律顾问 关  悦   腾讯公司高级法律顾问   正当经营的互联网广告已成为广告市场繁荣发展的重要支撑,也是互联网企业收入增长的重要领域,对此类互联网广告进行拦截的不正当竞争行为势必有碍行业发展。虽然近年来我国已有多起司法判决对广告拦截行为的违法性进行了认定,但广告拦截软件/插件(下统称为“插件”)的开发市场却仍呈“雨后春笋”之态势。   互联网广告并非广告市场野蛮生长的伊甸园,只有正当经营的互联网广告才应
腾讯研究院
2018/02/01
1.1K0
移动视频聚合应用法律问题分析
腾讯公司法务综合部法律顾问 刘青 腾讯研究院法律研究中心 田小军 摘要: “注意力”经济之下,各大视频网站逐渐加大对优质视频版权采购、服务器与带宽扩容等方面的投入。定向搜索聚合技术在移动端的应用使得移动视频聚合应用经营者迅速发展,但是,其对网络视频产业健康有序发展带来了诸多困扰。移动视频聚合应用存在诸多法律问题,集中表现为应用经营者的信息网络传播权侵权与不正当竞争。本文在现有司法环境下类型化移动视频聚合应用经营者侵权行为,并讨论应用经营者的法律定性,以期明确应用经营者法律责任,维护网络视频行业权利人
腾讯研究院
2018/03/07
9760
中国互联网不正当竞争案件发展实证分析(二)
张钦坤      腾讯互联网与社会研究院副秘书长 三、互联网不正当竞争案件的特征    纵观126件互联网不正当竞争案件,从侵权行为本身到侵权结果,再到案件审理都反映出一些典型特征,主要包括以
腾讯研究院
2018/03/09
1.5K0
中国互联网不正当竞争案件发展实证分析(二)
海淀法院李颖:深度链接与聚合搜索典型案件及初步探讨
   10月24日,由腾讯互联网与社会研究院与《中国版权》杂志社联合主办的“第二届中国互联网新型版权问题研讨会”在京举行。本次论坛的主题是内容聚合与深度链接的法律问题。研究院将陆续推出本次研讨会的精彩
腾讯研究院
2018/03/13
2.1K0
海淀法院李颖:深度链接与聚合搜索典型案件及初步探讨
你的爬虫会送你进监狱吗?
随着大数据的火热,数据相关行业竞争不仅“蒸蒸日上”,爬虫之间的战争也越发地激烈。一篇《你的爬虫会送老板进监狱吗?》在程序猿圈子里被大量转载,甚至有的程序员因为非法获取数据的新闻从而放弃了这一行当。那么,爬虫是什么,它会是悬在程序员头上的达摩克利斯之剑吗?
崔庆才
2019/05/06
3.5K0
你的爬虫会送你进监狱吗?
推荐阅读
相关推荐
邹良城:视频聚合类APP的网络版权侵权认定问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验