Интеграция с LDAP

Active Directory, OpenLDAP, FreeIPA, ALD Pro, Samba DC и MULTIDIRECTORY.

Для кого эта страница

Страница нужна администратору платформы, который подключает LDAP-каталог и затем назначает права пользователям или группам из этого каталога.

Платформа «Штурвал» совместима с каталогами:

  • Active Directory;
  • OpenLDAP;
  • FreeIPA;
  • ALD Pro;
  • Samba DC;
  • MULTIDIRECTORY.

Если нужно подключить Keycloak или Blitz по OIDC, используйте раздел Внешние провайдеры аутентификации.

Если пользователь входит в большое количество LDAP-групп (более 100), доступ в GUI может быть недоступен, см. Восстановить вход в графический интерфейс.


Шаг 1. Что подготовить

Параметры LDAP обычно выдаёт администратор каталога. Потребуется:

  • адрес LDAP-сервера: FQDN или IP-адрес;
  • порт LDAP-сервера, если он отличается от стандартного: 389 для LDAP или startTLS, 636 для LDAPS;
  • DN учётной записи для подключения к каталогу;
  • пароль этой учётной записи;
  • DN контейнера, где платформа будет искать пользователей;
  • DN контейнера, где платформа будет искать группы.

После этого получите LDAP-атрибуты. Они нужны, чтобы платформа понимала, какое поле каталога является именем пользователя, именем группы, email и связью пользователя с группой.


Шаг 2. Как получить атрибуты через ldapsearch

Выполните ldapsearch, подставив свои значения:

ldapsearch -H Ваш-адрес-LDAP-сервера -b "Ваш-DN-контейнера" -D "Ваш-DN-учетной-записи-пользователя" -w "Ваш-пароль"

Параметры команды:

Параметр Что указать Пример
-H Адрес LDAP-сервера ldap://10.11.12.7
-b DN контейнера, в котором нужно искать пользователей или группы cn=Users,dc=shturval,dc=lab
-D DN учётной записи для подключения к LDAP cn=Administrator,cn=Users,dc=shturval,dc=lab
-w Пароль учётной записи для подключения dkjhdfss

В ответе найдите:

  • атрибут полного имени пользователя;
  • атрибут уникального имени пользователя;
  • атрибут email пользователя или общий email-суффикс;
  • атрибут краткого имени группы.

Указывайте имена атрибутов точно так же, как они пришли в ответе ldapsearch. Регистр символов важен.

Для email пользователя заполните хотя бы одно поле в платформе: Email атрибут или Email суффикс.


Шаг 3. Настройка интеграции с LDAP

  1. Откройте Управление доступомИнтеграция с LDAP.
  2. Заполните данные подключения. Поля подключения должны соответствовать параметрам, с которыми вы проверяли доступ через ldapsearch:
Поле в интерфейсе Параметр ldapsearch Что указать
DN для подключения -D DN учётной записи для подключения к LDAP-каталогу
Пароль для подключения -w Пароль этой учётной записи
Адрес LDAP-сервера -H Адрес LDAP-сервера в формате FQDN или IP-адреса
  1. Нажмите Проверить подключение.
Подключение к LDAP-каталогу

Подключение к LDAP-каталогу

Поиск групп

После успешной проверки подключения заполните блок Поиск групп:

  • Базовый DN поиска групп;
  • Атрибут имени группы.
Поиск групп

Поиск групп

При заполнении полей формируется вывод команды ldapsearch для проверки поиска групп. Чтобы посмотреть запрос, раскройте блок Посмотреть запрос ldapsearch под настройками поиска групп.

Используйте его, чтобы проверить поиск групп из командной строки и передать параметры администратору LDAP-каталога при разборе ошибок.

Поиск пользователей

Заполните блок Поиск пользователей:

  • Базовый DN поиска пользователей;
  • Email атрибут или Email суффикс;
  • Name атрибут;
  • UserName атрибут.
Поиск пользователей

Поиск пользователей

При заполнении полей формируется вывод команды ldapsearch для проверки поиска пользователей. Чтобы посмотреть запрос, раскройте блок Посмотреть запрос ldapsearch под настройками поиска пользователей.

Используйте его, чтобы проверить, какие записи и атрибуты возвращает каталог.

Сопоставление пользователей

В блоке Сопоставление пользователей укажите связь атрибута пользователя и атрибута группы. Эти атрибуты зависят от структуры вашего каталога, поэтому берите их из результата ldapsearch.

Сопоставление пользователей

Сопоставление пользователей

Проверка и сохранение

  1. Нажмите Протестировать.
  2. Если тест прошёл успешно, нажмите Сохранить.

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


Расширенные настройки

В расширенных настройках можно включить TLS, задать Порт и дополнительные параметры поиска.

