Перейти к основному содержанию
`Ctrl`+`K`

# Приложение администратор

Приложение `Администратор` используется для администрирования пользователей.

## Список пользователей

Список пользователей можно открыть из пункта меню:

- `Администратор \ Доступ > Пользователи`

Операции списка пользователей:

- `Пересчитать индексацию привилегий для текущего пользователя`
  Операция предназначена для обновления индексов системных привилегий для текущего пользователя. В результате операции обновятся записи в индексе(`Btk_AcUserItemPrivFlat`) по всем элементам администрируемых объектов на привилегии, которых у пользователя есть права, а также записи в индексе(`Btk_AcUserObjPrivFlat`) по всем администрируемым объектам, на объектные права которых у пользователя есть права.

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

## Карточка пользователя

Операции карточки пользователя:

- `Изменить пароль`
  Операция предназначена для установки пароля для входа в систему для пользователя.

- `Пересчитать индексацию привилегий для текущего пользователя`
  Операция предназначена для обновления индексов привилегий для текущего пользователя.

## Детализация пользователя

В карточке и списке доступна детализация, содержащая закладки:

- `Профили доступа`
  Список записей в классе-развязке(`Btk_AcUserGrant`) со ссылкой на профиль. Для закладки `Профили доступа` доступна детализация с закладкой `Роли доступа профиля`, отображающая список записей в классе-развязке(`Btk_AcProfileGrant`) со ссылкой на роль

- `Роли доступа`
  Список ролей, связанных с пользователем через профиль

- `Индексация элементарных привилегий`
  Список записей в `Btk_AcUserItemPrivFlat` для текущего пользователя.

- `Индексация объектных привилегий`
  Список записей в `Btk_AcUserObjPrivFlat` для текущего пользователя.

Для закладок `Индексация элементарных привилегий` и `Индексация объектных привилегий` доступна операция

- `Посмотреть значение индекса`
  Операция открывает в модальном окне содержимое поля(`cPriv`) с перечнем доступных привилегий для элемента или объекта.

### Синхронизация с Active Directory

Для синхронизации:

1. Выполните операцию `Синхронизация с Active Directory`
   Операция доступна в списке пользователей. При этом откроется интерфейс синхронизации отображающий список логов.

2. При необходимости укажите шаблон в шапке интерфейса
   Вновь созданные пользователи будут созданы по этому шаблону

3. Нажмите кнопку `Синхронизировать`
   При этом будут просканированы домены на наличие групп и пользователей. Произойдет синхронизация пользователей

Синхронизируемы поля пользователей:

- `Системное имя`
  Атрибут `sAMAccountName`, если он пустой, то берётся из `uid`

- `Пароль`
  Равен системному имени при создании пользователя

- `Группа`
  Определяется через атрибут `memberOf`

- `Подразделение Active Directory` Атрибут `department`

- `Наименование Active Directory` Атрибут `title`

- `Описание Active Directory` Атрибут `description`

- Для физ. лица:

  - `Фамилия`
    Первое слово из атрибута `displayName`, если в нём три слова. В ином случае атрибут `sn`.

  - `Имя`
    Второе слово из атрибута `displayName`, если в нём три слова. Первое слово из атрибута `givenName`, если в нём два слова. В ином случае атрибут `givenName` целиком.

  - `отчество`
    Третье слово из атрибута `displayName`, если в нём три слова. Второе слово из атрибута `givenName`, если в нём два слова.

  - `email`
    Атрибут `mail`

Синхронизируемые поля групп:

- `Наименование`
  Атрибут `name`, если он не указан, то полное имя. Например: `CN=Domain users,CN=Users`

- `Системное имя`
  Полное имя группы. Например: `CN=Domain users,CN=Users`

Пользователи создаются только в случае, если они не заблокированы в домене. Если пользователь заблокирован, и уже зарегистрирован в системе Global, то ему выставляется признак «Заблокирован».

Помимо непосредственной синхронизации пользователей, происходит поиск/создание физ. лиц для пользователей. Для тех пользователей, у которых нашлось/создалось физическое лицо, создаётся ещй и сотрудник в Bs_Employee. В случае если у группы пользователя настроена ещё и связь с ОФС, то для сотрудника создастся соответствующая запись в Bs_OFSEmployee. Если у связанной ОФС настроены профили доступа, то эти пользователи применятся и на пользователя.

#### Настройка синхронизации

Для настройки подключения используется универсальный класс настроек (`Btk_Setting`). Открыть настройки можно из пункта меню `Настройка системы \ Настройки и сервисы > Настройки модулей системы > Общие настройки системы` Далее следует открыть настройки модуля `btk` и выбрать настройку `ldapSync` Доступные параметры:

