Как использовать безопасность на уровне строк в пользовательском интерфейсе Superset

Я использую новейшую версию надмножества, и у нее есть опция безопасности на уровне строк в пользовательском интерфейсе. Может ли кто-нибудь помочь мне и сообщить или немного рассказать, как я могу реализовать это в пользовательском интерфейсе и использовать его. Там почти нет документации. Любая помощь будет полезна.


person Aditya Verma    schedule 14.12.2020    source источник


Ответы (3)


Безопасность на уровне строк по сути работает как предложение WHERE. Предположим, что мы создаем информационную панель, используя таблицу с именем tbl_org, которая выглядит примерно так:

manager_name    department  agent
Jim             Sales       Agent 1
Jim             Sales       Agent 2
Jack            HR          Agent 3
Jack            HR          Agent 4

Скажем, нам нужно показать Джиму только строки / записи, где он является менеджером на панели управления, когда он входит в систему. То же самое и для Джека. Вот тогда и пригодится RLS.

Пользовательский интерфейс Superset предоставляет три поля, которые необходимо заполнить.

  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()}}'

Для этого имена пользователей, созданные в Superset, должны соответствовать столбцу manager_name в tbl_org

person steven    schedule 16.12.2020

Безопасность на уровне строк (RLS) позволяет администратору принудительно вводить предикат WHERE в запрос SQL, который отправляется в БД от имени пользователя.

Это можно использовать для ограничения результатов запроса строками, которые явно соответствуют или не соответствуют определенным критериям, и, как таковые, вызывают фильтрацию списка или строк, возвращаемых пользователю. Критерии могут применяться на основе целевой таблицы (таблиц) и роли (ей) пользователя.

Bence [email protected]

person user13943320    schedule 16.12.2020

если вы хотите, чтобы [manager_name = '{{current_username ()}}'] имел смысл, вы должны добавить [ENABLE_TEMPLATE_PROCESSING: True] в config.py.

person YihengLiu    schedule 14.05.2021