Superset--权限控制

本文介绍了Superset初始化后的5个角色及其权限,如Admin拥有所有权限,Public默认无权限。还说明了匿名访问看板的设置步骤,以及如何根据不同业务部门需求,通过组合角色来控制数据访问,最后介绍了创建新角色和用户并关联权限的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

角色权限介绍

  • Admin:拥有所有权限
  • Alpha:能访问所有数据源,增加或者更改数据源,但不能给更改其他用户权限。
  • Gamma:必须结合其他能访问数据源的角色才能访问数据。这个角色所能访问的切片和看板,也是基于能访问数据源所创建的切片和看板。
  • sql_lab:能访问SQL Lab菜单。
  • Public:默认没有任何权限

匿名访问

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

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

vim /export/servers/anaconda3/lib/python3.7/site-packages/superset/config.py
  • 2、需要运行superset init命令,这个命令会给“Public”角色设置与“Gamma”一样的权限
superset init
  • 3、将匿名用户所需要访问的数据库和数据源分配给“Public”角色。例如,基于superset_demo数据库的grade_test创建了看板,如果匿名用户需要查看这个看板,那将如下权限分配给“Public”。
all database access on all_database_access
all datasource access on all_datasource_access
  • 分配权限
    在这里插入图片描述

  • 删除一些菜单权限
    在这里插入图片描述

  • 分享页面或者嵌入html
    在这里插入图片描述

  • html页面:

<html>
<head>
<title>dashboard</title>
</head>
<body>
    <div class="dashboard">
       <!-- <iframe src="http://node3:8080/superset/dashboard/7/"  style="height=100%; width=100%" ></iframe > -->
        
        <iframe name="myframe" src="http://node3:8080/r/10" frameborder="0" scrolling="auto" width="100%" height="100%" onload="document.all['myframe'].style.height=myframe.document.body.scrollHeight" ></iframe>
    </div>
    </body>
</html>

角色介绍

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

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

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

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

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

  • 角色介绍
    在这里插入图片描述

  • 我们创建2个角色,分别是main角色可以查看访问main的数据,

  • examples角色可以查看和访问 examples 数据源。

  • 1、创建 main 角色

    • database access on [main] 拥有访问 main 数据库的权限
    • datasource access on [main] 拥有访问main 数据源的权限
    • can dashboard on Superset 拥有访问 main 数据源创建的 dashboard的权限
      在这里插入图片描述
  • 2、创建examples角色

    • database access on [examples] 拥有访问 examples数据库的权限
    • datasource access on [examples] 拥有访问examples数据源的权限
    • can dashboard on Superset 拥有访问 examples数据源创建的 dashboard的权限
      在这里插入图片描述

3、创建用户

  • main_user: 关联gamma、sqllab与main角色;
    在这里插入图片描述
  • examples_user: 关联gamma、sqllab与examples角色
    在这里插入图片描述
  • 用不同的用户登录查看每个用户具有的table,以及能查看到的dashboard!!
### 导出 Apache Superset 用户组权限配置 在Apache Superset中,用户管理和权限控制是由Flask AppBuilder (FAB) 处理的[^2]。为了导出用户组及其对应的权限设置,可以通过以下几种方式实现: #### 方法一:利用API接口 如果部署环境允许访问REST API,则可以直接调用官方提供的API来获取所需的信息。 ```bash curl --location 'http://localhost:8088/api/v1/role/' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' ``` 此命令会返回所有角色以及它们所具有的视图菜单和权限列表。注意替换`YOUR_ACCESS_TOKEN`为实际有效的认证令牌。 #### 方法二:编写Python脚本连接数据库查询 另一种方法是直接操作存储这些信息的关系型数据库表结构。通常情况下,Superset 使用 SQLAlchemy 作为 ORM 工具,并且大多数关系型数据库都支持 SQL 查询语句执行。下面给出一段简单的 Python 脚本来完成这项工作: ```python from sqlalchemy import create_engine import pandas as pd engine = create_engine('postgresql+psycopg2://username:password@host:port/superset') query = """ SELECT r.name AS role_name, p.permission AS permission_name, v.name AS view_menu_name FROM ab_role r JOIN ab_permission_view_role pr ON r.id = pr.role_id JOIN ab_permission p ON pr.permission_id = p.id JOIN ab_view_menu v ON pr.view_menu_id = v.id; """ df = pd.read_sql(query, engine) df.to_csv('./roles_permissions.csv', index=False) print("Export completed.") ``` 这段代码将会把所有的角色名称、权限名及视图菜单保存成CSV文件形式存放在当前目录下名为 `roles_permissions.csv` 的位置上。请根据实际情况修改数据库连接字符串部分的内容以适应自己的安装情况。 #### 方法三:手动记录 对于小型部署或一次性需求来说,也可以考虑登录Web界面逐个查看各个用户组的具体权限分配状况并手工整理出来。不过这种方式效率较低而且容易遗漏细节,在大规模生产环境中并不推荐采用这种方法。 以上就是关于如何导出Apache Superset 中用户组权限设定的方法介绍。希望这些建议能帮助解决遇到的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值