数据权限管理怎么做?RBAC、ABAC 与行列级权限的完整设计方法

零门槛、免安装!海量模板方案,点击即可,在线试用!

免费试用

数据权限管理怎么做?RBAC、ABAC 与行列级权限的完整设计方法

阅读人数:55预计阅读时长:5 min

很多企业做数据权限管理,最开始都是从用户和角色入手:给销售开销售报表权限,给财务开财务分析权限,给管理层开放经营驾驶舱。

但随着数据应用越来越多,新的问题很快就会出现。

同一个销售部门,不同区域的员工只能查看各自负责的客户;同一张经营报表,区域经理只能看本区域收入,总经理却需要查看全部区域;财务人员可以查看完整金额,普通业务人员则不应该接触客户身份证号等敏感信息。

这时候,单纯依靠菜单权限和角色划分,就很难满足实际需求。

一套完整的数据权限体系,至少要回答四个问题:谁可以访问、可以执行什么操作、可以访问哪些数据、可以看到哪些字段。

一、先搞清楚:数据权限到底管什么?

设计权限体系之前,需要先把不同层次的权限拆开。很多权限项目越做越复杂,问题往往不是规则不够多,而是把不同类型的权限混在了一起。

免费试用

第一层:功能权限

解决用户能不能进入某个功能、执行某项操作的问题。例如,销售人员可以查看报表,但没有权限修改数据集;数据开发人员可以编辑加工任务,但不能随意调整系统管理员的授权配置。

第二层:资源权限

解决用户可以访问哪些具体资源的问题。例如,两个用户都有报表查看功能,但一个只能查看销售分析报表,另一个还可以查看库存、财务报表。

第三层:行级权限

解决用户能够看到哪些记录的问题。例如,同一张订单表中,华东区域经理只能查看华东区域的订单,总部管理人员则可以查看全部区域。

第四层:列级权限

解决用户能够查看哪些字段的问题。例如,员工可以查看客户姓名和订单金额,但手机号只能部分展示,身份证号则不能直接查看。

这四层并不能互相替代。拥有报表查看权限,不代表用户可以查看全部数据;只能查看部分记录,也不代表记录中的敏感字段可以全部展示。

落到数据平台建设中,还需要区分谁能操作数据链路、谁能管理数据资源,以及谁能消费最终的数据结果。

例如,FineDataLink 5.0 提供面向用户、部门和角色的权限管理能力,可对数据连接、定时任务、实时任务、接口服务、数据服务应用等资源进行相应的使用、管理和授权控制。对于需要多人协作的数据团队,这有助于明确开发、运维和数据服务管理的职责边界。不过,平台资源权限不等于业务数据的行列级权限,后者仍需结合具体的数据访问链路设计。

二、RBAC 和 ABAC 有什么区别?一个管角色,一个看属性

RBAC 和 ABAC 解决的是授权判断问题,而行级权限和列级权限解决的是数据访问范围问题。它们并不属于同一个维度,可以组合使用。

RBAC:根据角色分配权限

RBAC,即基于角色的访问控制,核心逻辑是:用户 → 角色 → 权限。

例如,企业设置销售、财务、部门经理和系统管理员等角色,再为每种角色分配相应权限。新员工入职后,只要加入销售角色,就能获得对应的功能权限,无须逐项配置。

这种方式结构清晰、管理成本相对较低,特别适合岗位职责比较稳定的企业。

但业务规则一旦变得复杂,角色数量就容易膨胀。假设销售部门有华东、华南、华北三个区域,每个区域又分普通销售、销售主管和区域经理。如果每种组合都建立一个独立角色,权限维护很快就会变得繁琐。

ABAC:根据属性和规则判断权限

ABAC,即基于属性的访问控制,会综合用户、资源、操作和环境等属性判断是否授权。例如:

  • 用户属性:所属部门、所在区域、岗位、职级。
  • 资源属性:数据所属区域、敏感等级、业务类型。
  • 操作属性:查询、修改、导出、删除。
  • 环境属性:访问时间、设备状态、网络环境等。

企业可以制定这样的规则:当用户所属区域与订单所属区域一致时,允许查看订单;当用户具备特定管理职责时,可以查看多个区域的数据;当访问涉及高敏感信息时,需要满足额外的授权条件。

RBAC 和 ABAC 的区别,可以简单理解为:RBAC 根据"你是谁、担任什么角色"分配权限,ABAC 则根据"你是谁、数据是什么、要做什么、在什么环境下"综合判断。

实际落地时,不必在两者之间二选一。更常见的思路是:用 RBAC 确定基础权限,再用 ABAC 细化访问条件。