- `Создавать физ. лицо`
  Если параметр выключен - для пользователей, которые появились в результате синхронизации, будут искаться соответствующие физ. лица (Bs_Person). Поиск осуществляется по совпадению фамилии, имени и отчества. В физ. лице будет установлена ссылка на пользователя и почта (при наличии в AD).

Если параметр включен - для пользователей, у которых не удалось найти существующее физ. лицо, будет создано новое физ. лицо с ФИО и почтой из AD

- `Тип синхронизации`
  Все пользователи - Настройка фильтра по группе отключается и синхронизация возьмёт всех пользователей из выбранных доменов вместе с их группами. Группа переносится из AD только в случае, если она находится в одном из выбранных доменов. Если группа находится вне списка выбранных доменов, то она не переносится.

Пользователи группы - Настройка фильтра по группе включается и в выбранных доменов идёт поиск всех подгрупп группы указанной в фильтре. Далее ищутся пользователи, которые входят в найденные подгруппы.

- `Фильтр по группе`
  Механика работы описана выше. Задаётся в виде `CN=...,OU=...,DC=...`

- `Домены`
  В этом параметре можно задать список доменов, в которых будет осуществляться поиск, у каждого домена есть свои параметры:

  - `Добавить домен к пользователю`
    Если параметр активен, то к имени пользователя будет добавляться имя домена, в котором он был найден. В противном случае - имя пользователя будет браться из AD без изменений

  - `Домен`
    Пример: `part.gs.local`

  - `Логин`

  - `Пароль`

  - `URL`
    Пример: `ldap://192.168.2.11:389`

Так же для применения профилей доступа на пользователей, можно задать связь между пользовательскими группами и ОФС в классе «Соответствие групп пользователей и офс» (Bs_OFStructureUserGroupLink). Тогда ко всем пользователям группы в будущем при синхронизации будет применяться профиль доступа настроенный на ОФС.

## Список ролей

Список ролей можно открыть из пункта меню:

- `Администратор \ Доступ > Роли`

## Карточка роли

Используется для выдачи привилегий для роли от дерева административных объектов.

### Права роли

В данном интерфейсе отображается дерево административных объектов с уровнями:

- Группа администрируемых объектов(только чтение)

  - Объект администрирования

    - Узел администрирования

      - Элемент администрируемого объекта

Совет

По умолчанию отображаются только административные объекты использующиеся в роли. Для отображения всех административных объектов выключите флаг `Только объекты, на которые у роли имеются права` в панели фильтрации.

В данной интерфейсе каждый тип элементарной привилегии отображен отдельным столбцом, что позволяет выдать права массово по типу для всех элементарных привилегий этого типа для текущего уровня и уровней ниже.

#### Расшифровка прав

В случае если выбран объект администрирования отображает:

- перечень типов элементарных привилегий

- перечень объектных привилегий

В случае если выбран элемент администрируемого объекта отображает:

- перечень элементарных привилегий для данной строки

#### Перевод состояний

Отображается в случае если выбран объект администрирования. Позволяет настроить возможные переходы между состояниями.

### Функции отображения

Для работы системы администрирования в отображении объявлены следующие функции:

- `onLoadAdminMeta` - Применяет настройки администрирования.

- `acObject` - Возвращает имя администрируемого объекта.

- `acObjectBundle` - Имя узла администрирования.

- `acObjectItem` - Имя элемента администрирования.

- `isAdministraded` - Признак, что выборка администрируется.

### Функции проверки привилегий и ролей

- `ru.bitec.app.btk.Btk_AdminPkg#hasObjPriv` - Проверяет наличие объектной привилегии у пользователя.

- `ru.bitec.app.btk.Btk_AdminPkg#hasStateChangePriv` - Проверяет наличе привилегии на перевод состояния.

- `ru.bitec.app.btk.Btk_AdminPkg#hasRole` - Проверяет наличие у пользователя роли.

### Выдача прав на объектные привилегии

1. Выберите требуемый адм. объект.
   При этом в расшифровке прав отобразятся объектные привилегии

2. Раздайте права на объектные привилегии роли \

3. Обновите индексы системных привилегий

### Выдача прав на тип элементарных привилегий

В случае если выдано право на тип элементарной привилегии, доступ будет дан всем элементарным привилегиям данного типа во всех элементах администрируемого объекта.

1. Выберите требуемый `адм. объект`
   При этом в расшифровке прав отобразятся типы элементарных привилегий.

2. Раздайте права на типы элементарных привилегий
   Права на типы можно раздавать либо в расшифровке пара либо в дереве административных объектов

3. Обновите индексы системных привилегий

### Выдача прав на элементарную привилегию

1. Выберите требуемый `элемент администрируемого объекта`
   При этом в расшифровке прав отобразятся типы элементарных привилегий.

2. Раздайте права на элементарные привилегий
   Для этого в расшифровке прав выберите нужный элемент и предоставьте к нему доступ.

