|
是否还在被权限搞的晕头转向,是否还在不知道设置什么权限烦恼。不用担心,本文将每个权限进行说明,一文教会你什么场景下,应该配置什么权限。
Smartbi提供了多层次、细粒度的权限管理体系,支持按用户、用户组、角色进行统一管理,实现对操作权限、资源权限和数据权限的精准控制。该体系以“最小权限原则”为核心,确保系统安全与业务灵活性兼顾。下面我们就一个个来进行说明。
权限类型
|
权限说明
|
使用场景示例
|
对象
|
操作权限
|
控制用户能点哪些按钮、能做哪些操作
|
张三用户不能开发报表,只能浏览报表
|
角色
|
资源权限
|
控制能看到哪些资源,资源树里显示什么
|
李四能看到A报表,但是无法编辑保存,同时无法查看B报表
|
用户、用户组、角色
|
数据权限
|
控制用户能查哪些数据
|
同一张报表,张三只能看到自己的数据,同理李四也是,但管理员用户看到的还是全部的数据
|
用户、用户组、角色
|
一、操作权限
操作权限顾名思义跟前面两个字操作有关系,是控制用户能操作什么,能干什么,比如,控制业务用户是否有新建仪表盘的权限。
1.1、入口
针对角色配置,入口:运维设置—用户/机构/角色管理,找到对应角色进行配置操作权限配置,具体如下图。

点击后是下图的效果,那接下来就可以根据实际需求勾选对应的权限就好啦。

1.2、半勾选“-”
有些手速快的小伙伴会发现,点击了一次之后,是打勾的,再点击一次,变成了 - ,这是啥意思呢

这个实际上是,分析展现下方配置的权限正常生效,但是不给看到分析展现目录。比如下图中,用户可以通过数据门户(发布的主题)导出报表,但是并不想用户看到分析展现整个目录,此时则分析展现目录可再勾选形成半勾选状态,打开仪表盘时可以有下载按钮,且用户无法看到分析展现的入口。
 
当用户有多个角色,只要任意一个角色有对应操作权限,此时这个用户都有对应权限,也就是多个角色的并集。
二、资源权限
资源授权是指对角色、用户组及用户进行资源权限的分配,控制用户能否看到、编辑、或再授权某些资源。
2.1、入口
①入口一:用户管理对角色授权:运维设置—用户/机构/角色管理,找到对应角色,点击资源授权。
 
②入口二:右键资源授权:针对具体资源,右键,选择资源授权选项,可授予给用户、用户组、角色。
 
那有些小伙伴就有点纳闷了,两边都能配置,那权限是咋作用的呢?
虽然系统支持对角色、用户、用户组分别授权,但最终所有权限都会落到用户身上。比如:
- 右键或用户管理给角色 user 分配了某个资源权限,那么拥有这个角色的所有用户,都会自动获得该权限;
- 右键对某个资源给用户组授权,那么这个用户组里的所有用户,也会自动获得对应权限;
- 右键对某个资源给用户授权,那此用户获得该权限。
对单个用户来说,他的最终权限 =所属用户组的权限 + 所拥有角色的权限+直接授予给此用户的权限,这三部分权限取并集,就是他实际拥有的全部资源权限。
2.2、权限类别
权限名称
|
说明
|
引用
|
相当于使用权限,资源树无法看到,但可以实现借助其它资源查看数据。
如报表有查看权限,它依赖的数据集、数据源等需至少有引用权限,报表才能正常的进行查看。
|
查看
|
允许用户在资源树中查看到资源节点并且可以打开浏览。
|
编辑/删除
|
允许用户修改、删除资源。
|
转授权
|
允许用户将资源权限授权给该用户组织架构下的其它用户、角色、用户组。
|
概览
|
只允许用户通过“数据快查”功能查看部分脱敏数据。(只有数据准备、数据连接那里才会有此配置项,用于数据导航使用:数据导航)
|
2.3、授权作用于
接着我们看下“授权作用于”这一列,我们下拉后可以看到有只有本节点、本节点及子节点,一共两个选项。具体有什么区别呢?让我们来实践出真理。

当我对数据链接授予查看权限,授权作用于分别选择只有本节点、本节点及子节点,具体效果如下:
 
细心的小伙伴可能已经发现,[数据连接]目录下方的「张三」和「system」的权限展示是有区别的,核心就在于授权范围:
- 选择 本节点及子节点:权限会同时作用在当前节点和所有下级子节点,所以下方资源会默认继承父节点权限,呈现勾选状态。
- 选择 只有本节点:权限仅作用在当前选中的节点上,下级资源不会继承权限,所以下方不会自动勾选。
当勾选了本节点及子节点,下方资源右键资源授权的时候,右上角会勾选上了“从父节点继承权限”,此时下方那里会发现有置灰的记录,这个就是从父节点继承的,从父节点继承的权限无法进行修改,要修改只能是父节点修改权限,或当前节点不需要继承权限也可根据实际调整。

