首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Superset UI中使用行级安全性

如何在Superset UI中使用行级安全性
EN

Stack Overflow用户
提问于 2020-12-14 09:49:10
回答 3查看 3.5K关注 0票数 2

我使用的是最新版本的超级集,它在UI中有行级安全选项。有人能帮助我吗?让我知道或者简单地介绍一下,我如何在UI中实现它并使用它。那里几乎没有多少文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-16 04:15:53

行级安全性本质上像WHERE子句一样工作。让我们假设我们使用一个名为tbl_org的表构建了一个仪表板,如下所示:

代码语言:javascript
运行
复制
manager_name    department  agent
Jim             Sales       Agent 1
Jim             Sales       Agent 2
Jack            HR          Agent 3
Jack            HR          Agent 4

比如说,当Jim登录时,我们只需要向他展示他是仪表板经理的行/记录。杰克也一样。这是RLS有用的时候。

Superset UI提供了三个需要填充的字段。

  1. Table:我们要在其上应用RLS的表。在这种情况下,您希望此规则适用于的角色是tbl_org
  2. Roles:。假设我们使用Gamma role.
  3. Clause:,这是SQL条件。在执行查询以获取仪表板的数据时,此处提供的条件将应用于where子句。因此,例如,如果您使用条件SELECT * from tbl_org where manager_name = Jim

,这将导致查询:manager_name = Jim

如果要根据登录用户动态筛选表,可以使用jinja模板:

代码语言:javascript
运行
复制
manager_name = '{{current_username()}}'

为此,在超级集中创建的用户名需要与tbl_org中的tbl_org列匹配

票数 5
EN

Stack Overflow用户

发布于 2020-12-16 01:29:42

行级安全性(RLS)允许管理员将WHERE谓词强制放入代表用户发送到DB的查询SQL语句中。

这可用于将查询结果限制为显式满足或不满足特定条件的行,并因此导致筛选返回给用户的列表或行。可以根据目标表和用户角色应用这些标准。

票数 1
EN

Stack Overflow用户

发布于 2021-05-14 11:21:54

如果您想让[manager_name = '{{current_username()}}']变得合理,就必须在config.py中添加["ENABLE_TEMPLATE_PROCESSING": True]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65286792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档