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

Adi*_*rma 5 apache-superset

我正在使用最新版本的 superset,它在 UI 中具有行级安全选项。任何人都可以帮助我并让我知道或演示一下如何在 UI 中实现它并使用它。那里几乎没有太多文档。

use*_*478 6

行级安全性本质上类似于 WHERE 子句。假设我们使用名为的表构建一个仪表板,tbl_org如下所示:

manager_name    department  agent
Jim             Sales       Agent 1
Jim             Sales       Agent 2
Jack            HR          Agent 3
Jack            HR          Agent 4
Run Code Online (Sandbox Code Playgroud)

比如说,当吉姆登录时,我们需要在仪表板上仅向他显示他是经理的行/记录。杰克也是如此。这就是 RLS 有用的时候。

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

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

如果您想根据登录用户动态过滤表,可以使用 jinja 模板:

manager_name = '{{current_username()}}'
Run Code Online (Sandbox Code Playgroud)

为此,在 Superset 中创建的用户名需要manager_name与中的列匹配tbl_org