2.4、everyone
相信挺多小伙伴对这个everyone都挺熟悉的,也可能被它坑过。everyone并非一个用户或角色,是有ADMINS超级管理员角色用户,进行右键资源授权时候可以选择到,当授权后,那所有用户都有对应的权限,实际上也是为了方便一些所有人都需要权限的场景。

PS:产品每个模块父目录,如分析展现目录、数据集目录等,均会给everyone查看权限。
2.5、依赖资源权限
依赖资源权限,是个非常非常非常好用的功能,当我们针对报表授权的时候,那用户要正常打开报表,它所引用的数据集、数据源等,就必须至少有引用的资源权限,否则打开会提示没有XX资源的引用权限。
那如果报表比较复杂,来源比较多,一个个授权是不是很麻烦,这个时候依赖资源权限的作用就出来了,我们可以点击一下按钮,报表依赖的资源默认给引用权限,解放双手~
入口:


PS:依赖资源授权是基于索引去实现的,当出现依赖授权后依赖的资源还是没有权限,可检查下右键血统性分析是不是没有内容,如果没有则说明索引有问题,可考虑重建下索引:重建索引
三、数据权限
数据权限,那就是控制用户能看到什么数据了,比如,一张表存储了所有人的数据,但是想控制报表展示的时候每个人只能看自己的,这个时候就可以通过数据权限控制,限制用户看到的数据 。
说完了功能, 我们再来聊聊怎么配:
3.1、对数据源配置
找到对应需要配置的数据源,右键设置数据权限。

接着找到对应表,右键设置即可,右侧就是对应点击设置后的效果。

点击添加后界面如下:

其中「适用于」用来配置权限对哪些用户生效;同理,也可以配置「不适用于」的用户,排除不需要该数据权限的人员。具体可根据实际业务需求灵活设置。
默认是简单设置,可直接对字段配置,可等于静态值(手动输入或从字段值里面选 )或动态的用户属性、函数。如区域数据等于当前登录用户默认所属组,或城市等于北京市,且订单日期大于2026年1月1日。

此时配置好了两个条件,但是他们俩的关系应该是or,这个时候就需要用到右下角的设置查询关系功能了,点击之后,可自由拖动进行组合,且点击and那块可切换为or,配置好后点击确认即可。

数据权限的本质在于动态构建 SQL 的 WHERE 过滤条件。系统通过结合内置系统函数与用户属性,根据当前登录用户自动生成对应的过滤条件,不同用户登录时,执行的 WHERE 条件不同,从而实现数据权限的动态隔离与返回。
以上述配置为例,当使用 admin 用户登录查询时,后台监控到的实际执行 SQL 中,WHERE 条件会自动带上 admin 所属根组相关的过滤规则,同时根据配置的关系拼上另外两个条件,仅返回该用户有权查看的数据。

高级设置:无法通过简单对字段配置条件,此时可根据实际自行编写对应条件,如下图。

就类似截图中的那个示例表达式~
3.2、数据集层面配置
1)数据模型
入口跟数据源配置一样,右键设置数据权限。此时再根据实际选择对应子查询配置即可,配置入口方式跟上面数据源配置是一样的。
 
除了直接右键设置数据权限外,模型里面支持写SQL,SQL里也可以根据实际编写实现对应数据权限,接下来我们来看看怎么个配置法。
前面我们有提到数据权限配置后实际上就是拼接到where那部分限制输出,那我们写SQL的时候完全可以自己where条件写的,例如下图。

那有些小伙伴可能就好奇了,如果我数据源配置了数据权限,SQL查询这里生效吗?
答案是,在之前是不生效的,后面我们支持啦,开启配置项,那原生SQL也可以继承对应权限,具体可以看对应说明文档:SQL查询/数据集支持权限控制。
模型抽取场景
产品也支持抽取场景下的数据权限配置,配置入口与直连是一致的,推荐使用右键设置数据权限。因为如果是原生SQL配置了where条件,比如动态获取当前登录用户名,此时抽取时候,那抽取用户是谁,就会抽取那个用户的数据,故此时数据权限会控制不到。
若一定要SQL那边控制,如能直连,可配置为直连,此时就是根据SQL配置的逻辑取数,若模型不满足直连要求,必须切换为抽取模型,则建议可使用查询动态抽取(原:按次抽取),具体功能说明可查看此wiki:直连&抽取。
2)旧数据集
旧数据集中,分别分为两类:一类是直接右键授权的,如:业务主题、自助数据集,另一种是直接写SQL,如SQL数据集、原生SQL数据集。
直接授权可参考上面数据源配置的操作,整体操作一样。
SQL数据集、原生SQL如是低版本,原生SQL数据权限不生效的情况下,则需SQL逻辑处理好,如高版本需写SQL也继承数据源的权限,需开启对应配置项:SQL查询/数据集支持权限控制
3.3、有个特殊的它-用户属性
有一个特殊的配置,叫用户属性,这,又是干嘛用的呢?
它其实,主要是通过表达式及函数动态获取用户的某项特征,也是用于数据权限设置为主。
比如无法直接根据当前用户的信息获取到机构信息,则需要用户和机构的映射表,然后创建用户属性从映射表中根据不同的用户获取机构信息。
有以下入口:
入口1:展开资源目录区,在“全局资源定义”左侧节点下文件夹的 选择 用户属性 新建 > 用户属性,选择数据源之后,进入“新建用户属性”界面。
入口2:在“全局资源定义”界面主菜单选择 用户属性。

