Архитектура и компоненты модуля синхронизации

Диаграмма контейнеров

Архитектура модуля синхронизации построена по принципу взаимодействия независимых сервисов, выполняющих сбор, обработку и применение изменений в доменах. Общая структура подсистемы представлена на следующей диаграмме.

../../../_images/49.png

syncer-pwdsync - Сервис выполняет синхронизацию паролей пользователей между доменами.

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

syncer-loadrunner - Сервис применяет накопленные изменения из базы данных в контроллере домена.

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

Инициатор информационного обмена

Адресат информационного обмена

Протокол

Передаваемая информация

Портал управления

WebUI

HTTPS

Управление подсистемой и запись команд управления

Портал управления

PostgreSQL

PSQL

Управление подсистемой и получение состояния подсистемы

syncer-pwdsync

PostgreSQL

PSQL

Хранение данных синхронизации

syncer-pwdsync

Active Directory

LDAPS

Выгрузка и установка паролей пользователей домена

syncer-pwdsync

dirsrv@REALM

LDAPS

Выгрузка и загрузка данных синхронизации

syncer-watcher

PostgreSQL

PSQL

Хранение данных синхронизации

syncer-watcher

Active Directory

LDAPS

Выгрузка объектов домена

syncer-watcher

dirsrv@REALM

LDAPS

Выгрузка объектов домена

syncer-loadrunner

WebUI

HTTPS

Установка данных синхронизации

syncer-loadrunner

Active Directory

LDAPS

Выгрузка и загрузка данных синхронизации

syncer-loadrunner

dirsrv@REALM

LDAPS

Выгрузка и загрузка данных синхронизации

syncer-loadrunner

PostgreSQL

PSQL

Хранение данных синхронизации

WebUI

dirsrv@REALM

LDAPS

Управление объектами домена

Функции компонентов

Основная функция модуля синхронизации - однонаправленная синхронизация объектов (пользователь, группа пользователей и подразделение) из LDAP-источника в целевой LDAP, с сохранением иерархии. Обратная синхронизация возможна только для паролей пользователей и реализована отдельным сервисом. Все сервисы при работе с любым источником данных (LDAP каталог или кеш в PostgreSQL) используют запросы которые возвращают 1000 объектов без сегментирования (непрерывное множество). Это условие выполняется для всех источников данных с настройками по умолчанию.

syncer-watcher

Сервис формирует кеш объектов в БД PostgreSQL без каких либо модификаций. Для исключения возможности пропуска изменений в LDAP-источнике (MS AD Domain Services, DS) все объекты читаются в соответствии с увеличением значения их usnChanged. Каждый обновленный сервисом объект в кеше получает значение sync_status=3, что представляет собой битовое поле из 2 бит: 0b11. Первый бит определяет состояние ссылочной целостности по атрибуту member, второй бит - по атрибуту rbtadp.

syncer-loadrunner

Сервис, следуя в порядке увеличения значений usnChanged в кеше: создает, обновляет и удаляет объекты в соответствии с правилами транслитерации и замены символов. Обработка объектов осуществляется отдельно для каждой точки синхронизации с отдельными счетчиками usnChanged.

После обновления объекта сервис перейдет, в рамках той же точки синхронизации, к восстановлению ссылочной целостности для атрибутов member и rbtadp. При успешном восстановлении значений атрибутов, соответствующий бит сбрасывается в sync_status (операция XOR по маске).

syncer-pwdsync

Сервис не использует кеш в БД PostgreSQL, а оперирует атрибутами userParameters (MS AD DS) и epwd (ALD Pro). Выборка объектов происходит по очередно из каждого LDAP каталога по наличию атрибутов userParameters и epwd в соответствии с увеличением значения usn. Для соблюдения политик паролей, при возвращении пароля из одного LDAP каталога в другой, в том числе обновляется соответствующий атрибут даты изменения пароля. Для корректной работы механизма срока истечения действия пароля, политики паролей в LDAP каталогах должны быть идентичны.