Я использую новейшую версию надмножества, и у нее есть опция безопасности на уровне строк в пользовательском интерфейсе. Может ли кто-нибудь помочь мне и сообщить или немного рассказать, как я могу реализовать это в пользовательском интерфейсе и использовать его. Там почти нет документации. Любая помощь будет полезна.
Как использовать безопасность на уровне строк в пользовательском интерфейсе Superset
Ответы (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 предоставляет три поля, которые необходимо заполнить.
- Таблица: таблица, к которой мы хотим применить RLS. В этом случае будет
tbl_org
- Роли: роль или роли, к которым вы хотите применить это правило. Допустим, мы используем роль Gamma.
- Пункт: условие SQL. Приведенное здесь условие применяется к предложению where при выполнении запроса для выборки данных для панели мониторинга. Так, например, если вы используете условие
manager_name = Jim
, это приведет к запросу:SELECT * from tbl_org where manager_name = Jim
Если вы хотите динамически фильтровать таблицу на основе пользователя, который входит в систему, вы можете использовать шаблон jinja:
manager_name = '{{current_username()}}'
Для этого имена пользователей, созданные в Superset, должны соответствовать столбцу manager_name
в tbl_org
Безопасность на уровне строк (RLS) позволяет администратору принудительно вводить предикат WHERE в запрос SQL, который отправляется в БД от имени пользователя.
Это можно использовать для ограничения результатов запроса строками, которые явно соответствуют или не соответствуют определенным критериям, и, как таковые, вызывают фильтрацию списка или строк, возвращаемых пользователю. Критерии могут применяться на основе целевой таблицы (таблиц) и роли (ей) пользователя.
Bence [email protected]
если вы хотите, чтобы [manager_name = '{{current_username ()}}'] имел смысл, вы должны добавить [ENABLE_TEMPLATE_PROCESSING: True] в config.py.