Для LDAP без защищённого соединения обычно используется порт 389. Для LDAPS обычно используется порт 636. Для LDAP с startTLS обычно используется порт 389. Если ваш LDAP-каталог использует другой порт, укажите порт, который выдал администратор каталога.

При включённом TLS доступны параметры:

Параметр Что означает
Подключение по startTLS Создавать TLS-сессию при подключении к LDAP. По умолчанию отключено.
Включить верификацию CA Проверять сертификат сервера LDAP. Если включаете проверку, загрузите доверенный корневой сертификат.
Клиентский сертификат Файл клиентского сертификата, если он нужен для подключения.
Доверенный корневой сертификат Файл CA, которому должна доверять платформа. Нужен при включённой верификации CA.
Клиентский приватный ключ Файл приватного ключа для клиентского сертификата.
Порт Порт LDAP-сервера. Для LDAPS обычно используют 636, для LDAP/startTLS — 389.
Настройка TLS

Настройка TLS для LDAP

Если вы загружаете TLS-сертификаты и ключи, платформа сохраняет их в формате base64. После настройки эти файлы можно скачать из интерфейса.

После заполнения TLS-параметров нажмите Протестировать. DN и пароль в платформе должны совпадать с данными, которые вы используете при ручной проверке через ldapsearch, например:

ldapsearch -H ldaps://LDAP-СЕРВЕР -b "DN-КОНТЕЙНЕРА" -D "DN-УЧЕТНОЙ-ЗАПИСИ" -w "ПАРОЛЬ"

Если включена верификация CA, проверьте, что загружен правильный доверенный корневой сертификат.

Для поиска пользователей и групп в расширенных настройках доступны:

  • Фильтр — дополнительное условие поиска. Указывайте фильтр в скобках, как в ldapsearch, например (objectClass=group);
  • Scope — область поиска, например sub для поиска по всему дереву или one для поиска на один уровень;
  • PreferredUserName атрибут — поле пользователя с предпочтительным именем.

Если в расширенных настройках указан фильтр, scope или PreferredUserName атрибут, эти значения также попадают в сформированный запрос ldapsearch.

Расширенные настройки поиска

Расширенные настройки поиска


Автоматический режим настройки

Если выбран автоматический режим подключения:

  1. Выберите Каталог
  2. При необходимости укажите базовый DN анализа пользователей, групп и нажмите Выполнить анализ.
  3. Проверьте значения, которые платформа подставила в поля поиска групп и пользователей.
  4. Исправьте значения, если они отличаются от данных из вашего LDAP-каталога.
  5. Протестируйте и сохраните настройку.

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

Запуск анализа

Запуск анализа LDAP-каталога

Результат анализа групп и пользователей

Результат анализа групп

Результат анализа пользователей