3. Обновите индексы системных привилегий

Примечание

Если установить признак «Запрещено», то пользователи, обладающие этой ролью, не будут иметь прав на запрещенную привилегию, даже если другие роли дают на нее доступ.

#### Администрирование универсальных характеристик

Для разграничения доступа пользователей к универсальным характеристикам в динамически расширенных (с помощью свойства атрибута «Видимость в списке») списках и карточках объектных характеристик предусмотрены стандартные привилегии на чтение и изменение. Они названы в соответствии с системными именами УХ и имеют вид `UC_<системное имя УХ>`

Примечание

Если внутри элемента администрируемого объекта отсутствуют права на чтение и изменение уже наложенных универсальных характеристик, необходимо обновить администрируемый объект!

Кроме того, определены привилегии, предоставляющие доступ ко всем универсальным характеристикам сразу. При выдаче для роли такой «общей» привилегии открывается доступ ко всем универсальным характеристикам класса, шаблона и типа объекта. Для ссылочных атрибутов в имени привилегии используется постфикс `HL`, для значимых - без него.

Список «общих» привилегий:

- Для расширенных списков

  - Чтение

    - `objAttrValue`

    - `objAttrValueHL`

  - Редактирование

    - `setobjAttrValue`

    - `setobjAttrValueHL`

- Для карточек объектных характеристик

  - Чтение

    - `sValue`

    - `sValueHL`

  - Редактирование

    - `setsValue`

    - `setsValueHL`

Явные настройки на уровне конкретной характеристики имеют приоритет над общими:

Сценарий | Глобальная привилегия | Настройка для конкретной УХ | Результат
--- | --- | --- | ---
Глобально редактирование разрешено, одна УХ запрещена | ✅`setobjAttrValue` | ⛔`setUC_nNum` | Все УХ доступны для редактирования, кроме `nNum`
Глобально чтение запрещено, одна УХ разрешена | ⛔`sValueHL` | ✅`UC_idDepOwner` | Чтение всех УХ запрещено, но `idDepOwner` доступна

### Выдача прав на использование Rest-пакетов

1. В карточке `Роли` на закладке `Права на Rest-пакеты` отображен список пакетов. Чекбокс `Rest-пакет` указывает, является ли пакет Rest-пакетом.

2. Для выдачи\отзыва доступа используйте чекбокс `Имеет доступ`.

3. Обновите индексы системных привилегий по роли.

Примечание

Обновление списка Rest-пакетов происходит при обновлении адм.объектов по модулю. С пакетов, которые перестали быть Rest-пакетами, чекбокс `Rest-пакет` автоматически снимается.

## Групповая настройка привилегий ролей

Выборка `Групповая настройка привилегий ролей` предназначена для массовой раздачи привилегий по ролям от административного объекта.

Выборку можно открыть из пункта меню:

- `Администратор \ Доступ > Групповая настройка привилегий ролей`

Общий принцип работы с выборкой:

1. Выберите требуемый административный объект

2. Выберите требуемые роли
   Для этого в панели фильтрации привилегий откройте список подбора для поля `Перечень ролей`

3. Проставьте гранты на требуемых привилегиях

4. Пересчитайте индексы привилегий
   Для этого выполните операцию `Пересчитать индексацию привилегий` в интерфейсе `Перечень ролей`

### Дерева администрируемых объектов

Дерево администрируемых объектов состоит из следующих уровней:

- Группа администрируемых объектов(Опционально)

  - Объект администрирования

    - Узел администрирования

      - Элемент администрируемого объекта

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

#### Операции дерева администрируемых объектов

- `Обновить выбранный объект`
  Операция предназначена для обновления выделенного объекта или элемента адм. объекта. При обновлении административного объекта происходит сканирование исходного кода по которому добавляются недостающие привилегии и элементы.

- `Обновить адм. объект по имени`
  При этом произойдет запрос имени и произойдет обновление административного объекта по выбранному имени

- `Обновить адм. объекты модуля`
  Операция предназначена для обновление адм. объектов по всему модулю

Примечание

Классы-коллекции не имеют собственных объектов администрирования и входят в объект мастера. Поэтому для обновления настроек для коллекций необходимо обновлять адм. объект по имени класса мастера.

### Настройка прав

Закладка отображает настройку прав для ролей в зависимости от выделенной записи в дереве администрируемых объектов:

1. Для административного объекта:

- объектные привилегии

2. Для элемента администрирования:

- типы элементарных привилегий

  - элементарные привилегии

Колонки ролей в настройке прав формируются динамически по ролям из фильтра.

#### Операции настройки прав:

- `Подобрать роли`
  Операция предназначена для подбора в фильтр ролей, для которых есть какие-либо права для текущего объекта или элемента.

#### Пользователи