例如,销售角色获得订单查询权限,再通过区域属性限制其数据范围。这样既保留了角色管理的便利性,又避免为每一种业务组合创建独立角色。

三、行级权限怎么设计?关键是限制记录范围

行级权限的核心,是让不同用户查询同一份数据时,只能获取自己有权访问的记录。

以订单表为例:如果张三只负责华东区域,那么系统查询订单时,就应该自动附加相应的数据范围条件。示意逻辑如下:

```sql
SELECT *
FROM orders
WHERE region_id IN (
-- 当前用户获准访问的区域
);
```

这里的区域范围应该根据可信的用户身份、组织关系和授权规则计算得出,不能简单相信前端传入的区域参数。

真正落地时,有三个问题尤其重要。

第一,数据范围从哪里来?

常见依据包括所属部门、负责区域、客户归属、项目成员关系和租户标识等。

例如,区域经理可以查看本区域全部订单,普通销售只能查看本人负责的客户订单。两种规则的判断条件不同,需要提前明确适用范围和优先级。

第二,权限在哪里执行?

如果系统只在前端隐藏不属于当前用户的记录,却没有在后端查询时限制数据,那么用户仍可能通过接口、导出功能或其他查询入口获取越权数据。

因此,行级权限应在可信的服务端或数据访问层执行,并覆盖查询、统计、导出和接口调用等路径。

第三,关联查询和聚合计算怎么办?

假设用户只能查看华东订单,但系统计算销售总额时使用了全部区域的数据,那么即使明细被过滤,汇总结果仍可能泄露其他区域的信息。

如果企业需要将订单数据开放给其他业务系统,可以通过 FineDataLink 5.0 的数据服务能力开发和发布数据 API,并结合鉴权、黑白名单等机制管理调用。需要注意,接口鉴权主要解决调用方能否访问服务的问题;接口内部仍需根据可信身份和授权规则限制记录范围,不能把"能够调用 API"等同于"有权查看全部数据"。

四、列级权限怎么设计?敏感字段不能只靠隐藏

行级权限决定用户能看哪些记录,列级权限则决定用户能看哪些字段。

例如,一张客户信息表包含客户姓名、手机号、身份证号、所属区域、合同金额等字段,不同岗位的实际需求并不相同。销售人员需要客户联系方式,财务人员可能需要合同金额和结算状态,普通业务分析人员则可能只需要客户数量和区域分布。

如果所有用户都能访问整张表,即使已经实现行级权限,敏感字段依然可能暴露。

列级权限通常有三种处理方式。

第一,禁止访问

对于没有业务必要的字段,例如普通分析人员不需要查看的身份证号,可以直接禁止查询或返回该字段。

第二,脱敏展示

例如,手机号显示为 138****1234,身份证号只保留必要的部分信息。

但要注意,脱敏展示不等于访问权限已经得到完整控制。如果原始字段仍能通过其他接口、导出任务或查询语句获取,风险依然存在。

第三,按需提供不同的数据视图

对于使用场景差异明显的业务,可以建立面向不同岗位的数据视图或数据集,只暴露完成工作所需的字段。

在数据服务建设中,这种思路同样适用。FineDataLink 5.0 可以将加工后的数据封装为 API,供其他业务系统按需调用。设计接口时,应根据业务用途明确返回字段,避免直接暴露整张底层表;涉及敏感信息的字段,还应在查询逻辑、服务端或下游应用中落实必要的访问限制与脱敏规则。

这里有一个容易被忽略的细节:字段没有显示出来,不代表字段没有被访问。 例如,前端虽然不展示身份证号,但后端接口仍返回了完整字段,用户就可能通过浏览器开发工具或接口响应获取原始信息。

因此,列级权限不能只做页面上的隐藏操作,而应尽可能在可信的数据查询或服务端执行层落实。

五、行级权限和列级权限,应该怎样组合?

真实业务中,用户往往同时受到角色、数据范围和敏感字段的限制。

例如,一名区域销售经理拥有订单查询权限,只能查看自己负责区域的订单,同时不能查看客户身份证号。系统至少需要依次判断:

  1. 用户是否具备订单查询功能权限?
  2. 用户是否有权访问对应的数据资源?
  3. 当前订单是否属于其获准访问的范围?
  4. 返回结果中,哪些字段可以展示,哪些需要脱敏或禁止访问?
  5. 用户是否拥有导出权限,导出内容是否执行同样的限制?

这意味着权限系统不能只维护一张简单的用户—角色对应表,还需要明确不同规则之间的关系。

第一,采用最小权限原则

