如何在 Superset UI 中使用行级安全性
How to use row level security in Superset UI
我正在使用最新版本的 superset,它在 UI 中有行级安全选项。任何人都可以帮助我并让我知道或稍微介绍一下我如何在 UI 中实现它并使用它。那里几乎没有太多文档。任何帮助都是有益的。
行级安全性 (RLS) 允许管理员将 WHERE 谓词强制加入代表用户发送到数据库的查询 SQL 语句。
这可用于将查询结果限制为明确满足或不满足特定条件的行,并因此导致返回给用户的列表或行被过滤。可以根据目标 table(s) 和用户角色应用标准。
本斯
本斯@preset.io
行级安全性基本上像 WHERE 子句一样工作。假设我们使用名为 tbl_org
的 table 构建了一个仪表板,它看起来像:
manager_name department agent
Jim Sales Agent 1
Jim Sales Agent 2
Jack HR Agent 3
Jack HR Agent 4
比如说,我们只需要在 Jim 登录时显示 rows/records 他在仪表板上的经理位置。Jack 也一样。这时候RLS就派上用场了。
超集UI提供了三个需要填写的字段。
- Table:我们要应用 RLS 的 table。在这种情况下将是
tbl_org
- 角色:您希望应用此规则的一个或多个角色。假设我们使用 Gamma 角色。
- 子句:SQL条件。当执行查询以获取仪表板数据时,此处提供的条件将应用于 where 子句。因此,例如,如果您使用条件
manager_name = Jim
,这将导致查询:SELECT * from tbl_org where manager_name = Jim
如果您想根据登录用户动态过滤 table,您可以使用 jinja 模板:
manager_name = '{{current_username()}}'
为此,在 Superset 中创建的用户名需要与 tbl_org
中的 manager_name
列相匹配
如果你想让 [manager_name = '{{current_username()}}'] 有意义,
您必须在 config.py.
中添加 ["ENABLE_TEMPLATE_PROCESSING": True]
我正在使用最新版本的 superset,它在 UI 中有行级安全选项。任何人都可以帮助我并让我知道或稍微介绍一下我如何在 UI 中实现它并使用它。那里几乎没有太多文档。任何帮助都是有益的。
行级安全性 (RLS) 允许管理员将 WHERE 谓词强制加入代表用户发送到数据库的查询 SQL 语句。
这可用于将查询结果限制为明确满足或不满足特定条件的行,并因此导致返回给用户的列表或行被过滤。可以根据目标 table(s) 和用户角色应用标准。
本斯 本斯@preset.io
行级安全性基本上像 WHERE 子句一样工作。假设我们使用名为 tbl_org
的 table 构建了一个仪表板,它看起来像:
manager_name department agent
Jim Sales Agent 1
Jim Sales Agent 2
Jack HR Agent 3
Jack HR Agent 4
比如说,我们只需要在 Jim 登录时显示 rows/records 他在仪表板上的经理位置。Jack 也一样。这时候RLS就派上用场了。
超集UI提供了三个需要填写的字段。
- Table:我们要应用 RLS 的 table。在这种情况下将是
tbl_org
- 角色:您希望应用此规则的一个或多个角色。假设我们使用 Gamma 角色。
- 子句:SQL条件。当执行查询以获取仪表板数据时,此处提供的条件将应用于 where 子句。因此,例如,如果您使用条件
manager_name = Jim
,这将导致查询:SELECT * from tbl_org where manager_name = Jim
如果您想根据登录用户动态过滤 table,您可以使用 jinja 模板:
manager_name = '{{current_username()}}'
为此,在 Superset 中创建的用户名需要与 tbl_org
manager_name
列相匹配
如果你想让 [manager_name = '{{current_username()}}'] 有意义, 您必须在 config.py.
中添加 ["ENABLE_TEMPLATE_PROCESSING": True]