首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(4)Superset权限使用场景

如前文所述,Superset初始化权限之后,创建5个角色,分别为Admin,Alpha,Gamma,sql_lab以及Public。Admin,Alpha和Gamma角色,分配了很多的菜单/视图权限,如果手工去修改,改错的可能性很大,加之Superset并没有说明每一项权限的完整文档,所以不建议去修改这些角色的定义。灵活使用预置的角色,可以快速满足业务上安全控制需求。

本文先介绍这几个角色,然后结合实际的安全访问控制的场景,看在Superset中怎样实现。

角色权限介绍

Admin:

拥有所有权限。

Alpha:

能访问所有数据源,增加或者更改数据源,但不能给更改其他用户权限。

Gamma:

必须结合其他能访问数据源的角色才能访问数据。这个角色所能访问的切片和看板,也是基于能访问数据源所创建的切片和看板。

sql_lab:

能访问SQL Lab菜单。

Public:

默认没有任何权限。

下面列举几种业务需求,看怎样应用这些角色来满足。

匿名访问

所有用户都能访问某一个看板,需要进行如下设置:

(1) 更改config.py文件,设置如下部分,PUBLIC_ROLE_LIKE_GAMMA = True

(2) 然后需要运行superset init命令,这个命令会给“Public”角色设置与“Gamma”一样的权限。官方文档并没有说明必须要运行这个命令。如果你是在安装过程中已经运行了“superset init”命令,你再设置“PUBLIC_ROLE_LIKE_GAMMA = True”,这个设置将不起作用。但你可以手动给“Public”角色分配与“Gamma”一样的权限(巨大的工程)。或者你熟悉superset的表结构,也可以通过sql语句来批量分配。

(3) 将匿名用户所需要访问的数据库和数据源分配给“Public”角色。例如,基于main数据库的ab_permission_view创建了看板,如果匿名用户需要查看这个看板,那将如下权限分配给“Public”。

图一:将需要访问的数据库

和数据源添加给Public角色

完成上述步骤之后,匿名用户可以看到菜单(请参考图二)。

图二:Gamma的权限能访问的菜单

能访问的菜单较多,这是因为“Gamma”所拥有的权限比较多,“Public”所拷贝的菜单也会很多。如果只想让匿名查看具体的一个看板(但不能查看看板列表,切片列表,数据源列表等等),可以简单的将如下权限分配给“Public”角色,请参考图三。

图三:查看某一个看板所需要的最小权限

接下来验证看是否匿名访问这个看板,管理员用户访问看板列表,复制(参考图四)看板的链接地址。

图四:复制看板的链接地址

用隐私模式打开浏览器,粘贴上一步拷贝的地址,不用登录,匿名用户就可以看到对应看板。如果想访问其他的地址,会转到登录窗口,需要输入用户名和密码。

图五:匿名用户能访问指定的看板

角色权限介绍

实际业务中,不同的职能部门访问的数据不一样,例如财务部需要访问成本,应收,应付等数据,供应链需要访问库存数量,发货数据等,怎样简洁的设置,快速满足这种业务需求?

如前文所述,“Gamma”拥有大部分基础的权限,但是必须结合其他能访问数据源的角色才能访问数据。所以,可以给用户分配“Gamma”角色和针对部门分别创建的数据源角色来进行控制。

例如,针对财务用户,创建角色“Finance”,将成本,应收,应付的数据表权限赋予这个角色,财务用户就分配“Gamma”和“Finance”。

针对供应链用户,创建角色“SCM”,将库存和发货数据表权限赋予这个角色,供应链用户就分配“Gamma”和“SCM”。

如果是公司的霸道总裁,需要看所有的看板,就可以给霸道总裁赋予“Gamma”和“Finance”,“SCM”角色。

说明图请参考图六。

图六:Gamma结合创建角色实现

数据源的访问控制

字段级别控制

实际业务还有需要在字段级别控制访问的需求,例如HR部门中,HR员工可以看员工的基本信息,但是薪酬部的同事需要查看员工的薪酬数据。所以需要控制薪酬数据字段的访问。

一种直观的想法,根据上一节“按职能部门访问不同数据”的方法,建立两个角色,一个角色可以访问表只包含员工基本信息,另一个角色可以访问的数据表还包含薪酬数据。这样也是可以满足需求。

其实Superset可以在字段粒度上进行控制,但在当前版本(0.22.1)上,有用户提交issue,尚未解决。先可以了解步骤,等待问题解决了,将来在新的版本中可以设置。对应的步骤如下:

(1) 编辑表的对应的指标列,将“Is Restricted”选中,请参考图七

图七:设置指标列的访问控制

(2) 系统会针指标列(例子中指标列为“rev”)创建类似“metric access on [main].[ab_permission_view].[rev](id:1)”权限,然后将这个权限分配给需要访问这一列的角色。

这样可以实现字段基本的控制。Github关于这个问题的Issue可以参考如下链接:

https://github.com/apache/incubator-superset/issues/3938

https://github.com/apache/incubator-superset/issues/2326

本文列举了权限使用几种场景,以及在Superset中怎样通过设置来满足权限的需求。关于安全的更深入的应用,例如怎样和其他系统集成,等待后续整(li)理(jie)之后再分享。写完这篇,2018年的大门就要悄悄打开了,我很向往。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171224G0G8F100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券