Синхронизация справочника из AD на Linux
Документация
Главная

Синхронизация справочника из 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Произвольное имя подключения
ldapstrue — порт 636 (LDAPS), false — порт 389 (LDAP)
domain_controller_hostFQDN или IP контроллера домена. Порт можно указать через двоеточие
loginUPN или DN сервисной учетной записи
passwordПароль сервисной учетной записи
domain_pathDN подразделения или 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_enabledtrue / falseВключает периодическую автоматическую синхронизацию
account_status_sync_typeDISABLE / SIMPLEX / DUPLEXSIMPLEX — только из AD в Proceset; DUPLEX — в обе стороны
organization_structure_sync_typeDISABLE / ORGANIZATION_UNITСоздавать и обновлять оргструктуру по подразделениям
depersonalization_enabledtrue / falseОчищать персональные данные при удалении сотрудника из AD
primary_mapping_attribute_nameстрокаАтрибут AD для первичного сопоставления сотрудников
primary_mapping_system_field_description_keyстрокаСистемное поле Proceset для первичного сопоставления
checking_inactive_employee_synctrue / 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_enabledtrueРекурсивный обход вложенных групп
sync_employee_group_membership_enabledfalseЗаполнять связи «сотрудник — группа»

Маппинг атрибутов AD

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

Атрибут ADПоле Proceset
sAMAccountNameЛогин
givenNameИмя
snФамилия
middleNameОтчество
mailEmail
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.

Была ли статья полезна?

Предыдущая
Получение информации о группах безопасности AD с помощью GraphQL-запроса
Следующая
Создание keytab-файла
430006, Саранск,
Северо-восточное шоссе, д. 3
ОКВЭД 62.01
ИНН 1328​909857
Код вида деятельности
в области ИТ 15.02 и 17.01
Языки программирования