Настройка RLS запросами с пользовательскими переменными - Продукт Modus BI
Пользовательские переменные представляют собой атрибуты пользователя Аналитического портала. Они подразделяются на встроенные (системные), определяемые структурой метаданных Аналитического портала, и дополнительные, которые добавляются по усмотрению администратора портала в зависимости от решаемых задач.
Настройка пользовательских переменных осуществляется администратором в разделе «Переменные» или в настройках пользователя.
Настройка RLS на основании значений пользовательских переменных предполагает ограничения значений набора данных путем наложения условий в запросе по значениям той или иной пользовательской переменной и описывается при создании набора данных аналитиком (см. «Список встроенных пользовательских переменных»).
Предварительная подготовка данных
Для использования разделения доступа с использованием переменных, набор данных должен содержать ключевое поле, по которому осуществляется фильтрация RSL (например, table.rslkey).
Пример 1:
В источнике данных необходимо создать таблицу, которая будет содержать соответствие между атрибутом пользователя (по которому задаются ограничения) и значениями rslkey, определяющими, к каким данным пользователю разрешен или запрещен доступ. Например, таблица rlstable, содержащая поля rlstable.userid и rlstable.rslkey.
Пример 2:
Создать и редактировать таблицу, используя формы ввода данных.
Подготовка запроса для набора данных
К базовому запросу для получения данных из таблицы table добавьте условие WHERE
, фильтрующее строки, отвечающие условию выборки из таблицы rlstable по значению пользовательской переменной.
Пример базового запроса:
SELECT table.data, table.anotherdata FROM table
Пример модифицированного запроса:
SELECT table.data, table.anotherdata FROM table
WHERE table.rslkey IN (SELECT rlstable.rslkey from rlstable WHERE rlstable.userid = $user.ID$)
Для каждого пользователя, авторизованного на Аналитическом портале и просматривающего отчет, значение $user.ID$
будет равно идентификатору этого конкретного пользователя, таким образом он увидит только те строки, которые ему предназначены. В нашем примере:
- Пользователь с id 101 увидит только строки, где rlskey = 'Иванов' (строки 1 и 2 в таблице «table»).
- Пользователь с id 102 получит доступ только к данным по Петрову.
- Пользователь с id 100 сможет просмотреть все строки таблицы «table».
Используя диалект SQL источника данных, можно проектировать более сложные запросы для набора данных, накладывая как включающие (разрешающие), так и исключающие (запрещающие) фильтры, в том числе по нескольким пользовательским переменным (встроенным и дополнительным).