Корпоративные практики BI отличаются тем, что единое хранилище данных позволяет самым разным сотрудникам — от рядовых специалистов до ТОП-менеджеров — получать нужную информацию и анализировать ее для принятия верных решений. Но это становится возможным только в том случае, если можно гарантировать, что каждый пользователь получит доступ только к тем данным, которые он имеет право видеть. О том, как этот подход работает на уровне объектов, и в чем разница между RLS и OLS, читайте под катом.

На самом деле задача разделения прав доступа — очень серьезная. Ведь если вы собираете данные из десятков источников в едином аналитическом хранилище, значит их необходимо серьезно защищать. А если вам нужно предоставить доступ только к определенным наборам данных, значит потребуется либо четко разграничить работу с ними для разных пользователей и групп, если BI-платформа позволяет это делать, либо создавать копии аналитических систем с соответствующими хранилищами, чтобы в каждом были только свои данные.
Для получения “Единой точки правды” в любом случае необходимо создавать централизованное хранилище и внедрять практики верификации данных, поступающих из различных источников. И здесь намного проще использовать инструменты, которые позволят разграничивать доступ на уровне единой платформы.
Не нужно дополнительное железо для хранения копий данных
Одни и те же дашборды, модели и меры можно использовать для разных задач
Для поддержки требуется меньше людей
Разделение прав доступа получается прямо “из коробки”.
RLS и OLS
Столкнувшись с этим запросом сначала от наиболее крупных заказчиков (а потом и от многих других, кто масштабирует BI и внедряет практику корпоративной работы с аналитикой), мы сначала реализовали модель RLS или Row-Level Security. Работает он достаточно просто — в Visiology за взаимодействие с хранилищем отвечает ДанКо. Вы не можете просто обратиться к хранилищу, а через ДанКо доступ предоставляется только к тем строкам, права на которые есть у конкретного пользователя.

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

Подробнее про RLS можно прочитать вот в этой статье, а мы сегодня сосредоточимся на следующей фиче — поддержке OLS — то есть безопасности на уровне объектов.
Что такое OLS
Для начала давайте определимся, что такое объекты. В случае с BI мы имеем в виду целые таблицы, а также отдельные их столбцы. В отличие от ограничения только по строкам, модель OLS позволяет не только определить те сферы, к которым имеет доступ пользователь (например, строки относящиеся к его филиалу), но также определять отдельные столбцы, которые должен или не должен видеть конкретный сотрудник или группа.

Работа с OLS происходит на уровне модели данных. Пользователю могут быть недоступны отдельные таблицы, либо часть этих таблиц — отдельные столбцы.
Настройка OLS
В Visiology настройка доступа происходит на вкладке “Безопасность” и она доступна как для пользователей, так и для групп.

На этом скриншоте показано, как отмечаются доступные для определенного пользователя столбцы таблицы dimstore. Можно выбрать любое количество столбцов - от 0 (тогда таблица будет вообще недоступна и не видна даже в модели данных), до полного доступа.

Если пользователь заходит на дашборд, где есть виджет, опирающийся на хотя бы один из скрытых столбцов, он получит уведомление, что у него “нет доступа к данным”.

Но, кстати, это не значит, что дашборд нельзя будет использовать! Меры и визуализации, которые содержит дашборд, можно будет применить к тем данным и объектам, которые доступны пользователю, а также дополнить их новыми мерами и виджетами, так сказать, используя наработки коллег.
Многоуровневая система безопасности
Появление OLS в Visiology позволяет реализовать многомерную систему безопасности:
OLS управляет доступом к самим объектам (таблицам или столбцам).
RLS контролирует, какие именно строки этих объектов видны пользователю после того, как он получил доступ к объекту.
Таким образом, даже если пользователь получит доступ к определенному объекту через OLS, он увидит только ту информацию, которая разрешена его правами в рамках RLS. Благодаря этому появляется возможность совместной работы любого количества пользователей с любыми правами доступа на одном наборе данных. Фактически это реализация концепции “Единой точки правды” вместе с необходимыми мерами безопасности.
Учитывая, что начиная с Visiology 3.11 на платформе поддерживается авторизация пользователей через внешние сервисы Keycloak, использование OLS позволяет реализовать настроить гранулярный доступ к BI для всех корпоративных пользователей, опираясь на уже созданные группы и политики.