(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年的大门就要悄悄打开了,我很向往。

本文来自企鹅号 - haiyunclassone媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏知晓程序

小程序管理员的权限,怎么移交给他人?| 小程序问答 #39

小程序发布后,如果小程序负责人离职或岗位变动,负责人该如何将小程序管理员移交出去呢?

15930
来自专栏跟着阿笨一起玩NET

Win8找不到无线信号怎么办

  开启无线上网需要三个层次的设置需要开启:物理开关,软件开关和无线服务。只有开关都打开无线指示灯才会亮。当指示灯亮但是仍然无法搜索到无线网络信号的时候,要检查...

10620
来自专栏我的安全视界观

【应急响应】redis未授权访问致远程植入挖矿脚本(防御篇)

43940
来自专栏Django中文社区

Django开发社交类网站必备的10个第三方应用

Django 的好处就是大而全,不仅内置了 ORM、表单、模板引擎、用户系统等,而且第三方应用的生态也是十分完善,开发中大部分常见的功能都能找到对应的第三方实现...

39970
来自专栏idealclover的填坑日常

Ubuntu 18.04/16.04系统安装网易云音乐无法启动或安装解决方案

由于netease-cloud-music_1.1.0_amd64_ubuntu.deb打包可能有问题,在Ubuntu 16.04/18.04版本中虽然可以安装...

95930
来自专栏QQ音乐技术团队的专栏

KV存储跨IDC容灾部署

1.背景   目前部分KV存储不支持跨IDC部署,所以如果有机房故障的话,就会影响KV存储的可用性。本文提供了一种通过KV存储代理层来实现跨IDC容灾部署的方案...

38080
来自专栏安恒信息

关于最新Struts2 S2-045漏洞修复措施的几点重要说明

近日,安恒信息安全研究院WEBIN实验室高级安全研究员nike.zheng发现著名J2EE框架Struts2中存在远程代码执行的严重漏洞。目前Struts2官方...

26940
来自专栏小白的技术客栈

系统入侵后的排查思路及心得

入侵后的总结 入侵后的总结 昨天发布Linux被入侵及其如何检查,今天这一篇主要是一些排查思路,仅供大家参考。 ? 写在前面 首先,确保系统密码符合密码复杂...

41460
来自专栏FreeBuf

真实网站劫持案例分析

1. 概述 上段时间一直忙于处理大会安全保障与应急,借助公司云悉情报平台,发现并处置几十起网站被劫持的情况。对黑客SEO技术颇有感觉。正好这段时间有时间,把以前...

93950
来自专栏微信公众号:Java团长

微信公众号支付功能开发(Java版)

下单和修改支付状态是用户的业务系统干的事,我们来说说如何快速发起支付和接收异步通知。

17310

扫码关注云+社区

领取腾讯云代金券