以管理员帐户登录,“安全”菜单下有如下五个子菜单,分别为用户,角色,基本权限,视图/菜单,视图/菜单权限。
图一:安全菜单的子菜单
这五个概念就是Superset安全的核心概念,关系如图二所示:
图二:安全概念的关系
“权限”代表系统中所能进行的操作,例如增删改查。“视图/菜单”,表示系统中所能操作的对象例如菜单,视图,数据源,面板。两者的组合就是“视图/菜单权限”,表示能对系统中哪些对象进行怎样的操作。
“角色”可以分配多个“视图/菜单权限”,是一系列“视图/菜单权限”的集合。
“用户”可以分配多个“角色”,是一系列“角色”的集合。
权限自动维护
你会发现“权限”列表界面并没有新增和删除功能。如本系列的第一篇介绍,Superset的web框架是Flask App Builder(FAB),FAB框架会检测代码,将代码中对应的权限,菜单/视图以及其组合识别出来,罗列在权限列表中。同样,“视图/菜单”和“视图/菜单权限”也是框架自动识别出来的。
例如,view/core.py的如下的代码(图三),视图类“Superset”,通过“@expose”修饰方法“datasources”,那么框架就会生成can datasources Superset的“视图/菜单权限”。在“视图/菜单权限”验证,果然有对应的项存在(图四)。
图三:Superset类的代码片段
图四:菜单视图权限页面的
can datasources Superset项
除此之外,对应Superset中自有的对象的权限也是自动生成。例如,面板,切片,数据库,数据源等,是在创建对应的对象实例的时候,自动添加。图五对于新增的数据库“main”,添加了对应的权限“datasource_access”和“database_access”。
图五:自动添加数据库的对应权限
角色
安装完成之后,系统默认安装两个角色,“Admin”和“Public”。如果在安装过程执行了“superset init”,将会创建默认的角色和权限,会新增权限“Alpha”,“Gamma”,“granter”和“sql_lab”。关于这些权限的使用场景,将会再下一节介绍。
领取专属 10元无门槛券
私享最新 技术干货