LDAP можно настроить через Secret ldap-config в namespace shturval-backend.

  1. Подготовьте файл config.json:
{
  "host": "ldap.example.ru",
  "insecureNoSSL": true,
  "insecureSkipVerify": true,
  "startTLS": false,
  "rootCA": "",
  "clientCert": "",
  "clientKey": "",
  "bindDN": "cn=admin,dc=example,dc=com",
  "bindPW": "ВАШ_ПАРОЛЬ",
  "usernamePrompt": "",
  "userSearch": {
    "baseDN": "ou=Users,dc=example,dc=com",
    "filter": "",
    "username": "uid",
    "scope": "",
    "idAttr": "DN",
    "emailAttr": "mail",
    "nameAttr": "cn",
    "preferredUsernameAttr": "uid",
    "emailSuffix": ""
  },
  "groupSearch": {
    "baseDN": "ou=Groups,dc=example,dc=com",
    "filter": "",
    "scope": "",
    "userAttr": "",
    "groupAttr": "",
    "userMatchers": [
      {
        "UserAttr": "DN",
        "GroupAttr": "member"
      }
    ],
    "nameAttr": "cn"
  }

Основные параметры:

Параметр Что означает
host Адрес LDAP-сервера
insecureNoSSL Не использовать TLS-сессию для подключения
insecureSkipVerify Отключить проверку CA
startTLS Создавать TLS-сессию при подключении к LDAP
rootCA Доверенный корневой сертификат в формате base64
clientCert Клиентский сертификат в формате base64
clientKey Клиентский приватный ключ в формате base64
bindDN DN учётной записи для подключения к LDAP
bindPW Пароль учётной записи для подключения
userSearch.baseDN Базовый DN для поиска пользователей
userSearch.filter Фильтр поиска пользователей
userSearch.username Атрибут уникального имени пользователя
userSearch.scope Область поиска: sub или one
userSearch.emailAttr Атрибут email пользователя
userSearch.nameAttr Атрибут полного имени пользователя
userSearch.emailSuffix Email-суффикс
groupSearch.baseDN Базовый DN для поиска групп
groupSearch.filter Фильтр поиска групп
groupSearch.scope Область поиска: sub или one
groupSearch.nameAttr Атрибут краткого имени группы
  1. Закодируйте файл в base64:
cat /path/to/config.json | base64 --wrap=0
  1. Создайте Secret:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: ldap-config
  namespace: shturval-backend
type: Opaque
data:
  config.json: BASE64_СОДЕРЖИМОЕ_CONFIG_JSON
EOF

Примеры для разных каталогов

Значения ниже — примеры. В своей установке используйте значения из вашего LDAP-каталога.

Active Directory

Пример команды для получения пользователей:

ldapsearch -H ldap://10.11.12.7 -b "cn=Users,dc=shturval,dc=lab" -D "cn=Administrator,cn=Users,dc=shturval,dc=lab" -w "ПАРОЛЬ"

Пример атрибутов:

Поле в платформе LDAP-атрибут
Атрибут имени группы cn
Email атрибут userPrincipalName
Name атрибут displayName
UserName атрибут sAMAccountName
Email суффикс суффикс из userPrincipalName, например shturval.lab

Примеры DN:

  • DN для подключения: cn=Administrator,cn=Users,dc=shturval,dc=lab;
  • базовый DN поиска пользователей: cn=Users,dc=shturval,dc=lab;
  • базовый DN поиска групп: OU=Groups,dc=shturval,dc=lab.

OpenLDAP

Примеры параметров:

Поле в платформе Пример значения
DN для подключения cn=admin,dc=example,dc=com
Адрес LDAP-сервера ldap.example.ru
Базовый DN поиска групп ou=Groups,dc=example,dc=com
Атрибут имени группы cn
Базовый DN поиска пользователей ou=Users,dc=example,dc=com
Email атрибут mail
Email суффикс @example.com

Email-суффикс указывают, если в LDAP нет отдельного email-атрибута в явном виде.

FreeIPA или ALD Pro

Примеры параметров:

Поле в платформе Пример значения
DN для подключения uid=admin,cn=users,cn=accounts,dc=freeipa,dc=tech
Адрес LDAP-сервера freeipa.xxx.xx.msk.ru
Базовый DN поиска групп cn=groups,cn=accounts,dc=freeipa,dc=tech
Атрибут имени группы cn
Базовый DN поиска пользователей cn=users,cn=accounts,dc=freeipa,dc=tech
Email атрибут mail
Email суффикс freeipa.tech
Name атрибут uid
UserName атрибут uid

Samba DC

Примеры параметров:

Поле в платформе Пример значения
DN для подключения cn=admin,dc=example,dc=com
Адрес LDAP-сервера ldap.example.ru или 10.11.112.33
Базовый DN поиска групп ou=groups,dc=example,dc=com
Атрибут имени группы cn
Базовый DN поиска пользователей ou=users,dc=example,dc=com
Email атрибут mail
Email суффикс @example.com
Name атрибут displayName
UserName атрибут sAMAccountName

MULTIDIRECTORY

В MULTIDIRECTORY должна быть создана сервисная учётная запись с правами на чтение каталога.

Примеры параметров подключения:

Поле в платформе Пример значения
DN для подключения cn=admin,cn=users,dc=example,dc=local
Адрес LDAP-сервера 10.11.12.13
Режим настройки Ручной
Использовать TLS Нет

Примеры параметров поиска групп:

Поле в платформе Пример значения
Базовый DN поиска групп cn=groups,dc=example,dc=local
Атрибут имени группы cn
Фильтр групп (objectClass=group)

Примеры параметров поиска пользователей:

Поле в платформе Пример значения
Базовый DN поиска пользователей cn=users,dc=example,dc=local
Email атрибут mail
Email суффикс @example.local
UserName атрибут sAMAccountName
Name атрибут displayName
PreferredUserName атрибут sAMAccountName
Фильтр (objectClass=user)

Фильтры поиска и PreferredUserName атрибут доступны в расширенных настройках.

Для сопоставления пользователей и групп укажите:

Поле в платформе Пример значения
Атрибут пользователя memberOf
Атрибут группы distinguishedName

Проверка поиска и назначение прав

После сохранения LDAP-интеграции проверьте поиск:

  1. Откройте в платформе раздел Управление доступом → страница Управление ролями или нажмите Назначить доступ на вкладке Платформа.
  2. Нажмите + рядом с таблицей Пользователи или Группы.
  3. Начните вводить имя пользователя или группы.
  4. Поиск начинается со второго введённого символа.
  5. Выберите запись из списка и назначьте наборы доступов.
Поиск пользователя при назначении прав

Поиск пользователя при назначении прав

Поиск по каталогу не зависит от регистра.