Отображаются пользователи для роли в активной ячейки.

#### Профили

Отображаются профили для роли в активной ячейки.

## Индексация привилегий для пользователей

### Индексация пользователя

Для пересчета индекса по 1-му пользователю существует операция `Пересчитать индексацию привилегий для текущего пользователя` Операция доступна:

- в списке и карточке `Пользователей`

- на закладке `Пользователи роли` в списке и карточке Ролей.

### Индексация всех пользователей

Для индексации привилегий всех пользователей предназначена операция `Пересчитать индексацию привилегий для всех пользователей`. Операция доступна:

- в списке `Пользователей`.

## Аудит прав доступа

Историю изменений прав доступа можно посмотреть в `Аудит прав доступа`, находящемся в пункте меню `Аудит`.

Примечание

Для включения аудита изменений прав доступа необходимо выполнить операцию `Включить аудит для структур прав доступа` в этом меню.

В самом типе необходимо выбрать `Вид объекта` (Пользователь, Профиль или Роль), `Объект` и, если необходимо, период времени.

### Пользователи

Для пользователей в аудите отображаются `Профили`, которые были выданы пользователю или отобраны у него, дата изменения и изменивший пользователь.

### Профили

Для профилей в аудите отображаются `Роли`, которые включали в профиль или убирали из него, и `Пользователи`, которым выдавался профиль или его отбирали, а также дата изменения и изменивший пользователь.

Примечание

В списке изменений для `Пользователей` и `Профилей` есть операция `Изменения по объекту`, которая позволяет перейти к аудиту другого объекта, который является выделенным.

### Роли

Для ролей список изменений представляет собой две выборки:

- `Дерево администрируемых объектов`
  Отображаются администрируемые объекты или элементы администрирования, по которым для данной роли были совершены изменения

- `Список привилегий конкретного администрируемого объекта`
  Список привилегий конкретного адм. объекта или элемента администрирования, которые изменялись для данной роли

Список привилегий представляет из себя:

1. Имя адм. объекта или элемента администрирования

2. Тип привилегии:

- Изменение атрибута (например, при простановке `Не распространяются настройки администрирования` для адм. объекта),

- Объектная привилегия,

- Элементарная привилегия,

- Группа элементарных привилегий (когда изменяются доступ не на конкретные элементарные привилегии, а на всю группу, например, Редактирование)

- Перевод состояния

3. Системное имя привилегии

4. Привилегия - наименование привилегии

5. Изменивший пользователь

6. Дата изменения

7. Системное имя атрибута

8. Наименование атрибута

9. Старое значение - старое значение атрибута

10. Новое значение - новое значение атрибута

Примечание

Для списка привилегий есть фильтр `С входящими`, который в случае, когда в дереве адм. объектов выбран адм. объект, а не элемент администрирования, отображает изменения не только администрируемого объекта, но и элементов администрирования, входящих в этот объект.

## Трассировка прав доступа

### Запуск трассировки прав пользователя

Для запуска трассировки прав пользователя, выполните следующие шаги:

- Перейдите в раздел «Сервис» в меню системы.

- В меню «Инструменты» найдите опцию «Начать трассировку прав» и выберите её.

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

Чтобы завершить трассировку прав пользователя, выполните следующие шаги:

- Перейдите снова в раздел «Сервис» в меню системы.

- В меню «Инструменты» выберите опцию «Закончить трассировку прав».

### Отчет сессии трассировки прав

Отчет «сессии трассировки прав пользователей» выведен в приложении «Администратор», в меню «Отчеты». Отображает список сессий трассировки. При открытии карточки сессии в детализации будет отображена более подробная информация по проверкам прав, которые вызывались в ходе сессии трассировки.

### Очистка записей

Сессии трассировки сохраняются в таблицу Btk_AcTraceSession, а детализация сессии в Btk_AcTraceJournal. Для очистки этих таблиц предусмотрен по умолчанию регистрируется задание очистки данных по классу «Btk_AcTraceSession», удаляющий записи, хранящиеся больше 30 дней.

### Реализация трассировки

При запуске трассировки

- в параметрах рабочей сессии сохраняется параметр активности трассировки;

- создается новая запись в Btk_AcTraceSession в логирующей транзакции;

- в параметрах рабочей сессии сохраняется параметр с идентификатором запущенной сессии трассировки;

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

- на методах проверки прав доступа, вызов операции/сеттера на администрируемых выборках, создается запись в логирующей транзакции в Btk_AcTraceJournal; При завершении трассировки

- вызывается коммит логирующих транзакций со всех запущенных сессий выборок;

- в сессию трассировки Btk_AcTraceSession сохраняется дата завершения;

- отключается подписка на события, подключенная для логирования;

- из параметров рабочей сессии удаляются параметр активности трассировки и идентификатор сессии трассировки.