02. Система прав доступа Luxms BI
В версии Luxms BI 9 начат процесс замены термина датасет
на термин атлас
. В документации эти термины взаимозаменяемы.
Объекты контроля
Объектами контроля прав доступа в Luxms BI являются записи в таблицах. Однако, правила доступа могут ссылаться на множество объектов, например “все объекты” или “объекты, принадлежащие пользователю”.
Таблицы (множества объектов)
Таблица - это аналог класса в объектно-ориентированном подходе. Таблица идентифицируется комбинацией имени схемы и имени таблицы. Наример:
- adm.users
- ds_12.dashlets
- koob.cubes
Под доступом к таблице понимается доступ ко всем записям в этой таблице.
Записи в таблицах (индивидуальные объекты)
Запись - это аналог объекта определённого класса в объектно-ориентированном подходе. Запись в таблице идентифицируется целочисленным идентификатором id
. Для некоторых таблиц допускается использовать текстовый идентификатор: alt_id
, ident
и др.
Для идентификации записей в таблице adm.datasets
(список атласов) используется текстовый идентификтор schema_name
, который используется в URL в API вызовах.
Для идентификации источников данных (data_sources), кубов (cubes) и столбцов в кубах (dimensions) используются текстовые идентификаторы, которые хранятся в столбцах id
. Это исключение будет исправлено в следующих версиях Luxms BI.
Основные объекты Luxms BI
Название | id | Схема | Таблица |
---|---|---|---|
Значения переменных | val_sets | * | val_sets |
Датасеты в группах | topic_dataset_maps | adm | topic_dataset_maps |
Группа атласов | atlas_topic | adm | topics |
Атлас | atlas | adm | datasets |
Группы дэшбордов | dashboard_topic | * | dashboard_topics |
Дэшборд | dashboard | * | dashboards |
Дэшлет | dashlet | * | dashlets |
Data Boring | etl | * | |
ETL Instance | etl_instance | databoring | instances |
ETL Flow (tab) | etl_flow | databoring | configs |
Ресурсы (файлы) | resource | * | resources |
Источник данных | data_source | * | data_sources |
Куб | cube | * | cubes |
Столбец | column | * | dimensions |
Переменные | var | * | vars |
Источник данных | global_data_source | adm | data_sources |
Куб | global_cube | koob | cubes |
Столбец | global_column | koob | dimensions |
Переменные | global_var | koob | vars |
Основные объекты в Luxms BI
Символ звёздочки *
в качестве имени схемы означает, что таблица находится в схемах атласов (датасетов). Все атласы имеют одинаковый набор таблиц.
Действия (actions)
Каждый объект (таблица или запись в таблице) имеет список допустимых действий, которые пользователь потенциально может производить с объектом.
Код | Заголовок | Описание |
---|---|---|
C | Create | Создание |
R | Read | Чтение |
U | Update | Изменение |
D | Delete | Удаление |
S | Share | Поделиться |
Сln | Clone | Копирование объект к себе |
L | List | Возможность выводить список объектов |
M | Move | Перемещение объекта |
O | Open | Открытие объекта (заход внутрь) |
Use | Run/Use | Запуск и использование |
G | Grant | Выдача прав доступа |
P | Publish | Публикация |
RP | Request Publish | Запрос на публикацию |
Exp | Export | Экспорт |
Imp | Import | Импорт |
Полный список действий с объектами в Luxms BI
Действие L
применяется только для таблиц и позволяет вывести одним запросом все записи из таблицы, для которых у пользователя есть право R
. Список объектов можно получить без указания идентификаторов объектов в запросе. Само по себе право L
на таблицу не даёт права доступа к индивидуальным записям в таблице.
Действие L
не имеет смысла для индивидуальных объектов (когда указан id объекта). Поэтому в интерфейсе администратора для конкретных объектов нет действия L
.
Допустимые действия над основными объектами
object_type | C | R | U | D | L | M | O | G | S | Cln | P | RP | Exp | Imp | Use |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
val_sets | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||
topic_dataset_maps | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||
atlas_topic | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
atlas | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
dashboard_topic | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
dashboard | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
dashlet | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
etl_flow | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
resource | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
data_source | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
cube | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
column | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
var | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||||
global_data_source | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
global_cube | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
global_column | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
global_var | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Допустимые действия над основными объектами
Субъекты
Пользователи Luxms BI или программные средства, которые идентифицируются как пользователи.
Права доступа
Список запрещённых (false) и/или разрешённых (true) действий в отношении одного конкретного объекта, либо множества объектов.
Требования (claims)
Требования описывают права доступа, которыми должен обладать пользователь для осуществления запрашиваемого действия над объектом или над множеством объектов. Требования указываются в конфигурациях API вызовов, тем самым обеспечивается управление правами доступа на уровне API.
Роли пользователей
Роли содержат в себе преднастроенные права пользователей. В Luxms BI предусмотрено два типа ролей: лицензионная и сайтовая.
При создании пользователя ему обязательно присваивается сайтовая роль, которая привязана к одной из лицензионных ролей.
Лицензионные роли
Лицензионные роли описывают ограничения, которые нельзя отменить никакими настройками в Luxms BI. Эти ограничения не подлежат изменению или отмене. Единственный способ изменить эти ограниченя - это обратиться к производителю Luxms BI.
В поставку Luxms BI v9 входят три лицензионные роли:
- Viewer;
- Creator;
- Admin.
Viewer
Лицензионная роль Viewer запрещает создавать, изменять и редактировать объекты в Luxms BI. Роль предназначена для просмотра готовых приложений (атласов), создания презентаций и их рассылок из готовых приложений, просмотра отчетов и создания их рассылок из готовых приложений.
Creator
Лицензионная роль Creator запрещает выдавать права на объекты и управлять пользователями и группами пользователей, но позволяет разрабатывать приложения, презентации и отчеты в Luxms BI, подключать источники данных и создавать OLAP кубы, запускать ETL задачи.
Admin
Лицензионная роль Admin не накладывает никаких ограничений на действия в Luxms BI. Эта роль имеет полный доступ ко всем действиям и объектам.
Сайтовые роли
Сайтовые роли являются производными от лицензионных ролей и могут добавлять дополнительные ограничения к базовой лицензионной роли, которые нельзя отменить путём настройки прав доступа другими механизмами Luxms BI. Также сайтовые роли могут содержать явные разрешения для каких-то действий и объектов, но такие разрешения можно отменить настройками.
Перечень и права сайтовых ролей можно настроить под свои нужды, но при этом нельзя снять ограничения, которые наложены исходной лицензионной ролью.
Не рекомендуется менять перечень сайтовых ролей или менять ограничения сайтовых ролей, установленные производителем. Для изменения сайтовых ролей в системе Luxms BI, где уже зарегистрированы пользователи, требуется консультация производителя или поставщика Luxms BI.
Viewer
Сайтовая роль Viewer основана на лицензионной роли Viewer и не имеет дополнительных ограничений относительно неё. Сайтовая роль Viewer предназначена для массовых пользователей Luxms BI, которые просматривают готовые атласы, используют фильтры и интерактивный функционал дэшбордов, но не создают своих приложений.
Developer
Сайтовая роль Developer основана на лицензионной роли Creator и не имеет дополнительных ограничений относительно неё.
Сайтовая роль Developer уже содержит разрешения на чтение всех глобальных кубов и глобальных источников данных. Однако, разрешения на создание глобальных объектов нужно будет выдавать отдельно.
Роль предназначена для разработчиков приложений Luxms BI, включая разработку компонентов на JavaScript.
Designer
Сайтовая роль Designer основана на лицензионной роли Creator, но ограничивает доступ к функционалу ETL (Luxms Data Boring). Также запрещён функционал редактирования/создания любых источников данных и кубов.
Роль предназначена для создания и редактирования атласов и дэшбордов без возможности создания/редактирования кубов.
Также запрещено создание компонентов на Javascript.
Self-Service
Сайтовая роль Self-Service основана на лицензионной роли Creator, но ограничивает доступ к функционалу ETL (Luxms Data Boring). Также запрещён функционал редактирования/создания глобальных источников данных и глобальных кубов.
Роль предназначена для разработчиков приложений Luxms BI, без возможности создания компонентов на Javascript.
Data-Engineer
Сайтовая роль Data-Engineer основана на лицензионной роли Creator и содержит явные разрешения на создание/изменение любых глобальных исоточников данных и кубов. Разрешения на доступ к созданию атласов могут быть выданы администратором.
Роль предназначена для разработчиков ETL процессов и редактирования глобальных источников данных и глобальных кубов.
Права сайтовых ролей на основе лицензии Creator
Роль | ETL | Глобальные источники данных | Глобальные Кубы | Атласы | Источники данных | Кубы | Дэшборды | Ресурсы |
---|---|---|---|---|---|---|---|---|
Viewer | ||||||||
Designer | ✓ | |||||||
Self Service | ✓ | ✓ | ✓ | ✓ | ||||
Developer | ✓ | ✓ | ✓ | ✓ | ✓ | |||
Data Eng | ✓ | ✓ | ✓ | ✓ | ✓ |
Явные разрешения на создание объектов у различных сайтовых ролей на основе лицензионной роли Creator
Infosec
Сайтовая роль Infosec основана на лицензионной роли Admin, но ограничивает доступ к редактированию объектов в Luxms BI.
Роль предназначена для просмотра как атласов, так и административной информации Luxms BI.
Publisher
Сайтовая роль Publisher основана на лицензионной роли Admin, но ограничивает доступ к редактированию объектов в Luxms BI и управлению правами.
Роль предназначена для обработки запросов на публикацию атласов.
DevOps
Сайтовая роль DevOps основана на лицензионной роли Admin, но ограничивается доступ к редактированию учетных записей и управлению правами доступа.
Admin
Сайтовая роль Admin основана на лицензионной роли Admin и не имеет дополнительных ограничений относительно неё.
Super
Сайтовая роль Super основана на лицензионной роли Admin и не имеет дополнительных ограничений относительно неё. Более того, невозможно установить дополнительные ограничения для пользователя с ролью Super.
Группы пользователей
Группы пользователей можно свободно создавать и редактировать, они не привязаны к ролям. Пользователь может входить в несколько групп. Группы не могут входить в другие группы. Права доступа, получаемые пользователем из какой-либо группы, не могут отменить ограничения, наложенные сайтовой или лицензионной ролью пользователя.
Личные права доступа пользователей
Любому пользователю можно назначить персональные права доступа. Однако, для пользователей с сайтовой ролью Super назначенные права не проверяются при доступе к объектам. Персональные права доступа не могут отменить ограничения, наложенные сайтовой или лицензионной ролью пользователя.
Порядок вычисления прав доступа
Если при вычислении прав доступа встречается явный запрет, то процесс немедленно останавливается и доступ запрещается.
Порядок вычисления разрешений и запретов:
- Разрешение любых действий на основании принадлежности к роли
Super
- Сайтовая роль (запреты)
- Персональные права доступа
- Групповые права доступа
- Сайтовая роль (разрешения)
Роли, группы и персональные права могут содержать описания прав доступа для объектов, которых ещё нет в системе на момент создания прав доступа. Это возможно с помощью предикатов “все” и “принадлежащие пользователю”.
Контекст задания прав доступа
Ключи для указания контекста
schema_name
- имя схемыtable_name
- имя таблицыobject_id
- числовой идентификатор объектаobjext_text_id
- текстовый идентификатор объекта (опционально)
Примеры контекстов
Дэшлет в атласе
Дэшлет 123
в атласе ds_12
.
{
"schema_name": "ds_12",
"table_name": "dashlets",
"object_id": 123
}
Все дэшлеты в атласе
Все дэшлеты в атласе ds_12
:
{
"schema_name": "ds_12",
"table_name": "dashlets",
"object_id": null
}
Все дэшлеты во всех атласах
Все дэшлеты во всех атласах.
{
"schema_name": '*',
"table_name": "dashlets",
"object_id": null
}
Все объекты любого типа в атласе
Все объекты в атласе ds_23
{
"schema_name": "ds_23",
"table_name": null,
"object_id": null
}
Все объекты любого типа в системе
В целях безопасности Luxms BI не поддерживает контекст “любая схема, любая таблица”. Требуется явно указать имя схемы, или использовать *
для указания любого атласа.
{
"schema_name": null, // не поддерживается
"table_name": null,
"object_id": null
}
Предикат “все” можно применять к пользователям, для этого в Luxms BI есть служебная группа ALL
, в которой без дополнительных действий администратора (автоматически) оказываются все пользователи Luxms BI.
Права доступа на объекты внутри атласов
Некоторые объекты в Luxms BI имеют владельца, например атласы.
Права доступа владельцев атласов
Пользователь, создавший атлас, становится его владельцем и получает полный доступ к самому атласу и ко всем его внутренним объектам: дэшбордам, дэшлетам, кубам и т.д. Помимо владельца, полный доступ на атлас могут иметь разработчики атласа, которых владелец атласа или администратор может включить в список разработчиков. У каждого атласа свой список разработчиков.
Права на создание атласа определяются через требование:
{
"schema_name": 'adm',
"table_name": "datasets",
"object_id": null,
"rights": {"C":true}
}
То есть, требуется наличие права создавать запись в таблице adm.datasets
. В этом случае не требуется указывать id
объекта, так как id
объекта не известен до момента создания объекта.