# Приложение администратор Приложение `Администратор` используется для администрирования пользователей. ## Список пользователей Список пользователей можно открыть из пункта меню: - `Администратор \ Доступ > Пользователи` Операции списка пользователей: - `Пересчитать индексацию привилегий для текущего пользователя` \ Операция предназначена для обновления индексов системных привилегий для текущего пользователя. В результате операции обновятся записи в индексе(`Btk_AcUserItemPrivFlat`) по всем элементам администрируемых объектов на привилегии, которых у пользователя есть права, а также записи в индексе(`Btk_AcUserObjPrivFlat`) по всем администрируемым объектам, на объектные права которых у пользователя есть права. - `Пересчитать индексацию привилегий для всех пользователей` \ Операция предназначена для обновления индексов системных привилегий для всех пользователей. ## Карточка пользователя Операции карточки пользователя: - `Изменить пароль` \ Операция предназначена для установки пароля для входа в систему для пользователя. - `Пересчитать индексацию привилегий для текущего пользователя` \ Операция предназначена для обновления индексов привилегий для текущего пользователя. ## Детализация пользователя В карточке и списке доступна детализация, содержащая закладки: - `Профили доступа` \ Список записей в классе-развязке(`Btk_AcUserGrant`) со ссылкой на профиль. Для закладки `Профили доступа` доступна детализация с закладкой `Роли доступа профиля`, отображающая список записей в классе-развязке(`Btk_AcProfileGrant`) со ссылкой на роль - `Роли доступа` \ Список ролей, связанных с пользователем через профиль - `Индексация элементарных привилегий` \ Список записей в `Btk_AcUserItemPrivFlat` для текущего пользователя. - `Индексация объектных привилегий` \ Список записей в `Btk_AcUserObjPrivFlat` для текущего пользователя. Для закладок `Индексация элементарных привилегий` и `Индексация объектных привилегий` доступна операция - `Посмотреть значение индекса` \ Операция открывает в модальном окне содержимое поля(`cPriv`) с перечнем доступных привилегий для элемента или объекта. ### Синхронизация с Active Directory Для синхронизации: 1. Выполните операцию `Синхронизация с Active Directory` \ Операция доступна в списке пользователей. При этом откроется интерфейс синхронизации отображающий список логов. 2. При необходимости укажите шаблон в шапке интерфейса \ Вновь созданные пользователи будут созданы по этому шаблону 3. Нажмите кнопку `Синхронизировать` \ При этом будет просканирован домен на наличие групп и пользователей. Будут созданы только группы которые которые настроены как основная группа пользователей. Произойдет синхронизация пользователей Синхронизируемы поля пользователей: - `Системное имя` \ Атрибут `sAMAccountName` - `Пароль` \ Равен системному имени при создании пользователя - `Группа` \ Определяется через атрибут `primaryGroupID` - Для физ. лица: - `Фамилия` \ атрибут `sn` - `Имя` \ 1-е слово из атрибута givenName` - `отчество` \ Если атрибут `givenName` содержит 2 слова, то 2-ое слово – отчество. - `email` \ Атрибут `mail` Синхронизируемые поля групп: - `Наименование` \ Атрибут `«name»`, если он не указан, то полное имя. Например: `CN=Domain users,CN=Users` - `Системное имя` \ Полное имя группы. Например: `CN=Domain users,CN=Users` Пользователи создаются только в случае, если они не заблокированы в домене. Если пользователь заблокирован, и уже зарегистрирован в системе Global, то ему выставляется признак «Заблокирован». #### Настройка синхронизации Для настройки подключения используется универсальный класс настроек (`Btk_Setting`). Открыть настройки можно из пункта меню `Настройка системы \ Настройка > Общие настройки системы` Необходимые параметры: - `url` \ сервера контроллера домена. Например: `ldap://192.168.2.11:389` - `логин` - `пароль` - `домен` \ который требуется синхронизировать. ## Список ролей Список ролей можно открыть из пункта меню: - `Администратор \ Доступ > Роли` ## Карточка роли Используется для выдачи привилегий для роли от дерева административных объектов. ### Права роли В данном интерфейсе отображается дерево административных объектов с уровнями: - Группа администрируемых объектов(только чтение) - Объект администрирования - Узел администрирования - Элемент администрируемого объекта ```{tip} По умолчанию отображаются только административные объекты использующиеся в роли. Для отображения всех административных объектов выключите флаг `Только объекты, на которые у роли имеются права` в панели фильтрации. ``` В данной интерфейсе каждый тип элементарной привилегии отображен отдельным столбцом, что позволяет выдать права массово по типу для всех элементарных привилегий этого типа для текущего уровня и уровней ниже. #### Расшифровка прав В случае если выбран объект администрирования отображает: - перечень типов элементарных привилегий - перечень объектных привилегий В случае если выбран элемент администрируемого объекта отображает: - перечень элементарных привилегий для данной строки #### Перевод состояний Отображается в случае если выбран объект администрирования. Позволяет настроить возможные переходы между состояниями. ### Выдача прав на объектные привилегии 1. Выберите требуемый адм. объект. \ При этом в расшифровке прав отобразятся объектные привилегии 2. Раздайте права на объектные привилегии роли \ 3. Обновите индексы системных привилегий ### Выдача прав на тип элементарных привилегий В случае если выдано право на тип элементарной привилегии, доступ будет дан всем элементарным привилегиям данного типа во всех элементах администрируемого объекта. 1. Выберите требуемый адм. объект \ При этом в расшифровке прав отобразятся типы элементарных привилегий. 2. Раздайте права на типы элементарных привилегий \ Права на типы можно раздавать либо в расшифровке пара либо в дереве административных объектов 3. Обновите индексы системных привилегий ### Выдача прав на элементарную привилегию 1. Выберите требуемый `элемент администрируемого объекта` \ При этом в расшифровке прав отобразятся типы элементарных привилегий. 2. Раздайте права на типы элементарных привилегий \ Для этого в расшифровке прав выберите нужный элемент и предоставьте к нему доступ. 3. Обновите индексы системных привилегий ```{note} Если установить признак "Запрещено", то пользователи, обладающие этой ролью, не будут иметь прав на запрещенную привилегию, даже если другие роли дают на нее доступ. ``` ### Выдача прав на вызов Api и Pkg методов в jexl-контексте ```{note} Для того, чтобы при выполнении jexl-скриптов учитывались настроенные права, необходимо включить в общих настройках модулей btk - "Выполнение jexl-скриптов через безопасный диалект". ``` 1. В карточке `Роли` на закладке `Права вызовов через jexl-script` слева отображен список Api и Pkg классов проекта. Справа - их методы. 2. Для выбора/снятия доступа ко всем методом класса используйте чек-бокс `Доступны все методы`, в списке методов можно настроить доступ к конкретному методу класса. 3. Обновите индексы системных привилегий ### Выдача прав на пакеты и классы в jexl-контексте ```{note} Для того, чтобы при выполнении jexl-скриптов учитывались настроенные права, необходимо включить в общих настройках модулей btk - "Выполнение jexl-скриптов через безопасный диалект". ``` 1. В карточке `Роли` на закладке `Права на пакеты/классы из jexl` можно задавать пакеты и классы, к которым у пользователя должен быть доступ: - `Тип привилегии` - указывается `package` или `class` для пакета или класса, соответственно - `Имя привилегии` - полное имя пакета или класса - `Методы` - методы класса, на которые надо выдать права (если пусто, то доступны все методы). Указываются в квадратных скобках, через запятую, каждый метод обернут в кавычки - `["methodName1", "methodName2"]` - `Указанные методы исключающие` - если включить галку, то будут доступны все методы класса, кроме указанных 2. В детализации на закладке `Исключения` для пакетов можно указывать их внутренние пакеты или классы, на которые доступ выдаваться не должен. Пример выдачи прав на пакет `java.lang`, исключая вложенный пакет `java.lang.some.pkg` ![Пример 1](img/jexl_priv_1.png) Пример выдачи прав на методы `methodName1` и `methodName2` класса `java.lang.Long` ![Пример 2](img/jexl_priv_2.png) ### Выдача прав на использование Rest-пакетов 1. В карточке `Роли` на закладке `Права на Rest-пакеты` отображен список пакетов. Чекбокс `Rest-пакет` указывает, является ли пакет Rest-пакетом. 2. Для выдачи\отзыва доступа используйте чекбокс `Имеет доступ`. 3. Обновите индексы системных привилегий по роли. ```{note} Обновление списка Rest-пакетов происходит при обновлении адм.объектов по модулю. С пакетов, которые перестали быть Rest-пакетами, чекбокс `Rest-пакет` автоматически снимается. ``` ## Групповая настройка привилегий ролей Выборка `Групповая настройка привилегий ролей` предназначена для массовой раздачи привилегий по ролям от административного объекта. Выборку можно открыть из пункта меню: - `Администратор \ Доступ > Групповая настройка привилегий ролей` Общий принцип работы с выборкой: 1. Выберите требуемый административный объект 2. Выберите требуемые роли \ Для этого в панели фильтрации привилегий откройте список подбора для поля `Перечень ролей` 3. Проставьте гранты на требуемых привилегиях 4. Пересчитайте индексы привилегий \ Для этого выполните операцию `Пересчитать индексацию привилегий` в интерфейсе `Перечень ролей` ### Дерева администрируемых объектов Дерево администрируемых объектов состоит из следующих уровней: - Группа администрируемых объектов(Опционально) - Объект администрирования - Узел администрирования - Элемент администрируемого объекта Объекты администрирования могут не входить в группу, тогда они будут считаться корневыми записями. #### Операции дерева администрируемых объектов - `Обновить выбранный объект` \ Операция предназначена для обновления выделенного объекта или элемента адм. объекта. При обновлении административного объекта происходит сканирование исходного кода по которому добавляются недостающие привилегии и элементы. - `Обновить адм. объект по имени` \ При этом произойдет запрос имени и произойдет обновление административного объекта по выбранному имени - `Обновить адм. объекты модуля` \ Операция предназначена для обновление адм. объектов по всему модулю ```{note} Классы-коллекции не имеют собственных объектов администрирования и входят в объект мастера. Поэтому для обновления настроек для коллекций необходимо обновлять адм. объект по имени класса мастера. ``` ### Настройка прав Закладка отображает настройку прав для ролей в зависимости от выделенной записи в дереве администрируемых объектов: 1. Для административного объекта: - объектные привилегии 2. Для элемента администрирования: - типы элементарных привилегий - элементарные привилегии Колонки ролей в настройке прав формируются динамически по ролям из фильтра. #### Операции настройки прав: - `Подобрать роли` \ Операция предназначена для подбора в фильтр ролей, для которых есть какие-либо права для текущего объекта или элемента. #### Пользователи Отображаются пользователи для роли в активной ячейки. #### Профили Отображаются профили для роли в активной ячейки. ## Индексация привилегий для пользователей ### Индексация пользователя Для пересчета индекса по 1-му пользователю существует операция `Пересчитать индексацию привилегий для текущего пользователя` Операция доступна: - в списке и карточке `Пользователей` - на закладке `Пользователи роли` в списке и карточке Ролей. ### Индексация всех пользователей Для индексации привилегий всех пользователей предназначена операция `Пересчитать индексацию привилегий для всех пользователей`. Операция доступна: - в списке `Пользователей`. ## Аудит прав доступа Историю изменений прав доступа можно посмотреть в `Аудит прав доступа`, находящемся в пункте меню `Аудит`. ```{note} Для включения аудита изменений прав доступа необходимо выполнить операцию `Включить аудит для структур прав доступа` в этом меню. ``` В самом типе необходимо выбрать `Вид объекта` (Пользователь, Профиль или Роль), `Объект` и, если необходимо, период времени. ### Пользователи Для пользователей в аудите отображаются `Профили`, которые были выданы пользователю или отобраны у него, дата изменения и изменивший пользователь. ### Профили Для профилей в аудите отображаются `Роли`, которые включали в профиль или убирали из него, и `Пользователи`, которым выдавался профиль или его отбирали, а также дата изменения и изменивший пользователь. ```{note} В списке изменений для `Пользователей` и `Профилей` есть операция `Изменения по объекту`, которая позволяет перейти к аудиту другого объекта, который является выделенным. ``` ### Роли Для ролей список изменений представляет собой две выборки: - `Дерево администрируемых объектов` \ Отображаются администрируемые объекты или элементы администрирования, по которым для данной роли были совершены изменения - `Список привилегий конкретного администрируемого объекта` \ Список привилегий конкретного адм. объекта или элемента администрирования, которые изменялись для данной роли Список привилегий представляет из себя: 1. Имя адм. объекта или элемента администрирования 2. Тип привилегии: - Изменение атрибута (например, при простановке `Не распространяются настройки администрирования` для адм. объекта), - Объектная привилегия, - Элементарная привилегия, - Группа элементарных привилегий (когда изменяются доступ не на конкретные элементарные привилегии, а на всю группу, например, Редактирование) - Перевод состояния 3. Системное имя привилегии 4. Привилегия - наименование привилегии 5. Изменивший пользователь 6. Дата изменения 7. Системное имя атрибута 8. Наименование атрибута 9. Старое значение - старое значение атрибута 10. Новое значение - новое значение атрибута ```{note} Для списка привилегий есть фильтр `С входящими`, который в случае, когда в дереве адм. объектов выбран адм. объект, а не элемент администрирования, отображает изменения не только администрируемого объекта, но и элементов администрирования, входящих в этот объект. ``` ## Трассировка прав доступа ### Запуск трассировки прав пользователя Для запуска трассировки прав пользователя, выполните следующие шаги: - Перейдите в раздел "Сервис" в меню системы. - В меню "Инструменты" найдите опцию "Начать трассировку прав" и выберите её. После начала трассировки, система будет отслеживать все ваши действия. Выполняйте необходимые действия с данными в системе, так как вам требуется. Чтобы завершить трассировку прав пользователя, выполните следующие шаги: - Перейдите снова в раздел "Сервис" в меню системы. - В меню "Инструменты" выберите опцию "Закончить трассировку прав". ### Отчет сессии трассировки прав Отчет "сессии трассировки прав пользователей" выведен в приложении "Администратор", в меню "Отчеты". Отображает список сессий трассировки. При открытии карточки сессии в детализации будет отображена более подробная информация по проверкам прав, которые вызывались в ходе сессии трассировки. ### Очистка записей Сессии трассировки сохраняются в таблицу Btk_AcTraceSession, а детализация сессии в Btk_AcTraceJournal. Для очистки этих таблиц предусмотрен по умолчанию регистрируется задание очистки данных по классу "Btk_AcTraceSession", удаляющий записи, хранящиеся больше 30 дней. ### Реализация трассировки При запуске трассировки - в параметрах рабочей сессии сохраняется параметр активности трассировки; - создается новая запись в Btk_AcTraceSession в логирующей транзакции; - в параметрах рабочей сессии сохраняется параметр с идентификатором запущенной сессии трассировки; - для уже открытых выборок подключается подписка на события, так же она подключается на onLoadAdminMeta при открытии новой выборки; При действиях пользователя во время трассировки - на методах проверки прав доступа, вызов операции/сеттера на администрируемых выборках, создается запись в логирующей транзакции в Btk_AcTraceJournal; При завершении трассировки - вызывается коммит логирующих транзакций со всех запущенных сессий выборок; - в сессию трассировки Btk_AcTraceSession сохраняется дата завершения; - отключается подписка на события, подключенная для логирования; - из параметров рабочей сессии удаляются параметр активности трассировки и идентификатор сессии трассировки.