Синхронизатор

Описание;
Системные требования для синхронизатора;
Установка синхронизатора;
Настройка синхронизатора;
Создание задания для автоматического запуска синхронизатора;
Сбор отладочной информации.

Описание:

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

Клиент синхронизатора устанавливается в инфраструктуре заказчика и выполняет передачу данных о синхронизируемых объектах Active Directory в серверную часть службы, установленную в облаке LanCloud, которая, в свою очередь, осуществляет актуализацию данных в инфраструктуре LanCloud.

Синхронизация может работать в следующих режимах:

  • Передача данных без паролей — используется при наличии доверенных отношений между AD заказчика и LanCloud
  • Передача данных и паролей от заказчика в LanCloud
  • Передача данных от заказчика в LanCloud, и двусторонняя синхронизация паролей.

Дополнительно, по специальному запросу, синхронизатор может получать значения определенных LDAP-атрибутов из облака и записывать их в определенные LDAP-атрибуты AD заказчика.

Требования к серверу, на котором будет установлен синхронизатор:

  • сервер должен входить в домен, оптимальный вариант — он сам должен являться контроллером домена с глобальным каталогом (в случае, если синхронизатор устанавливается на рядовом сервере, необходимо обеспечить минимальную сетевую задержку для доступа к контроллеру, поскольку ее значение напрямую влияет на скорость и стабильность работы синхронизатора). Если используется мультидоменная синхронизация — то с сервера, на котором установлен синхронизатор, должны быть доступны контроллеры всех требуемых поддоменов для выборки паролей учетных записей. Если контроллер какого-либо домена будет недоступен — оттуда не получится считать пароли.
  • версия ОС: Windows Server 2008 R2 / 2012 / 2012 R2 / 2016 / 2019 / 2022; Это не относится к уровню работы домена/леса (Domain/Forest Operation Level) — минимальный возможный уровень домена и леса — Windows 2003. Но крайне желательно иметь более современный уровень работы домена и леса. Для работы на Windows Server 2022 потребуется специальная донастройка.
  • версия .NET Framework: 4.5.1 или выше. Желательно чем новее, тем лучше.
  • установленный Visual C++ Redistributable 2013 (присутствует в дистрибутиве синхронизатора в файле vcredist_x64.exe).
  • сервер должен иметь доступ к интернету, для автоматического обновления синхронизатора и работы web-службы. Минимальный набор разрешений на доступ: lancloud.ru и sync.lancloud.ru по протоколу HTTPS;
  • каталог, в котором находится синхронизатор, не должен быть внутри системных директорий, находящихся под защитой UAC.  Оптимальный вариант — C:\adsync.
  • Учетная запись, из-под которой работает синхронизатор, должна быть доменной, и обладать правами входа в систему в качестве задания.
  • Если производится синхронизация паролей, то учетная запись должна минимально обладать правом Replicate Directory Changes на домены Active Directory заказчика, либо входить в группу доменных администраторов.
  • Если производится двусторонняя синхронизация паролей, или обратная запись LDAP-атрибутов, то учетная запись должна обладать правом Reset Password на учетные записи Active Directory заказчика, участвующие в синхронизации, либо входить в группу доменных администраторов.

Установка синхронизатора:

Получив дистрибутив синхронизатора, необходимо его распаковать в рабочий каталог, например, C:\ADSync. После этого необходимо предоставить полные права доступа на этот каталог той учетной записи, из-под которой будет работать задание синхронизатора. Далее необходимо необходимо предоставить учетной записи, из под которой будет запускаться задание синхронизатора, право на вход в системе в качестве задания.

Следующий этап — настроить файл конфигурации.

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

Настройки синхронизатора хранятся в файле LCADSync.exe.config. Это обычный xml-файл со стандартным синтаксисом. Ниже представлена та часть его структуры, которая отвечает за пользовательские настройки:

<appSettings>
    <add key="RootOU" value="OU=Root_OU_To_Sync,DC=domain,DC=ru" />
<!--    <add key="RootOUFile" value="./rootous.txt" /> -->
    <add key="DomainName" value="domain.ru" />
    <add key="LogFile" value="./log.txt" />
