在企业生产环境中,用户权限管理是非常重要的一个环节,涉及数据安全管控。Superset 实现了基于角色的访问控制(Role Based Access Control, RBAC), 这是一种非常流行和高效的访问控制机制。RBAC 可以将复杂的安全权限规则抽象为简单的角色概念, 通过为用户分配角色实现其对数据和对象的控制。
RBAC的基本原理
RBAC(Role-Based Access Control)是一种基于角色的访问控制机制。其基本思想是:
- 将权限分配给角色, 而不是直接分配给用户。一个角色包含一组权限。
- 将用户与角色进行关联, 一个用户可以被分配一个或多个角色。
- 用户通过所拥有的角色间接获得权限。
RBAC有以下基本规则:
- 分离职责: 创建角色时按职责进行分离, 如普通用户角色、管理员角色等。
- 最少权限: 每个角色分配的权限应该是其工作职责所需要的最少权限。
- 不可传递的角色继承: 如果角色A继承角色B, 则A拥有B的所有权限, 但B不拥有A的权限。
- 角色指定: 用户只能通过被分配的角色获得权限, 不能直接获得权限。
- 相关的角色和权限: 将权限按职责进行分组并赋予角色可以简化管理。
RBAC通过上述规则实现了权限与角色的解耦, 使用户、权限、角色三者之间建立了清晰的关联关系。这使得权限的授权管理变得非常灵活与简单。通过为用户分配适当的角色, 就可以实现对其访问权限的控制, 这是RBAC流行于各大系统的基本原因。
Superset就采用了RBAC实现细粒度数据访问控制,通过创建不同的角色并分配相关权限,再将角色赋予用户或用户组, 可以实现对数据、查询、仪表盘等的安全管理。
Superset 管理用户和权限
Superset可以有效地管理用户, 主要包含以下功能:
- 创建用户
可以在Superset的“用户管理”页面点击“+ 新建用户”按钮创建一个新的用户。需要输入用户名、密码、确认密码、邮箱等信息。
- 修改用户信息
在“用户管理”页面选择一个用户,点击“编辑”按钮可以修改其信息,包括用户名、密码、邮箱、是否激活状态等。
- 删除用户
在“用户管理”页面选择一个用户,点击“删除”按钮可以彻底删除该用户。删除后,该用户的一切访问权限、内容均会被删除。
用户组管理
可以在Superset里创建用户组,将多个用户放在同一个用户组里统一管理。在“用户组管理”页面可以创建、修改和删除用户组。-
权限管理
Superset采用角色权限管理的模式。有两种角色类型:- 预定义角色:提供一组预定义好的角色,如Alpha、Gamma、Delta等,包含不同的权限组。
- 自定义角色:可以创建自定义角色,选择相应的权限粒度进行分配,如数据访问、SQL表创建、仪表盘创建权限等。
将创建好的角色分配给用户或用户组,即可控制其对应的数据集和功能访问权限。
- Auditing日志记录
Superset会记录详细的用户交互日志,如登录日志、SQLexecuted日志、Dashboard访问日志等。这些日志可以追溯数据和功能的访问记录,用于权限管理判断和数据安全审查。
Auditing 日志的查询示例,可以在 SQL Lab 中执行
SELECT * FROM logs
WHERE
user_id=(SELECT id FROM ab_user WHERE username='gamma')
AND schema_name='examples'
AND dttm
BETWEEN DATE_SUB(NOW(), INTERVAL 3 DAY) AND NOW()
综上,Superset提供比较全面而细致的用户管理功能。通过控制用户、用户组和权限,可以实现对数据、SQL查询和仪表盘等的安全访问管理。这是Superset作为企业BI平台广泛应用的重要条件。
如果你需要自定义一些用户权限,可以参考我的下一篇~ 如果对Superset的使用想要深入交流,也欢迎你来connect。
国内的公司使用 Superset 的越来越多了,很多开发遇到问题的也都主动找到我。我都非常乐意分享我对Superset的实践 威信: pabi2020。一方面可以了解大家关注什么问题,另一方面我可以继续整理和输出。