Предусловия для Active Directory при сервере на Linux
Для интеграции Proceset с Microsoft Active Directory при сервере приложения на Linux выполните подготовительные шаги, описанные на этой странице. Они обязательны как для синхронизации справочника пользователей, так и для Kerberos-аутентификации.
Часть шагов выполняется на стороне Active Directory, часть — на стороне Linux.
Подготовка на стороне Active Directory
Сервисная учетная запись для подключения
Создайте обычную пользовательскую учетную запись в Active Directory — она используется для подключения Proceset к контроллеру домена (LDAP bind) и синхронизации справочника:
| Параметр | Значение |
|---|---|
| Тип | Участник группы Domain Users |
| Пароль | Длинный. Настройте Password never expires или согласуйте регламент ротации на стороне Linux |
| Права | Read-only на подразделения (OU) и группы, которые будут синхронизироваться |
| Логин (UPN) | Например, svc-proceset@corp.local — потребуется при настройке подключения |
Учетной записи достаточно права Read all user information на нужных OU. Права администратора домена не нужны.
При использовании Universal Security Groups в доменных путях необходимо, чтобы сервисная учетная запись также входила в Domain Users на уровне соответствующих OU.
CA-сертификат для LDAPS
Если планируется подключение по LDAPS (порт 636), экспортируйте корневой или промежуточный CA-сертификат в формате PEM или DER — он понадобится при настройке подключения и загружается через интерфейс Proceset.
Экспортировать можно через консоль MMC → Certificates → Trusted Root → Export (Base64) или командой:
certutil -ca.cert root-ca.cer
Сертификат самого контроллера домена не нужен — нужен сертификат издателя (корневой или промежуточный CA).
Подготовка для Kerberos-аутентификации
Если планируется Kerberos/SSO, дополнительно создайте сервисную учетную запись для регистрации SPN и сгенерируйте keytab-файл — инструкция на странице Kerberos/SSO при сервере на Linux.
При генерации keytab укажите шифрование AES256-SHA1. Это гарантирует совместимость с политиками домена, которые запрещают устаревшие алгоритмы RC4 и DES.
Подготовка на стороне Linux
Разрешение имен контроллеров домена в DNS
Контейнер Proceset должен разрешать имена контроллеров домена в IP-адреса.
Настройте DNS-сервер контейнера в docker-compose.yml:
services:
proceset:
dns:
- <ip-корпоративного-dns>
Или передайте DNS при запуске: docker run --dns=<ip-корпоративного-dns>.
Добавьте поиск по домену (search corp.local), чтобы использовать короткие имена.
Для Kerberos-аутентификации дополнительно настройте обратное разрешение (PTR-записи) для IP-адресов контроллеров домена.
Проверьте DNS из контейнера:
nslookup dc1.corp.local
nslookup -type=SRV _ldap._tcp.corp.local
nslookup -type=SRV _kerberos._tcp.corp.local
FQDN самого контейнера (для Kerberos)
При использовании Kerberos/SSO браузер запрашивает у KDC билет на имя HTTP/<fqdn-сервиса>. Это имя должно совпадать с SPN, зарегистрированным в AD.
Задайте hostname контейнера через docker-compose.yml:
services:
proceset:
hostname: proceset.corp.local
Проверьте из контейнера:
hostname -f
nslookup proceset.corp.local
nslookup <ip-контейнера>
Синхронизация времени по NTP
Для Kerberos-аутентификации расхождение времени контейнера и контроллера домена не должно превышать 5 минут — иначе аутентификация завершится с ошибкой KRB_AP_ERR_SKEW.
Синхронизируйте время хоста через chronyd или systemd-timesyncd, указывая в качестве источника серверы, которые обслуживают AD (обычно сам PDC Emulator):
chronyc tracking
timedatectl show-timesync --all
Контейнер наследует время от хоста. На Docker Desktop (Windows / WSL2) после выхода из режима сна часы контейнера могут сдвинуться — проверяйте в этом случае отдельно.
Открытые порты до контроллеров домена
С хоста, на котором работает контейнер Proceset, должна быть TCP-доступность до всех контроллеров домена:
| Порт | Назначение | Когда нужен |
|---|---|---|
| 53 | DNS | Всегда |
| 389 | LDAP | При подключении без LDAPS |
| 636 | LDAPS | При подключении с LDAPS |
| 88 | Kerberos (KDC) | При Kerberos-аутентификации |
| 464 | Kerberos (kpasswd) | Опционально, при смене паролей |
Порты LDAP Global Catalog (3268/3269) не используются: Proceset подключается напрямую к 389/636 на адрес контроллера.
Проверьте доступность из контейнера:
nc -zv dc1.corp.local 389
nc -zv dc1.corp.local 636
nc -zv dc1.corp.local 88
Доступный на запись временный каталог
Proceset записывает служебные файлы во временный каталог при старте. Убедитесь, что временный каталог, заданный в конфигурации платформы, доступен на запись внутри контейнера.
На образах с файловой системой только для чтения (read-only) смонтируйте отдельный том или tmpfs на путь временного каталога.
Прямой маршрут до контроллеров домена
Proceset подключается к контроллерам домена напрямую по TCP и не поддерживает HTTP- или SOCKS-прокси между контейнером и контроллером. Если между ними стоит прокси — соединение не установится.
Убедитесь, что от контейнера до контроллеров домена есть прямой L3/L4-маршрут.
Что не нужно делать
Proceset управляет следующими компонентами самостоятельно — выполнять эти шаги вручную не требуется:
- Создавать
/etc/krb5.confв контейнере — Proceset генерирует файл конфигурации Kerberos автоматически. - Монтировать keytab-файл в контейнер — keytab загружается через GraphQL и применяется автоматически при запуске.
- Устанавливать системные пакеты
krb5-userилиopenldap-clientsдля работы — они нужны только для диагностики. - Настраивать
pam_krb5илиsssdна уровне ОС — Proceset обрабатывает Kerberos-аутентификацию самостоятельно.
Проверка готовности
Перед настройкой синхронизации или Kerberos убедитесь, что выполнены все пункты:
На стороне Active Directory:
- Создана сервисная учетная запись
- Для LDAPS — экспортирован CA-сертификат
- Для Kerberos — создана отдельная учетная запись, зарегистрирован SPN, сгенерирован keytab
На стороне Linux:
- Из контейнера разрешаются имена всех контроллеров домена (прямое и обратное разрешение)
- Для Kerberos —
hostname -fвнутри контейнера совпадает с SPN, настроены A- и PTR-записи - Время хоста синхронизировано с контроллерами домена, отклонение менее 5 минут
- Открыты порты 389/636 (LDAP/LDAPS) и 88/464 (Kerberos)
nc -zvподтверждает доступность контроллеров домена из контейнера- Временный каталог
tempDirдоступен на запись - Между контейнером и контроллерами домена нет HTTP/SOCKS-прокси
Следующие шаги
- Синхронизация справочника из AD на Linux — настройка подключения и периодической синхронизации через GraphQL.
- Kerberos/SSO при сервере на Linux — настройка единого входа через Kerberos/SPNEGO.
- Синхронизация пользователей с Active Directory — настройка через веб-интерфейс Proceset.
Была ли статья полезна?