<!--    <add key="MultiDomain" value="false" /> -->
<!--    <add key="MultiDomainFile" value="./domains.txt" /> -->
<!--    <add key="ExceptionsFile" value="./excepts.txt" /> -->
<!--    <add key="ExceptionAttributes" value="" /> -->
    <add key="LogFile" value="./log.txt" />
    <add key="CloudUsername" value="CLOUDUSER" />
    <add key="CloudPassword" value="CLOUDPASS" />
    <add key="BlockedIsDeleted" value="false" />
    <add key="SyncWithPasswords" value="true" />
    <add key="PasswordWriteback" value="false" />
<!--    <add key="UsersLDAPFilter" value="mail=*" /> -->
<!--    <add key="GroupsLDAPFilter" value="mail=*" /> -->
<!--    <add key="ContactsLDAPFilter" value="mail=*" /> -->
<!--    <add key="UsersTranslatorFile" value="./utr.txt" /> -->
<!--    <add key="GroupsTranslatorFile" value="./gtr.txt" /> -->
<!--    <add key="ContactsTranslatorFile" value="./ctr.txt" /> -->
</appSettings>

Для активации дополнительных ключей необходимо раскомментировать нужную строчку, убрав символы <!— и —>.

Обязательные параметры:

CloudUsername — логин для авторизации на серверной части синхронизатора (предоставляется инженерами LanCloud).
CloudPassword — пароль для авторизации на серверной части синхронизатора (предоставляется инженерами LanCloud).

DomainName — имя домена исходного синхронизируемого AD в FQDN-формате, например, domain.local.
LogFile — имя файла локального журнала, по умолчанию ./log.txt (путь задается относительно рабочего каталога синхронизатора).
RootOU — корневой OU для синхронизации. Задается в формате Distinguished Name — например «OU=S,DC=dom,DC=local» или корень домена «DC=dom,DC=local». Параметр обязательный, даже если задан следующий параметр (несколько выбранных OU). Если задан параметр RootOUFile, то параметр RootOU может указывать на любой OU или корень домена.

Установка области поиска:

RootOUFile — необязательный параметр, имя файла, где лежит список OU, которые синхронизируются. Если параметр не задан — то синхронизируется, то все, что лежит внутри OU указанного в качестве RootOU. Файл, на который указывает этот параметр — это обычный текстовый файл, каждая строка которого — это OU, который надо синхронизировать, в формате Distinguished Name.
BlockedIsDeleted — Этот параметр определяет, необходимо ли синхронизировать в облако те объекты, которые в исходном AD отключены, т.е. если параметр установлен в true, то при отключении пользователя в исходном AD он будет удален в облаке (если конечно не активирован для какой-либо из облачных услуг). Может принимать значение true или false, если не задан, то по умолчанию false.
MultiDomain — При задании значения true, включает режим синхронизации из дочерних доменов леса. При его включении, работает следующая логика: во-первых, все запросы производятся не к доменконтроллеру (порт 389), а к глобальному каталогу (порт 3268), который выбирается как ближайший к тому месту, с которого запускается синхронизатор, во-вторых, анализируются домен, и OU, заданные в параметрах RootDomain и RootOU — а файл RootOUFile игнорируется, даже если он задан, в-третьих, анализируются домены и OU, заданные в файле, указанном в параметре MultiDomainFile. Для режима MultiDomain важно убедиться, что значение RootOU не указывает на корень домена (DC=domain,DC=ru) — ибо, в таком случае, автоматически проведется выборка по всему дереву всех доменов и всех OU, а домены, указанные в файле MultiDomainFile, только задвоят значения. Это происходит потому что выборка в режиме MultiDomain всегда идет через глобальный каталог. Может быть true или false.
MultiDomainFile — имя файла, содержащего список доменов и OU для синхронизации. Формат — нечетная строчка — DNS-имя домена, четная строчка — Distinguished Name OU который надо синхронизировать.

Фильтрация и трансляция:

