权限管理
1. 概述
权限管理是所有BI产品都会涉及的一个重要部分,目的是对不同的人访问资源进行权限控制,避免因权限控制缺失或操作不当引发的风险,如隐私数据泄露等问题。本产品权限体系设计的初衷,是希望它既能满足实际业务中的复杂场景需求又能简洁易用,本文将为您详细介绍本产品的权限体系。
2. 角色模型
对于权限管理,最简单的办法就是给每个用户配不同的权限,但这样的设计在用户较多时维护起来就显得非常力不从心。于是很多人想到在用户和权限之间增加一个角色,也就是迄今为止最为普及的权限设计模型,即RBAC(Role Based Access Control,基于角色的权限访问控制)权限模型。
本产品使用了RBAC模型进行权限管理。RBAC模型认为权限授权实际上是Who、What、How的问题。在RBAC模型中,Who、What、How构成了访问权限三元组,也就是“Who(权限的拥用者或主体)对What(权限针对的对象或资源)进行How(具体的权限)的操作”。换句话讲,在RBAC模型中,是通过控制“Who对What进行How的操作”来实现让不同的用户/用户组对不同的资源拥有不同的操作/数据权限的目的。
角色与权限绑定,即项目中用户的权限与其被赋予的角色相关。一个用户可以拥有多个角色,一个角色也可以被添加给多个用户,每个角色可以被赋予多个权限。以下图为例,用户1只拥有角色1的权限,即对资源1进行操作1;而由于用户3拥有3个角色全部的权限,因此该用户可以对资源1和资源2分别进行操作1和操作2。
角色与权限绑定唯一例外是当用户为某资源的创建者时,其对此资源的权限与该用户绑定,与角色无关。 例如用户1拥有角色1,权限为可对资源1进行操作1与2,若该用户创建了资源2则拥有了对该资源的权限,而角色1并没有权限对资源2进行操作,除非在权限管理中进行修改。用户最终的权限为其所有拥有角色权限与资源创建者权限的并集。
3. 资源权限
本产品中的资源包括:报告、数据大屏、数据大屏PRO、复杂报表、数据门户、数据模型、数据准备、数据连接、数据填报的公共文件夹和私人文件夹。
3.1 基于角色 统一管理
本产品中资源权限的设置和赋予可通过角色来实现,这样的设计可以帮助用户基于角色来实现权限的统一管理,极大降低企业设置权限体系的复杂程度。
例如,企业内各人员的资源权限往往是根据企业组织架构来对应设置的,当组织人员变动时,在权限体系中只需将该用户所拥有的角色变更为对应组织架构角色,一键实现资源权限的变更。
3.2 按资源授权
此部分详情见资源权限管理
3.3 分级授权 灵活应用
当企业发展到一定规模时,往往拥有多层组织架构,而在传统的RBAC模型中,都只能由一个权限最高的用户来创建所有角色,对所有用户进行权限的授予,进行权限体系的维护工作,这样导致管理员工作量过大。同时,企业里不同的业务线不同的部门都有数据分析需求,如果无法将不同业务线、部门资源分隔开,将会对资源的整理和权限配置带来巨大挑战。
基于上述情况,本产品提供了“项目+二级管理员”的多项目结合分级授权体系。首先,企业可以为不同的业务部门建立不同的项目,通过“项目列表”在不同的项目前切换,项目管理员拥有该项目内所有资源的所有权限。其次,通过二级管理员的设置来实现二级授权,项目管理员可以将部分资源的授予权限赋予该二级管理员,由二级管理员来管理对应的资源。多租户结合分级授权体系可以帮助用户创建丰富立体的权限分配体系。
具体来看,本产品将角色分成三类:系统角色、一级角色和二级角色。
系统角色包括:项目管理员、二级管理员、编辑者、阅览者,系统角色无法编辑、修改和删除。编辑者可以查看或编辑所有的资源;阅览者仅可以查看所有资源。
一级角色和二级角色由项目管理员和二级管理员创建,一级角色可以拥有编辑权限,二级角色只能拥有阅览权限。
4. 数据权限
4.1 行列权限 精准定位
数据权限解决的便是用户能看到多少数据量和什么数据的问题。现实场景中,企业往往有大量业务数据和权限需求,在设置数据权限时如何实现数据权限的精准定位,是产品在设计时所考虑的一个重要因素。由此,本产品提供行和列级别的数据权限控制粒度,通过对同一张表进行行权限和列权限的配置,就可以精准实现数据权限的高效配置。
假设这样一个场景:小王的公司在“东北、华北、华东、华南”四个大区都有销售人员,他希望不同大区的销售访问同一张报告时候,都只能看到自己所属大区的数据,这时用“数据行级权限”可以实现这样的需求。
创建4个“数据行级权限”,每个“数据行级权限”只能访问一个大区的数据,然后给不同大区的销售人员分配对应的“数据行级权限”。例如东北大区的销售人员只能看到“东北”地区的数据,我们可以建立一个“数据行级权限”,然后设置数据访问权限,只允许该角色成员访问“东北”地区的数据,然后将该“数据行级权限”赋予东北大区的销售人员即可。
4.2 属性对应 动态匹配
使用上述方法时,当我们存在多少个大区,就需要创建对应数量的“数据行级权限”。当组织人员规模达到一定程度后,管理复杂度往往呈几何增长,这样的设置方式必然需要大量的时间成本和人力成本来维护。同时考虑到组织内不同人员所能拥有的数据权限往往与TA所在的部门、岗位或地区有一定的映射关系,那么能否提供一种简便的设置路径,能够直接对不同部门的用户匹配不同的行级权限呢?
基于此,我们在数据权限的创建页提供了固定值和属性值的配置选项,当选择属性值时,就可以通过设置属性值与对应字段的匹配,例如将“属性值-地区”与字段“地区匹配”,就能让不同地区的成员只能看到对应地区的数据,从而提高行级授权的管理效率。
(1)首先在企业域管理-人员信息-属性列表-设置一个属性值“地区”,在对应用户后输入东北或其他地区;
(2)创建一个“数据行级权限”,选择要设置权限的数据连接,设置方式选择“动态值”,选择要设置权限的表跟字段,选择要匹配的用户属性,在本例中,即将“地区”字段匹配“地区”属性;
(3)保存后,将该“数据行级权限”分配给所有用户,则每个用户访问报告时会根据该用户所在大区来筛选数据,只能看到自己大区的数据。
5. 操作权限
与资源权限一样,操作权限的设置和赋予也是完全通过角色来实现,帮助用户基于角色来实现权限的统一管理。本产品的操作权限包括:
- 报告:新增(新建报告、新建文件夹)、查看、导出、复制、编辑、分享、推送、预警
- 数据大屏:新增(新建数据大屏、新建文件夹)、编辑和阅览
- 复杂报表:新增(新建复杂报表、新建文件夹)、查看、编辑、引用、复制
- 数据门户:新增(新建数据门户)、编辑
- 数据模型:新增(新建数据模型、新建文件夹)、编辑、复制、预警和查看
- 数据连接:新增(新建数据连接、新建文件夹)、编辑、查看、新建模型/准备、自定义SQL、SQL取数和更新数据,
- 数据填报:新增(新建表单、新建文件夹、发起流程)、数据查看、表单查看、数据管理、编辑