在企业级的业务场景中,权限是企业安全最重要的保证,在两年前的推文中(权限体系设计 | 网易有数BI功能品鉴)曾为大家介绍过有数BI的权限体系设计,其核心是通过资源权限(能看到哪些报表)和数据权限(能看到报表上的哪些数据)来更好的保护企业的数据安全。
今天我们来聊一聊资源权限,在V8.8版本之前,有数BI中资源权限的设置和赋予是通过角色来实现的。这样的设计可以帮助用户基于角色来实现权限的统一管理,降低企业设置权限体系的复杂程度,但也失去了一定的灵活性,比如:
管理员期望对用户A赋予某个数据大屏的单独查看权限,是不是得先建个角色?
用户A点开某个报表的链接发现无权查看,随即就找管理员授权,但管理员可能并不清楚用户A适不适合看到这个报表,还得找上级请示......
基于上述问题,近期我们对资源权限部分做了升级,从管理员赋权到用户主动申请权限,实现精细化管控。
01 管理员赋予权限
1. 从用户角度配置
假设现在你是一名项目管理员,依次点击项目中心-权限管理-用户管理,然后在用户列表中选择你需要授权的用户,然后点击【授权】按钮。
在弹出的界面即可调整用户的资源权限。
2. 从资源角度配置
假设你是一名项目管理员,依次点击项目中心-权限管理-资源权限管理,即展示当前项目下的所有资源,可通过下拉菜单筛选资源类型。我们以报告资源授权为例:
点击【添加成员】按钮,搜索添加当前项目中的用户/用户组/部门,然后选择需要赋予的权限;点击确定后,即完成资源授权,下图中被添加的用户/用户组/部门即获得该报告的查看、复制数据和编辑权限。
你还可以对已授权的用户/用户组/部门进行调整权限或移除,支持批量操作。
02 用户主动申请权限
先回到前面的问题:用户A点开某个报表的链接发现无权查看,随即就找管理员授权,但管理员可能不清楚用户A适不适合看到这个报表,还得找上级请示......
其实这个流程让用户直接找有决策权的人申请权限才是更优解法,那么在产品中就需要做两件事,一是需要无权资源仍可见,意为让没查看权限的用户不至于啥都看不见(至少能看见标题),然后可以主动发起申请;二是开启并配置审批流程,让有决策权的人(如资源创建人、部门主管)在线审批。
1. 开启无权资源仍可见
假设你是一名项目管理员,依次点击项目中心-权限管理-角色管理,在角色编辑界面勾选“无权仍可见”选项后保存(已支持报告和数据填报,后续将支持其他类型资源),之后拥有该角色的用户就可以通过资源列表或者链接看到没有查看权限的资源,但只能看到标题。
到这里细心的同学会发现,只看标题并其实没有什么用,应该再给一个资源申请查看权限的入口。
2. 开启并配置审批流程
假设你依旧是一名项目管理员,依次点击项目中心-审批管理-资源权限审批,选择需要设置审批流的对象(已支持报告和数据填报,后续将支持其他类型资源),然后配置审批流程:
为支持用户自定义配置审批流,我们引入了流程引擎,以节点、有向线条、配置界面为核心来配置数据和任务流转路径。下图为一个简单的审批流程在流程画布上配置审批流,流程中一共有4种不同类型的节点,分别具有不同的功能。
开始节点:代表流程的开始,是整个流程的入口,如用户提交了申请
结束节点:代表流程的结束,是整个流程的出口,如最后一个节点完成审批
用户任务:需要用户完成操作的节点,如审批、编辑;可添加多个,节点间通过线路
连接网关:基于内容动态选择任务流转路径的节点;可添加多个,节点间通过线路连接
在用户任务中,审批人支持选择用户、角色、资源创建人、汇报关系、部门负责人、直属部门负责人六种类型。审批指定支持直接指定(预先设置)和审批人指定两种方式多人;审批方式支持会签(所有审批人同意)和或签(一名审批人同意)两种方式。
在审批流程配置完成并开启后,无查看权限的用户再次打开链接,会看到一个【申请权限】按钮,如下图所示:
然后申请人就可以按照提示申请自己需要的权限类型了。
3. 审批人执行审批
申请人发起资源权限申请后,审批任务流中匹配到的用户就会收到审批消息提醒(系统消息、邮件、短信、钉钉全方位覆盖),用户通过消息进入审批界面,查看申请信息后执行审批。下图为审批示意:
待所有流程环节通过后,申请人即可获得该资源的申请权限项。
03 权限类型
不同的资源在权限类型上会有所区别,借此机会在这里简单列举下,方便同学们在配置权限时参考使用:
报告:查看、编辑、复制、推送、导出、预警、分享、复制数据
数据大屏pro:查看、编辑、复制、分享、导出
复杂报表:查看、编辑、引用、复制、推送
数据门户:编辑
数据模型:查看、复制、编辑、预警、可视化取数、可视化取数复制数据、可视化取数导出、可视化取数分享
数据准备:查看、编辑、复制、可用
数据连接:查看、新建模型/准备、编辑、自定义SQL、分享、输出表数据、SQL取数、SQL取数复制数据、SQL取数导出、SQL取数分享
数据填报:发起流程、数据查看、数据管理、表单查看、编辑
我们可以把不同的资源授予不同的用户组、部门或者用户,最终用户所拥有的资源权限为该用户所属部门的权限+该用户所属用户组的权限+该用户所属角色的权限+该用户自身权限的一个并集。管理员可在项目中心-权限管理-用户管理-权限详情中查看用户的最终权限。
04 下一步规划
后续的版本中,我们将在用户申请资源权限的基础上,支持用户为其他成员申请此资源权限,这里的其他成员可以是项目内的用户、用户组或部门。该功能在减轻管理员工作量的同时实现资源权限更灵活的管控。
在数据权限方面,我们将支持基于列权限的数据脱敏,对不同用户设置数据字段的查看权限,例如对某些用户脱敏某个字段,且可以设置不同的脱敏规则。