Права доступа в AW BI - Два уровня, атрибуты и RLS (Часть I)

Права доступа в AW BI: два уровня, атрибуты и RLS

О чём эта статья. Разбираем, как устроена система прав доступа в AW BI — от базовых прав на объекты до построчной фильтрации данных (RLS). Это первая часть из двух. Во второй части — практический кейс с виджет-навигатором.


Два уровня прав доступа

Когда говорят о правах доступа в AW BI, часто имеют в виду сразу две разные вещи. Их легко перепутать, поэтому важно разделить с самого начала.

Первый уровень — кто вообще может зайти и что видит в интерфейсе. Это классические права: кому открыт просмотр модели, дашборда, виджета. Настраиваются через кнопку «Общий доступ» на каждом объекте. Работает как пропуск в здание — либо есть, либо нет.

Второй уровень — что пользователь видит внутри данных. Два человека зашли в один и тот же отчёт, но один видит данные по Москве, другой — по Екатеринбургу. Это называется Row Level Security (RLS). Такое название, потому что доступ к данным реализован построчно. Как если бы в одном здании у всех были разные окна с разными видами.

В обоих статьях мы работаем именно со вторым уровнем.

:warning: Важно: в AW BI ограничения RLS применяются только при просмотре виджетов и дашбордов. В разделе «Модели» вы всегда видите все строки — это сделано намеренно для удобства администрирования. Не пугайтесь, если при проверке в модели видите все данные — проверять нужно через виджет.

Атрибуты, схема доступов, провайдер

Что такое атрибут

Атрибут — это характеристика пользователя, которая хранится в системе рядом с его логином. Например:

  • login = ivanov
  • department = hr
  • region = msk

Когда система решает, какие строки данных показать пользователю, она берёт его атрибуты и сравнивает с полями в модели. Совпадение нашлось — строка видна. Нет — скрыта.

:bulb: Аналогия: атрибут — это штамп в пропуске сотрудника. «Допущен к складу №3, город Казань». Система смотрит на штамп и решает, что показывать.

Что такое схема доступов

Прежде чем использовать атрибут в правиле фильтрации, его нужно «объявить» в системе. Схема доступов — это реестр всех атрибутов, которые система умеет использовать для RLS.

Встроенные атрибуты (всегда присутствуют): login, email, state, user_roles.

Кастомные атрибуты добавляете вы сами — department, region и всё что нужно для вашей логики.

:bulb: Аналогия: схема доступов — это список типов штампов или печатей, которые бывают в компании. Прежде чем ставить штамп «город: Казань» в пропуск, нужно сначала сказать системе, что такой тип штампа вообще существует.

На картинке выше как раз отображается интерфейс создания нового атрибута в системе, той самой нужной нам “печати”. Стоит тут отметить, что это возможно сделать пользователям с уровнем администратора.

Что такое модель user_permissions

Это специальная встроенная модель AW BI — таблица пользователей с их атрибутами. По умолчанию она пустая. Администратор, а точнее технический администратор системы, наполняет её данными — загружает из базы данных или Excel-файла.

:bulb: Важно: Данная модель на просмотр и редактирование доступна только техническому администратору

Минимальная структура: поле login (логины, совпадающие с учётными записями в системе) плюс любые кастомные атрибуты, которые вам нужны.

После загрузки значения из этой таблицы становятся атрибутами каждого пользователя.

:bulb: Аналогия: это кадровая база данных системы. Именно отсюда AW BI знает, что Иванов из отдела HR.

Что такое провайдер

Провайдер — источник, откуда система получает данные о пользователях при входе. Есть два варианта:

  • Внутренний провайдер AW — данные берутся из модели user_permissions. Всё управляется внутри AW BI вручную или через файл.
  • Внешний провайдер (LDAP, OpenID, Keycloak и др.) — атрибуты приходят автоматически из корпоративной системы аутентификации.

Маппинг схемы — вкладка в настройках провайдера, где вы связываете поля из источника с атрибутами схемы доступов. Нужна, потому что имена полей в источнике и в схеме могут не совпадать.

Как работает RLS

Вот полная цепочка от входа пользователя до отображения данных в виджете:

Шаг Что происходит
1 Пользователь входит в систему
2 Провайдер возвращает его атрибуты (из user_permissions или внешней системы)
3 Атрибуты маппятся на схему доступов
4 При открытии виджета система проверяет правила доступа модели
5 Строки фильтруются: пользователь видит только «своё»

Что будет, если user_permissions заполнена не полностью:

Ситуация Результат
Модель заполнена полностью Всё работает как настроено
Модель пустая Все пользователи видят пустой результат
Пользователь есть в таблице Видит данные согласно правилу
Пользователя нет в таблице Видит пустой результат — атрибут не найден
Правило доступа не создано Все видят все строки без ограничений

:warning: Если новый сотрудник не добавлен в user_permissions — он зайдёт в систему и увидит пустой виджет. Не ошибку, не «доступ запрещён» — просто пустоту. Это частая причина обращений к администратору после онбординга нового сотрудника.


:soon: Продолжение — во второй части. Там мы разберём практический кейс: настроим виджет-навигатор, который у каждого пользователя показывает только те дашборды, к которым у него есть доступ.