# Введение Действие пользователя РІ системе требует наличия Сѓ него тех или иных привилегий. Администрирование доступа производится путем выдачи `пользователям` прав РЅР° `объектные привилегии` или `элементарные привилегии`. ## Пользователь Для работы РІ системе необходимо зайти РїРѕРґ пользователем системы. РЎ точки зрения системы пользователем является учетная запись, РЅР° которую выдается перечень прав, дающий возможность юридическому или физическому лицу выполнять действия РІ системе. РЎРїРёСЃРѕРє пользователей можно открыть РёР· пункта меню: - `Администратор \ Доступ > Пользователи` ### Ограничение имени пользователя РРјСЏ пользователя имеет РІРёРґ <локальная_часть>@<домен>, домен РЅРµ является обязательной частью имени пользователя. РРјСЏ пользователя уникально РІ пределах системы. Общая длина имени пользователя РЅРµ должна превышать 1024 байт (октет), включая СЃРёРјРІРѕР» @ Ограничения локальной части (До последнего символа @): - Прописные Рё строчные Р±СѓРєРІС‹ латинского алфавита: (A-Z), (a-z) - Цифры: (0-9) - Специальные символы: !#$%&"*+-/=?^_`{|}~ - РЎРёРјРІРѕР» (.), если РѕРЅ РЅРµ является первым или последним, Р° так же если РѕРЅРё РЅРµ РёРґСѓС‚ РґСЂСѓРі Р·Р° РґСЂСѓРіРѕРј. - Следующие специальные символы разрешены, только если локальная часть выделена РІ кавычки: пробел Рё "(),:;<>[\] Ограничения домена (После последнего символа @): - Прописные Рё строчные Р±СѓРєРІС‹ латинского алфавита: (A-Z), (a-z) - Цифры: (0-9) - Специальный СЃРёРјРІРѕР»: -, если РѕРЅ РЅРµ является первым или последним РРјСЏ пользователя должно составляться РїРѕ стандарту [RFC 822](https://www.w3.org/Protocols/rfc822/#z7) Длина имени используется РёР· стандарта [Active Directory](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adls/63f5e067-d1b3-4e6e-9e53-a92953b6005b) ### Отключение администрирования Р’ случае, если Сѓ пользователя стоит признак `Супер-пользователь`, настройки администрирования РЅРµ применяются, РїРѕРґ таким пользователем можно совершать РІ системе любые действия. Данный признак СѓРґРѕР±РЅРѕ использовать для разработки Рё тестирования, так как это позволяет отделить администрирование РѕС‚ разработки. ## Администрируемый объект `Администрируемый объект` - это логически связанный для массовой раздачи прав набор привилегий. Административный объект генерируется РїРѕ объектам системы Рё позволяет единым образом выдавать права РЅР° РЅРёС…. Администрируемый объект генерируется РІ момент установки или обновления системы РїРѕ таким объектам как: - Произвольная выборка - Класс - Справочник - Настройка - Журнал - Документы - Пакеты - Приложения РЎРїРёСЃРѕРє административных объектов можно открыть РёР· пункта меню: - `Администратор \ Настройки > Администрируемые объекты` ### Отключение администрирования Возможно отключить администрирование РІ разрезе административного объекта, данным механизмом СѓРґРѕР±РЅРѕ пользоваться РІ случае поэтапной настройки прав, РєРѕРіРґР° администрирование включается только для тех объектов, РЅР° которых РѕРЅРѕ уже настроено. Для отключения администрирования РЅР° административном объекте существуют следующие поля: - `РќРµ распространяются настройки администрирования` \ Если флаг установлен, РЅР° объекты представляющие состав административных объектов РЅРµ распространяются настройки администрирования - `РќРµ требуется настройка прав доступа РЅР° состояния` \ Если флаг установлен, РЅР° документе данного административного объекта выключается контроль доступных переходов между состояниями. ### Узел администрирования Группирует элементы администрируемого объекта для массовой раздачи прав, РїРѕ умолчанию создается РѕРґРЅР° основная РіСЂСѓРїРїР° РЅР° каждый администрируемый объект. Узел администрирования зарезервирован РЅР° случай, если РІ системе потребуется настраивать права РІ зависимости РѕС‚ `типа объекта` или `состояния` ### Рлементы администрируемого объекта Рлемент административного объекта создается РЅР° объекты которые требуют раздачи прав РЅР° `элементарные привилегии`. #### Выборка РџРѕ умолчанию выборка СЃРѕ всеми отображениями регистрируется РІ РѕРґРёРЅ `элемент администрируемого объекта` СЃ именем `{SelName}#Default`. РџСЂРё этом РЅР° каждую операцию Рё атрибут РІ разрезе системного имени создается `элементарная привилегия`. Для переноса отображения РІ отдельный `элемент администрируемого объекта` существует аннотация: ```scala @AcItemRep(name = "{Name}") ``` Р’ таком случае `элемент администрируемого объекта` получит РёРјСЏ `{SelName}#{Name}` Так же `элемент администрируемого объекта` можно задать РІ `avm.xml` через атрибут отображения `acItemRep` ```{note} Рзменения вступят РІ силу после обновления административного объекта (СЃРј. главу `Групповая настройка привилегий ролей`) ``` Для создания `элементов администрируемого объекта` РїРѕ выборкам, РЅРµ имеющим класса, РІ `avm` файле обязательно должен быть тег `<acObject/>`. Для выборок без класса формируется `администрируемый объект` Рё `элемент администрируемого объекта` СЃ суффиксом `Avi` РІ имени. ### Дискретные привилегии Дискретные привилегии используют правила дискретного доступа РїСЂРё проверке прав, что позволяет раздавать доступ РїРѕ объектно (РІ зависимости РѕС‚ значений атрибутов строки). Р’ интерфейсе настройки ролей дискретные привилегии можно выдать СЃ ограничением РїРѕ `дискретном правилу`. ### Рлементарные привилегии `Рлементарные привилегии` используются для разграничения действий пользователя Рё создаются следующим образом: - РїРѕ выборке РЅР°: - Операции \ Создаются дискретные привилегии - Атрибуты - Сеттеры атрибута \ Создаются дискретные привилегии #### РўРёРїС‹ элементарных привилегий - Чтение \ Содержит настройки видимости атрибутов. - Редактирование \ Содержит сеттеры атрибутов. - Добавление \ Содержит операции вставки Рё копирования. - Удаление \ Содержит операция удаления. - Рнтерактивные права \ Содержит остальные операции. Для изменения типа привилегии, которой соответствует операция выборки, существует аннотация `@AcPrivilegeType`. Пример: ```scala @AcPrivilegeType(value = PrivilegeTypes.Read) def myOperation(): Unit = {} ``` ```{note} Рзменения вступят РІ силу после обновления административного объекта (СЃРј. главу `Групповая настройка привилегий ролей`) ``` ### Объектные привилегии `Объектные привилегии` позволяют раздавать права РЅР° бизнес логику. #### Авто генерируемые объектные привилегии - edit# \ Создаются дискретные привилегии - view# \ Создаются дискретные привилегии - viewReport# \ Создаются дискретные привилегии #### Привилегии РЅР° переход состояний Привилегии РЅР° переход состояний ограничивают доступные переходы состояния. Ограничения РЅР° переходы реализовано РІ стандартном выпадающем СЃРїРёСЃРєРµ для состояний `ru.bitec.app.btk.Btk_ClassStateAvi.Lookup_Class` РРјСЏ привилегии формируется РїРѕ правилу: ```scala s"StateChange_OT:${idObjectType}_SS:${idStartState}_FS:$idFinishState" ``` Функция для определения возможности перехода: `ru.bitec.app.btk.Btk_AdminPkg#hasStateChangePriv`. #### Ручное создание объектных привилегий Для ручного создания объектных привилегий РЅР° классе(`odm.xml`) или пакете(`pkg.xml`) используются xml разметка, пример: ```xml <admin> <privileges> <privilege name="SbtManage" caption="Управление решением"/> </privileges> </admin> ``` ```{note} Рзменения вступят РІ силу после обновления административного объекта (СЃРј. главу `Групповая настройка привилегий ролей`) ``` #### Приложение Для администрирования приложений создается адм. объект `Приложения`(`Btk_ApplicationsListPkg`). Объектные привилегии импортируются РІ него РёР· xml файлов `META-INF/applications.xml` всех подключенных модулей. Выданные права РЅР° такую привилегию обеспечивают отображение приложения РІ СЃРїРёСЃРєРµ РІ меню выбора приложений. ### Дискретные ограничения Дискретные ограничения позволяют задавать выражения для создания правил выдачи дискретных привилегий РЅР° конкретной роли. Подробности смотрите РІ главе `Дискретный доступ` Принцип настройки дискретных ограничений: 1. Администратор определяет дискретные ограничения РЅР° административном объекте 2. Администратор определяет дискретные правила РІ роли \ Каждое правило содержит дискретное ограничение Рё набор параметров 3. Администратор выдает грант РЅР° дискретную привилегию роли \ РџСЂРё этом РїСЂРё синхронизации пользователей РїСЂРѕС…РѕРґРёС‚ расчет дискретных привилегий данных пользователю РїРѕ алгоритму объединения грантов РџСЂРё проверки привилегии РІ бизнес логике, РІ функцию проверки передается перечень строк, для которых выполняется проверка. РџСЂРё ограничении запроса РїРѕ дискретной привилегии, каждое ограничение добавляется РІ where условие. Алгоритм объединение грантов: 1. Пусть `g1` Рё `g2` гранты пользователю РЅР° объектную привилегию `p` 2. Если `g1` или `g2` СЃ типом полный доступ, вернуть грант РЅР° `p` c полным доступом 3. Рначе вернуть грант РЅР° `p` объединив ограничения Алгоритм объединения ограничений: 1. Пусть `A` массив ограничений для грантов `g1` Рё `g2` 2. Пусть `S` пустое множество ограничений(параметры ограничения РЅРµ РІ С…РѕРґСЏС‚ РІ ключ множества) 3. Для каждой `g` РёР· `A` 1. Если `g` существует РІ `S`, добавить новые параметры Рє ограничению РІ `S` 2. Рначе добавить `g` Рє `S` 4. Вернуть `S` #### РЎРєСЂРёРїС‚ фильтрации Рспользуется РІ универсальной фильтрации для ограничения видимости РїРѕ объектам. #### РЎРєСЂРёРїС‚ проверки объектного кэша Рспользуется РІ автономной бизнес логики для проверки возможности действия СЃРѕ строкой. ## Роль `Роль` - административная единица для выдачи прав. Для раздачи дискретных привилегий РЅР° роли РјРѕРіСѓС‚ быть настроены дискретные правила, которые определяют дискретные ограничения Рё передаваемые РІ РЅРёС… РЅР° гранте параметры. Р’ роле выдаются гранты РЅР° привилегии. РЎРїРёСЃРѕРє ролей можно открыть РёР· пункта меню: - `Администратор \ Доступ > Роли` ## Профиль пользователя `Профили пользователя` используется для РіСЂСѓРїРїРёСЂРѕРІРєРё ролей для более СѓРґРѕР±РЅРѕР№ раздачи РёС… пользователю. РЎРїРёСЃРѕРє профилей можно открыть РёР· пункта меню: - `Администратор \ Доступ > Профили` ## Замещение прав Позволяет указать какой пользователь будет обладать всеми правами РґСЂСѓРіРѕРіРѕ Рё РЅР° какое время. Настройки замещения прав учитываются РїСЂРё выполнении индексации прав пользователя. Для отслеживания окончания периода действия замещения каждую ночь выполняется задание, которые выполняет индексацию пользователей. РЎРїРёСЃРѕРє замещений можно открыть РёР· пункта меню: - `Администратор \ Доступ > Замещение прав` ## Рндексация привилегий пользователей Для быстрой проверки привилегий пользователя используются `индексы привилегий`. Рндексы привилегий необходимо пересчитывать после завершения редактирования ролей Рё РёС… выдаче пользователю. ## Предустановленные профили ### Профиль "Отладчик" `Профиль "Отладчик"` предназначен для пользователей, для которых нужно предоставить доступ Рє инструментам отладки. Таким как: - доступ Рє операциям управления решением (управление SBT) - возможность открыть дебаггер - выполнение jexl скриптов РІ дебагере - доступ Рє инструментам меню Сервиса - доступ Рє инструментам отладки клиента ### Профиль "Разработчик" `Профиль "Разработчик"` предназначен для пользователей, которые являются разработчиками. Включает РІ себя РІСЃРµ права профиля "Отладчик". Рђ также имеет доступ Рє следующим инструментам: - доступ Рє редактированию справки