默认只授予完成工作所必需的权限。新增用户、开放新接口或增加字段时,不应自动获得超出职责范围的访问能力。

第二,明确授权冲突的处理规则

例如,用户通过角色获得查询权限,但某项敏感字段被明确禁止访问,就需要按照预先定义的规则判断最终结果。对于敏感数据,可以采用明确的拒绝优先策略,并谨慎处理角色继承、个人授权和组织授权之间的冲突。

还要特别注意:不同系统对多角色权限的合并方式可能不同,有的采用权限并集,有的支持更细致的策略判断,不能默认所有系统都采用同一套逻辑。

第三,区分平台操作权限与业务数据权限

例如,数据开发人员可以编辑加工任务,并不意味着他有权查看所有业务数据;业务分析人员可以调用数据服务,也不意味着他可以管理数据连接或修改任务配置。

FineDataLink 5.0 的资源权限管理可以帮助团队划分数据连接、任务和接口服务等资源的使用与管理职责;与此同时,企业还需要在具体的数据查询、接口调用和业务应用中落实行列级授权。两层规则分别解决"谁能操作数据资源"和"谁能获取哪些业务数据",不能相互替代。

第四,统一权限判断入口

同一份数据可能通过报表、API、导出任务和分析工具被访问。如果每个入口都单独编写一套规则,时间久了就容易出现权限不一致。

因此,应尽量统一用户身份、权限策略和数据范围的计算逻辑,并对不同访问入口开展一致性测试。

六、数据权限体系落地,建议按照这六步推进

如果企业准备从零建设,或者整改已有权限体系,可以按照以下顺序推进。

第一步:盘点数据资产

梳理核心数据库、业务表、数据集、报表、API 及其使用部门,明确哪些数据涉及客户隐私、财务信息或其他敏感内容。

第二步:建立数据分类分级机制

为数据标注业务归属、敏感等级、责任部门和使用范围。没有统一的数据分类标准,后续权限规则很难保持一致。

第三步:梳理角色和组织关系

先建立常规岗位角色,再明确部门、区域、项目和租户等属性。稳定的岗位职责使用 RBAC,动态的数据范围则可引入 ABAC 规则。

第四步:制定行列级授权策略

明确每类用户能访问哪些记录、哪些字段需要隐藏或脱敏,以及查询、导出、修改等操作分别需要什么权限。

第五步:把权限放到真实的数据链路中验证

检查数据从源系统进入平台、经过加工、形成数据集,再通过报表或 API 被消费的全过程。

例如,当某个经营指标出现异常时,除了检查权限配置,还需要确认数据是否缺失、加工任务是否异常,以及上游数据变化影响了哪些下游应用。FineDataLink 5.0 提供数据质量巡检与数据血缘能力,可以帮助团队发现数据缺失、重复等质量问题,并追溯相关上游表和加工任务,为排查数据链路异常提供依据。不过,血缘和质量检查不能代替权限审计,越权访问仍需通过授权记录、访问日志和实际测试来验证。

第六步:建立持续审计机制

员工离职、岗位调整、项目结束、数据敏感等级变化,都可能导致原有授权失效。

建议定期检查长期未使用的权限、过期项目权限、个人例外授权和高敏感数据访问记录。对于新增接口、字段和数据集,也应执行权限回归测试,防止业务功能更新后出现新的越权入口。

写在最后

数据权限体系设计,最重要的是把不同层次的问题分清楚。

RBAC 解决基础角色授权,ABAC 支持基于属性和条件的细粒度判断;行级权限控制记录范围,列级权限控制字段访问与展示。

真正成熟的权限体系,不是给每个用户配置越来越多的角色,而是建立一套可解释、可执行、可审计、可持续维护的规则。

谁因为什么身份获得权限,能够访问哪些数据,哪些信息必须受到限制,以及当业务发生变化时权限如何及时调整——这些问题都得到明确回答,数据权限体系才算真正落地。

【AI声明】本文内容通过大模型匹配关键字智能生成,仅供参考,帆软不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系blog@fanruan.com进行反馈,帆软收到您的反馈后将及时答复和处理。

若想了解更多关于FineDataLink的相关信息,您可以访问下方链接,或点击下方组件,快速获得帆软为您提供的企业大数据分析平台建设建议、免费的FineDataLink试用和同行业自助智能分析标杆案例学习参考。

了解更多FineDataLink信息:www.finedatalink.com

帆软FineDataLink数据集成平台在线试用!

免费下载

评论区

暂无评论
帆软企业数字化建设产品推荐
报表开发平台免费试用
自助式BI分析免费试用
数据可视化大屏免费试用
数据集成平台免费试用