Синхронизация справочника из AD на Linux
На этой странице описана настройка синхронизации пользователей и групп из Active Directory через GraphQL-мутации. Используйте этот способ, если сервер приложения Proceset работает на Linux.
Перед настройкой убедитесь, что выполнены все предусловия: Предусловия для Active Directory при сервере на Linux.
Настройка через веб-интерфейс Proceset описана на странице Синхронизация пользователей с Active Directory.
Что и где выполняется
Часть шагов выполняется на стороне Active Directory, часть — в Proceset через GraphQL. Для настройки в Proceset нужна привилегия «Синхронизация с User Directory» с операциями C (создание), W (изменение) и E (выполнение — тестирование подключения и синхронизация).
Подготовка в AD
Создание сервисной учетной записи
Создайте обычную пользовательскую учетную запись в Active Directory для подключения к контроллеру домена и синхронизации справочника:
New-ADUser -Name "svc-proceset" `
-UserPrincipalName "svc-proceset@corp.local" `
-SamAccountName "svc-proceset" `
-AccountPassword (ConvertTo-SecureString "<strong-password>" -AsPlainText -Force) `
-Enabled $true `
-PasswordNeverExpires $true
Минимально достаточные права — Read all user information на подразделениях (OU) и группах, которые будут синхронизироваться. Права администратора домена не нужны.
Определение путей поиска
Для каждой ветки или группы, которую планируется синхронизировать, узнайте полный DN:
Get-ADOrganizationalUnit -Filter 'Name -eq "Employees"' | Select-Object DistinguishedName
Get-ADGroup -Filter 'Name -eq "Proceset-Users"' | Select-Object DistinguishedName
В поле DomainPath поддерживаются только группы типа Universal Security. Группы Domain Local и Global не поддерживаются.
Экспорт CA-сертификата для LDAPS
Если будет использоваться подключение по LDAPS (порт 636), экспортируйте корневой или промежуточный CA-сертификат:
certutil -ca.cert root-ca.cer
Сертификат понадобится при настройке подключения в Proceset. Сертификат самого контроллера домена не нужен — нужен сертификат издателя.
Создание подключения к контроллеру домена
Выполните мутацию create_connection, чтобы создать логическое подключение к домену вместе с первым адресом и первым путем поиска:
mutation {
app_config {
active_directory {
connection {
create_connection(
name: "Corp AD",
ldaps: true,
domain_controller_host: "dc1.corp.local",
login: "svc-proceset@corp.local",
password: "<strong-password>",
domain_path: "OU=Employees,DC=corp,DC=local",
referral_type: IGNORE
) {
id
name
}
}
}
}
}
Параметры мутации:
| Параметр | Описание |
|---|---|
name | Произвольное имя подключения |
ldaps | true — порт 636 (LDAPS), false — порт 389 (LDAP) |
domain_controller_host | FQDN или IP контроллера домена. Порт можно указать через двоеточие |
login | UPN или DN сервисной учетной записи |
password | Пароль сервисной учетной записи |
domain_path | DN подразделения или Universal Security Group — минимум один обязателен |
referral_type | Поведение при LDAP-переходе: IGNORE, FOLLOW или THROW |
Если используется LDAPS, прикрепите CA-сертификат к тому же HTTP-запросу как multipart-часть. Запрос отправляется как multipart/form-data: первая часть — GraphQL-payload в поле query, вторая часть — бинарный файл сертификата X.509 (DER или PEM).
Проверка подключения
Перед сохранением конфигурации выполните test_connect, чтобы убедиться в доступности контроллера домена:
query {
app_config {
active_directory {
connection {
test_connect(
ldaps: true,
domain_controller_host: "dc1.corp.local",
login: "svc-proceset@corp.local",
password: "<strong-password>",
domain_path: "OU=Employees,DC=corp,DC=local"
) {
... on active_directory_successful_operation {
date_time { format(pattern: "yyyy-MM-dd HH:mm:ss") }
}
... on active_directory_unsuccessful_operation {
date_time { format(pattern: "yyyy-MM-dd HH:mm:ss") }
message
}
}
}
}
}
}
При успехе возвращается active_directory_successful_operation с временной меткой. При ошибке — active_directory_unsuccessful_operation с полем message, содержащим текст ошибки от LDAP-сервера.
Настройка поведения синхронизации
Задайте параметры синхронизации для подключения через мутацию update_connection_config:
mutation {
app_config {
active_directory {
update_connection_config(
id: 1,
sync_enabled: true,
account_status_sync_type: SIMPLEX,
organization_structure_sync_type: ORGANIZATION_UNIT,
depersonalization_enabled: false,
primary_mapping_attribute_name: "sAMAccountName",
primary_mapping_system_field_description_key: "login",
checking_inactive_employee_sync: true
) { id }
}
}
}
Параметры:
| Параметр | Значения | Описание |
|---|---|---|
sync_enabled | true / false | Включает периодическую автоматическую синхронизацию |
account_status_sync_type | DISABLE / SIMPLEX / DUPLEX | SIMPLEX — только из AD в Proceset; DUPLEX — в обе стороны |
organization_structure_sync_type | DISABLE / ORGANIZATION_UNIT | Создавать и обновлять оргструктуру по подразделениям |
depersonalization_enabled | true / false | Очищать персональные данные при удалении сотрудника из AD |
primary_mapping_attribute_name | строка | Атрибут AD для первичного сопоставления сотрудников |
primary_mapping_system_field_description_key | строка | Системное поле Proceset для первичного сопоставления |
checking_inactive_employee_sync | true / false | Деактивировать вход, если учетная запись отсутствует в срезе AD |
Настройка глобальных параметров
Задайте период автосинхронизации и параметры обхода групп:
mutation {
app_config {
active_directory {
update_config(
sync_period: 900000,
sync_nested_group_membership_enabled: true,
sync_employee_group_membership_enabled: false
) {
sync_period
sync_nested_group_membership_enabled
sync_employee_group_membership_enabled
}
}
}
}
Параметры:
| Параметр | По умолчанию | Минимум | Описание |
|---|---|---|---|
sync_period (мс) | 900 000 (15 мин) | 60 000 (1 мин) | Период автоматической синхронизации |
sync_nested_group_membership_enabled | true | — | Рекурсивный обход вложенных групп |
sync_employee_group_membership_enabled | false | — | Заполнять связи «сотрудник — группа» |
Маппинг атрибутов AD
Для основных атрибутов маппинг создается автоматически:
| Атрибут AD | Поле Proceset |
|---|---|
sAMAccountName | Логин |
givenName | Имя |
sn | Фамилия |
middleName | Отчество |
mail | |
employeeID | Табельный номер |
mobile | Телефон |
userAccountControl | Статус (только чтение) |
Чтобы добавить произвольный атрибут, выполните мутацию create_ad_attribute_scheme:
mutation {
app_config {
active_directory {
ad_attribute_scheme {
create_ad_attribute_scheme(
name: "department",
domain_controller_connection_id: 1,
additional_field_id: 42
) { id }
}
}
}
}
Параметр name — имя атрибута AD (например, department, title). Параметр additional_field_id — идентификатор дополнительного поля Proceset, в которое маппируется значение атрибута. Альтернативно можно указать system_field_description_key для маппинга в системное поле.
Запуск синхронизации
Чтобы запустить синхронизацию вручную для конкретного подключения:
query {
active_directory {
run_sync_single_connection(connection_id: 1)
}
}
Чтобы запустить синхронизацию для всех активных подключений:
query {
active_directory {
run_sync
}
}
Следующие шаги
Если требуется настроить Kerberos-аутентификацию: Kerberos/SSO при сервере на Linux.
Была ли статья полезна?