Синхронизация с Active Directory / LDAP¶
Описание модуля¶
Модуль предназначен для синхронизации с Active Directory / LDAP карточек Сотрудников, Подразделений и Статических ролей.
Tip
Модуль не входит в типовую поставку и приобретается отдельно.
Tip
Начиная с версии 3.3 синхронизация совместима с протоколом LDAPv3.
Посмотреть информацию о доступных модулях, включённых в лицензию можно в приложении Tessa Admin, раздел “Информация”:
Данный модуль может выполнять:
-
периодическую синхронизацию данных в указанные моменты времени;
-
синхронизацию данных по запросу пользователя (вручную).
Модуль синхронизирует:
-
Карточки Сотрудников:
-
ФИО,
-
Логин,
-
Email,
-
Телефон,
-
Мобильный телефон,
-
Домашний телефон,
-
IP телефон,
-
Факс,
-
Должность.
-
Маппинг полей (тип объекта person / user):
Параметр в Active Directory / LDAP |
Параметр в Tessa ([таблица].[поле]) | Описание |
---|---|---|
sAMAccountName / uid |
PersonalRoles.Login |
Логин пользователя. |
sn |
PersonalRoles.LastName |
Фамилия. |
middleName |
PersonalRoles.MiddleName |
Отчество. |
givenName |
PersonalRoles.FirstName |
Имя. |
cn |
PersonalRoles.FullName |
Полное имя. |
facsimileTelephoneNumber |
PersonalRoles.Fax |
Факс. |
telephoneNumber |
PersonalRoles.Phone |
Телефон. |
homePhone |
PersonalRoles.HomePhone |
Домашний телефон. |
mobile |
PersonalRoles.MobilePhone |
Мобильный телефон. |
IpPhone |
PersonalRoles.IPPhone |
IP телефон. |
title |
PersonalRoles.Position |
Должность. |
userAccountControl |
PersonalRoles.LoginTypeID |
Тип входа пользователя (Active Directory/LDAP/Отключен). |
name |
Roles.Name |
Название. |
whenChanged / modifyTimestamp |
Roles.AdSyncWhenChanged |
Дата изменения объекта. |
distinguishedName |
Roles.AdSyncDistinguishedName |
Уникальное имя объекта. |
Фамилия, имя и отчество берутся из указанных выше параметров или на основании параметров cn
, name
, displayName
(если параметры из таблицы пусты).
-
Карточки Подразделений:
-
Название подразделения,
-
Глава подразделения,
-
Сотрудники, входящие в подразделение.
-
Маппинг полей (тип объекта organizationalUnit):
Параметр в Active Directory / LDAP |
Параметр в Tessa ([таблица].[поле]) | Описание |
---|---|---|
managedBy |
DepartmentRoles.HeadUserID |
Руководитель подразделения |
description |
Roles.Description |
Описание объекта. |
whenChanged / modifyTimestamp |
Roles.AdSyncWhenChanged |
Дата изменения объекта. |
distinguishedName |
Roles.AdSyncDistinguishedName |
Уникальное имя объекта. |
-
Карточки Статических ролей:
-
Имя роли,
-
Описание роли,
-
Сотрудники, входящие в статическую роль.
-
Маппинг полей (тип объекта group / ipausergroup / posixgroup):
Параметр в Active Directory / LDAP |
Параметр в Tessa ([таблица].[поле]) | Описание |
---|---|---|
name |
Roles.Name |
Название. |
description |
Roles.Description |
Описание объекта. |
whenChanged / modifyTimestamp |
Roles.AdSyncWhenChanged |
Дата изменения объекта. |
distinguishedName |
Roles.AdSyncDistinguishedName |
Уникальное имя объекта. |
Note
Если в Active Directory / LDAP удален (или заблокирован) сотрудник, удалены подразделение или группа, то после синхронизации в соответствующих карточках Tessa выставится флаг “Скрывать при выборе”. В карточке Сотрудника, помимо этого, поменяется тип входа на “Вход воспрещён”.
Автоматическая синхронизация¶
Для автоматической синхронизации необходимо включить основной плагин AdSyncPlugin и плагин периодической синхронизации AdSyncRecurrentPlugin, выставив в соответствующих конфигурационных xml файлах disabled="false"
. Все конфигурационные файлы плагинов сервиса Chronos хранятся в папке Chronos\Plugins\Tessa\configuration
. Более подробно про плагины см. в разделе Настройка плагинов Chronos.
Затем необходимо настроить конфигурационный файл Chronos\app.json
, добавив в раздел "Settings"
строки, указанные ниже.
Для запуска синхронизации должны быть заполнены следующие параметры: AdSync.Server
, AdSync.User
, AdSync.Password
. Остальные параметры являются опциональными и заполняются при необходимости.
Список настроек:
Параметр |
Пример значения | Описание |
---|---|---|
"AdSync.Server" |
“192.168.0.1” | Контроллер домена. |
"AdSync.Port" |
389 | Порт контроллера домена. По умолчанию 389. |
"AdSync.TimeoutMilliseconds" |
0 | Таймаут на подключение к контроллеру домена. По умолчанию 0 - без ограничений. |
"AdSync.UserDomain" |
“domain” | Домен пользователя, может отличаться от серверного, например, пользователь входит в домен test.test.com , а контроллер домена находится на test.com . |
"AdSync.User" |
“administrator” | Логин пользователя в домене. Можно передать как domain\administrator и не использовать параметр AdSync.UserDomain . |
"AdSync.Password" |
“Master1234” | Пароль пользователя, используется вместе с "ADSync.User" . |
"AdSync.UseSsl" |
false | Использовать SSL шифрование. |
"AdSync.ConnectionAttemptCount" |
10 | Количество попыток соединения с реферальными серверами. По умолчанию 10. |
"AdSync.ConnectionAttemptIdle" |
10 | Пауза между попытками соединения с реферальными серверами в секундах. По умолчанию 10. |
"AdSync.SkipReferral" |
false | Отключение поиска по всем реферальным серверам. |
"AdSync.SkipReferralList" |
[“DC=ForestDnsZones,DC=company,DC=com”, “DC=DomainDnsZones,DC=company,DC=com”] | Отключение поиска по списку реферальных серверов. |
"AdSync.SkipSystemPartitions" |
true | Игнорирование системных разделов, таких как ForestDnsZones, DomainDnsZones, Configuration. |
Далее необходимо открыть карточку “Синхронизация AD / LDAP” (правое меню в Tessa Client - “Настройки→Синхронизация AD / LDAP”) и заполнить eё:
-
В поле “Группа синхронизации сотрудников” указывается DN группы, из которой будут синхронизироваться сотрудники. В случае, если поле не заполнено, будут синхронизированы все сотрудники из корневых элементов;
-
Флаг “Не переименовывать статические роли” позволяет не изменять имя роли в соответствии с именем в LDAP для созданных в системе статических ролей;
-
В таблице “Корневые элементы синхронизации (OU)” указываются OU, которые вместе с иерархией дочерних переносятся в карточки Подразделений, а элементы – в карточки Сотрудников/Статических ролей. Задаются в формате DN. Можно выбрать тип объекта для синхронизации;
-
Блок “Периодическая синхронизация” отвечает за периодическую синхронизацию и позволяет отключить синхронизацию конкретных видов карточек;
-
Блок “Ручная синхронизация” позволяет запустить ручную синхронизацию конкретных типов объектов.
Перед синхронизацией каждого сотрудника система также проверяет, входит ли данный сотрудник в группу, указанную в поле “Группа синхронизации сотрудников”. Если сотрудник не входит в эту группу, то он игнорируется и не будет синхронизирован. Если поле “Группа синхронизации сотрудников” не заполнено, то сотрудник будет синхронизирован.
Если необходимо синхронизировать только сотрудников, то флаг “Синхронизировать подразделения” в таблице “Корневые элементы синхронизации (OU)” должен быть отмечен. В противном случае сотрудники обновлены не будут. Объекты для синхронизации выбираются в разделе периодической синхронизации: если необходимо синхронизировать только сотрудников, то остальные флаги в этом разделе необходимо снять.
Warning
Если ни один корневой элемент не задать, синхронизация Сотрудников, Подразделений и Статических ролей работать не будет.
Автоматическая синхронизация будет выполняться сервисом Chronos с периодом, указанным в плагине AdSyncRecurrentPlugin. По умолчанию плагин запускается раз в сутки в полночь.
Ручная синхронизация¶
Синхронизацию можно выполнять по требованию: синхронизировать отдельные карточки Сотрудников, Подразделений, Статических ролей или запустить полную синхронизацию.
Предварительно необходимо выполнить все настройки, описанные в разделе Автоматическая синхронизация (кроме включения плагина AdSyncRecurrentPlugin).
Запустить полную синхронизацию Сотрудников, Подразделений или Статических ролей можно открыв карточку настроек “Синхронизация AD / LDAP” и нажав на соответствующие кнопки в блоке “Ручная синхронизация”:
Синхронизация выполняется асинхронно. После запуска синхронизации будет создана операция, по которой можно отслеживать прогресс синхронизации. Список всех активных операций можно посмотреть на рабочем месте Администратор, представление “Прочее → Активные операции”.
Также, при необходимости, можно выполнить синхронизацию отдельного объекта, т.е. конкретной карточки Сотрудника, Подразделения или Статической роли. Открыв нужную карточку необходимо раскрыть блок “Синхронизация с Active Directory / LDAP”, нажав левой кнопкой мыши на названии блока. По умолчанию во всех карточках он свёрнут.
В раскрывшемся блоке есть следующие поля:
-
Дата последней синхронизации - дата и время последней синхронизации текущей карточки;
-
Дата последнего изменения - дата и время последнего изменения текущего объекта в Active Directory / LDAP;
-
Уникальное имя (DN) - уникальное имя объекта в Active Directory / LDAP;
-
Active Directory / LDAP ID - идентификатор объекта в Active Directory / LDAP;
-
Синхронизация отключена - флаг для отключения синхронизации текущей карточки;
-
Синхронизируется независимо от корневых элементов - флаг для синхронизации, даже если объект не принадлежит к дереву корневых элементов;
-
Кнопка “Запустить ручную синхронизацию” - кнопка для запуска ручной синхронизации текущей карточки.
В случае, если необходимо связать уже созданные в Tessa Подразделения, Сотрудников или Статические роли, то можно заполнить поле “Уникальное имя (DN)” и выполнить ручную синхронизацию. Синхронизация найдет запись в домене по указанному DN и свяжет записи между собой. Связывание выполняется по атрибуту objectGuid.
Note
Сотрудники, добавленные в Подразделение или Статическую роль вручную (у Сотрудника не заполнено поле AdSyncID), а так же Сотрудники с флагом “Синхронизация отключена” не удаляются из состава роли/подразделения при синхронизации Подразделений.
Алгоритм работы синхронизации¶
После того, как операция синхронизации была создана вручную или периодическим плагином Chronos (AdSyncRecurrentPlugin), её подхватывает плагин AdSyncPlugin, который обрабатывает операции раз в 30 секунд (по умолчанию, настраивается в configuration/AdSyncPlugin.xml).
В первую очередь проверяется возможность перерасчёта ролей (раздел Активные операции). Если плагин не смог взять эксклюзивную блокировку (потому что длительное время выполнялась другая операция с ролями, такая как пересчёт замещений), то в лог пишется предупреждение, работа плагина при этом завершается (до следующего запуска).
После взятия блокировки из операции извлекается тип операции: синхронизация отдельной карточки или всех объектов.
-
Если выполняется синхронизация отдельной карточки (например, по кнопке в карточке сотрудника):
-
Для заданного типа проверяются все объекты с заполненным DN, но пустым AdSyncID, и выполняется поиск соответствий для объектов в системе и в Active Directory / LDAP.
-
После этого по AdSyncID синхронизируемой карточки запрашивается объект из Active Directory / LDAP.
-
После получения объекта выполняется синхронизация значений его свойств.
-
-
Если выполняется синхронизация всех объектов:
-
Проверяются все объекты с заполненным DN, но пустым AdSyncID, и выполняется поиск соответствий для объектов в системе и в Active Directory / LDAP.
-
Система получает список ID корней, для которых включена синхронизация. После этого выполняется рекурсивный обход всех дочерних корней и проверяется, принадлежат ли они к списку корней, для которых включена синхронизация.
-
Если принадлежат, то выполняется синхронизация выбранных в настройках объектов.
-
После того, как рекурсивно будет пройден весь лес Active Directory / LDAP, проверяются объекты в системе, у которых выставлен флаг “Синхронизируется независимо от корневых элементов”. Такие объекты синхронизируются как отдельные карточки (см выше).
-
После завершения синхронизации, если не было никаких ошибок, происходит скрытие элементов, которые не были обновлены системой, - такие объекты считаются удалёнными в домене, и поэтому для них устанавливается флаг “Скрывать при выборе”, фактического удаления не происходит.
-