怎么用呢,其实和上面配置数据权限的是类似的,不过更多是结合系统函数去使用,For example:
①设置用户属性。
例如新建一个用户属性叫做"当前用户所属机构",此用户属性需要达到的目的是:根据当前登录用户的用户名,从数据库表中查出用户的所属机构名称。
表达式如下:

按照上述设置我们就得到了一个用户属性,接下来就是这些用户属性的使用场景。
②设置数据权限。
场景一:使用该用户属性在数据源表上设置数据权限。
例如某个数据源表如机构表需要实现每个用户进入系统查看数据时,只能查看其所属机构的数据的效果。那么可以在机构表上设置数据权限时,按照如下设置使用对应的用户属性。

场景二:使用该用户属性在数据模型的SQL中设置数据权限。
例如构建数据模型时,需要在其SQL查询中实现数据权限控制,使得用户登录进入系统,只能查看其所属机构的数据的效果。那么可以在SQL语句的where 部分中,拼接上 机构名称 = GetUserProperty('当前用户所属机构') 来实现。
注意:“当前用户所属机构”必须是手动输入的文字,而不是拖拽的用户属性,否则会报错。

无论场景一还是场景二,实际上和上面的是类似的,都是执行用户属性中的表达式,并将用户属性返回的值拼接在对应的SQL/MDX语句中进行查数。
除了用在数据权限外,仪表盘的筛选器默认值里面也有个特殊值设置,可以选择自定义好的用户属性,这样也可以根据用户属性里面查到的值来设置筛选器的默认值:

四、问题排查
4.1、操作权限
操作权限只能对角色配置,所以当用户操作权限有问题时候,则可看用户拥有的角色,再进行看对应角色的操作权限。产品也有内置的一张报表查看用户已有的权限列表。

如是检查自己是否有对应操作权限,可从右上角点击 个人中心—我的设置—拥有的权限,查看当前登录用户的操作权限列表。如果没有某些模块操作权限,但是又需要对应权限,那联系对应管理员给对应权限即可~
 
4.2、资源权限
当用户存在权限异常:看到无权资源 / 有权却无法访问。此时将如何排查呢?
前面有提到用户拥有的资源权限=所属用户组的权限 + 所拥有角色的权限+直接授予给此用户的权限,这三部分权限取并集。所以我们可以针对具体异常资源进行查看,直接右键资源查看,主要排查以下几点:
1、检查右键资源授权下面直接授予的角色、用户、用户组情况(需要注意存在用户继承用户组角色的场景);
2、检查继承父节点的资源权限情况;
3、检查是否有everyone,如有everyone,那所有人都会有这个权限;
4、如对应资源有资源权限,但是资源树看不到,需检查是否父目录没有权限,导致资源树无法看到父目录节点,从而无法展开看父目录下方的资源。
除此以外,我的工作区属于私密目录,仅本人可见,其他用户无法查看。因此该目录下的资源不支持授权给其他用户,既没有右键授权入口,在用户管理与角色授权界面中,也不会展示我的工作区及其下属资源。故出现用户没有资源授权入口时,可先确认是否是我的工作区的资源,如不是再进行检查对应资源权限情况。
4.3、数据权限
数据权限本质还是SQL where动态控制返回数据,所以此时如果配置数据权限后,数据异常,可先获取报表执行SQL进一步分析SQL逻辑,再去匹配对应配置的权限情况,关于如何获取执行SQL可查看此前的推文:如何找SQL看数据不对问题(旧数据集)、如何找SQL看数据不对问题(数据模型)
以上就是本期的内容,也欢迎大家在评论区交流日常配置小妙招~
恭喜你已阅读完全文,来做做题巩固下学习内容,答题可赢取麦豆哦——>点击领取任务 |