Перейти к основному содержимому

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_mapsadmtopic_dataset_maps
Группа атласовatlas_topicadmtopics
Атласatlasadmdatasets
Группы дэшбордовdashboard_topic*dashboard_topics
Дэшбордdashboard*dashboards
Дэшлетdashlet*dashlets
Data Boringetl*
ETL Instanceetl_instancedataboringinstances
ETL Flow (tab)etl_flowdataboringconfigs
Ресурсы (файлы)resource*resources
Источник данныхdata_source*data_sources
Кубcube*cubes
Столбецcolumn*dimensions
Переменныеvar*vars
Источник данныхglobal_data_sourceadmdata_sources
Кубglobal_cubekoobcubes
Столбецglobal_columnkoobdimensions
Переменныеglobal_varkoobvars

Основные объекты в Luxms BI

Символ звёздочки * в качестве имени схемы означает, что таблица находится в схемах атласов (датасетов). Все атласы имеют одинаковый набор таблиц.

Действия (actions)

Каждый объект (таблица или запись в таблице) имеет список допустимых действий, которые пользователь потенциально может производить с объектом.

КодЗаголовокОписание
CCreateСоздание
RReadЧтение
UUpdateИзменение
DDeleteУдаление
SShareПоделиться
СlnCloneКопирование объект к себе
LListВозможность выводить список объектов
MMoveПеремещение объекта
OOpenОткрытие объекта (заход внутрь)
UseRun/UseЗапуск и использование
GGrantВыдача прав доступа
PPublishПубликация
RPRequest PublishЗапрос на публикацию
ExpExportЭкспорт
ImpImportИмпорт

Полный список действий с объектами в Luxms BI

осторожно

Действие L применяется только для таблиц и позволяет вывести одним запросом все записи из таблицы, для которых у пользователя есть право R. Список объектов можно получить без указания идентификаторов объектов в запросе. Само по себе право L на таблицу не даёт права доступа к индивидуальным записям в таблице.

к сведению

Действие L не имеет смысла для индивидуальных объектов (когда указан id объекта). Поэтому в интерфейсе администратора для конкретных объектов нет действия L.

Допустимые действия над основными объектами

object_typeCRUDLMOGSClnPRPExpImpUse
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, но ограничивается доступ к редактированию учетных записей и управлению правами доступа.

Пример настройки прав пользователя DevOps

Admin

Сайтовая роль Admin основана на лицензионной роли Admin и не имеет дополнительных ограничений относительно неё.

Super

Сайтовая роль Super основана на лицензионной роли Admin и не имеет дополнительных ограничений относительно неё. Более того, невозможно установить дополнительные ограничения для пользователя с ролью Super.

Группы пользователей

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

Личные права доступа пользователей

Любому пользователю можно назначить персональные права доступа. Однако, для пользователей с сайтовой ролью Super назначенные права не проверяются при доступе к объектам. Персональные права доступа не могут отменить ограничения, наложенные сайтовой или лицензионной ролью пользователя.

Порядок вычисления прав доступа

Если при вычислении прав доступа встречается явный запрет, то процесс немедленно останавливается и доступ запрещается.

Порядок вычисления разрешений и запретов:

  1. Разрешение любых действий на основании принадлежности к роли Super
  2. Сайтовая роль (запреты)
  3. Персональные права доступа
  4. Групповые права доступа
  5. Сайтовая роль (разрешения)
к сведению

Роли, группы и персональные права могут содержать описания прав доступа для объектов, которых ещё нет в системе на момент создания прав доступа. Это возможно с помощью предикатов “все” и “принадлежащие пользователю”.

Контекст задания прав доступа

Ключи для указания контекста

  • 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 объекта не известен до момента создания объекта.