ExceptionsFile — имя файла, содержащего список учетных записей SAM-логинов пользователей, которые не нужно синхронизировать в облако. Формат файла — на каждой строке SAM-имя учетной записи пользователя.
ExceptionAttributes — перечисленный через запятую список LDAP-атрибутов, которые не нужно синхронизировать в облако. Например, если вы хотите не синхронизировать сотовый телефон, рабочий телефон и факс — нужно указать строку вида «mobile,telephoneNumber,facsimileTelephoneNumber«. Имена LDAP-атрибутов нужно писать именно в том виде, как они называются в схеме, с большими и маленькими буквами.
UPNSuffixFile — имя файла, где находится список суффиксов UPN, подлежащих трансляции. Первая строчка — UPN-суффикс, который присутствует в AD заказчика. Вторая строчка — UPN suffix (публичный домен), который должен быть у пользователя в облаке. И так далее, третья, четвертая строчка, и т.д. Необходимо для того, если пользователь у себя в AD оставляет UPN суффиксы внутреннего домена, а в облаке все логины должны быть с публичными UPN-суффиксами.
UsersLDAPFilter — значение содержит LDAP-фильтр для отбора из области пользователей по параметрам, например mail=* означает что будут отобраны для синхронизации только те пользователи, у которых задан атрибут mail. У кого он не задан — синхронизации не подвергнутся. Если ключ не задан, то отбираются все пользователи.
GroupsLDAPFilter — аналогично вышеуказанному, LDAP-фильтр для отбора групп по параметрам.
ContactsLDAPFilter — аналогично вышеуказанному, LDAP-фильтр для отбора контактов по параметрам.
UsersTranslatorFile — имя текстового файла, содержащего команды для трансляции атрибутов синхронизируемых пользователей. Каждая строчка указанного файла представляет собой команду присвоения нужному атрибуту значения либо из другого атрибута, либо из их комбинации. Если не задан — атрибуты не транслируются.
GroupsTranslatorFile — имя текстового файла, содержащего команды для трансляции атрибутов синхронизируемых групп. Если не задан — атрибуты не транслируются.
ContactsTranslatorFile — имя текстового файла, содержащего команды для трансляции атрибутов синхронизируемых контактов. Если не задан — атрибуты не транслируются.

Пароли:

SyncWithPasswords — если ключ не задан, или false, то учетные записи синхронизируются для работы в трастах AD — как отключенные заглушки, с прописанными MasterSid. Если ключ задан в true — производится выборка и синхронизация в облако хэшей паролей пользователей — как будто бы установка в облаке тех же паролей, которые установлены локально.
PasswordWriteback — если ключ задан в true (имеет смысл только если установлен SyncWithPasswords=true), то включается режим двусторонней синхронизации паролей — локально в облако, и из облака в локально. Если пароль был изменен локально — он будет синхронизирован в облако. Если пароль был изменен в облаке — он будет синхронизирован локально.

Создание задания для автоматического запуска синхронизатора:

Синхронизатор запускается с помощью задания в Task Scheduler’е. Задание можно создать с помощью следующего PowerShell скрипта:

$JobName = "ADSync"
$ADSyncPath =  "C:\adsync\LCUpdater.exe"
$WorkingDir = Split-Path $ADSyncPath
$RepeatEvery = (New-TimeSpan -Minutes 30)

$A = New-ScheduledTaskAction -Execute $ADSyncPath -WorkingDirectory $WorkingDir
$D = (New-TimeSpan -Days 1)
$T = New-ScheduledTaskTrigger -Daily -At (Get-Date).Date -DaysInterval 1
$T.Repetition = $(New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval $RepeatEvery -RepetitionDuration $D).Repetition

$msg = "Enter the username and password that will run the ADSync task"; 
$credential = $Host.UI.PromptForCredential("Task username and password",$msg,"$env:userdomain\$env:username",$env:userdomain)
$username = $credential.UserName
$password = $credential.GetNetworkCredential().Password
$S = New-ScheduledTaskSettingsSet -StartWhenAvailable -DontStopOnIdleEnd -ExecutionTimeLimit (New-TimeSpan -Minutes 30)

Register-ScheduledTask -TaskName $JobName -Action $A -Trigger $T -RunLevel Highest -User $username -Password $password -Settings $S

В случае, если синхронизатор расположен в директории, отличной от C:\adsync, необходимо исправить путь в переменной $ADSyncPath.

Сбор отладочной информации:

В случае, если в работе синхронизатора возникли какие-то проблемы, службы поддержки может запросить отладочную информацию. В этом случае, необходимо заархивировать все содержимое директории синхронизатора КРОМЕ exe-файлов.