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

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

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

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

Как настроить интеграцию с каталогом пользователей:

  1. Получить параметры подключения к LDAP-каталогу.
  2. Получить атрибуты записей в LDAP-каталоге для корректной настройки поиска пользователей и групп в платформе “Штурвал”.
  3. Настроить интеграцию с LDAP-каталогом.

Пример заполнения полей для настройки интеграции с типовым каталогом Active Directory

Получить параметры подключения к LDAP-каталогу

Для настройки интеграции вам понадобятся:

  • адрес LDAP-сервера (FQDN или IP-адрес). Вам может потребоваться указать порт в адресе LDAP-сервера. Уточните информацию у администратора LDAP-каталога;
  • пароль учетной записи для подключения к LDAP-каталогу;
  • DN (Distinguished Name) учетной записи пользователя для подключения к LDAP-каталогу;
  • DN (Distinguished Name) контейнеров, в которых будет выполняться поиск записей пользователей и групп пользователей.

Получить атрибуты записей в LDAP-каталоге

  1. В интерфейсе командной строки с помощью утилиты ldapsearch (клиент OpenLDAP) получите атрибуты записей в LDAP-каталоге, указав:
  • адрес LDAP-сервера в параметре -H;
  • DN контейнера (база поиска), в котором будет выполняться поиск записей, в параметре -b;
  • DN учетной записи пользователя для подключения к LDAP-каталогу в параметре -D;
  • пароль пользователя для подключения к LDAP-каталогу в параметре -w;
Команда получения записей пользователей
ldapsearch -H ldap://10.11.12.7 -b "cn=Users,dc=shturval,dc=lab" -D "cn=Administrator,cn=Users,dc=shturval,dc=lab" -w "dkjhdfss"
Пример ответа
# Users, shturval.lab
dn: CN=Users,DC=shturval,DC=lab
objectClass: top
objectClass: container
cn: Users
description: Default container for upgraded user accounts
distinguishedName: CN=Users,DC=shturval,DC=lab
instanceType: 4
whenCreated: 20220926131156.0Z
whenChanged: 20220926131156.0Z
uSNCreated: 5660
uSNChanged: 5660
showInAdvancedViewOnly: FALSE
name: Users
objectGUID:: UPW8kPVYR0K/vWQM8yxQMA==
systemFlags: -1946157056
objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=shturval,DC=lab
isCriticalSystemObject: TRUE
dSCorePropagationData: 20220928141115.0Z
dSCorePropagationData: 20220926131239.0Z
dSCorePropagationData: 16010101000416.0Z

# Maksim Maksimov, Users, shturval.lab
dn: CN=Maksim Maksimov,CN=Users,DC=shturval,DC=lab
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Maksim Maksimov
sn: Maksimov
givenName: Maksim
distinguishedName: CN=Maksim Maksimov,CN=Users,DC=shturval,DC=lab
instanceType: 4
whenCreated: 20240306093015.0Z
whenChanged: 20241031085511.0Z
displayName: Maksim Maksimov
uSNCreated: 732
memberOf: CN=cluster-admin-restricted,OU=Groups,DC=shturval,DC=lab
uSNChanged: 986
name: Maksim Maksimov
objectGUID:: 1SzqRfN6b0GKCPYA==
userAccountControl: 660
badPwdCount: 1
codePage: 0
countryCode: 0
badPasswordTime: 1336256934
lastLogoff: 0
lastLogon: 13356799236
pwdLastSet: 1335077
primaryGroupID: 513
objectSid:: AQUAAAAAAA//PXEFSXmgQAAA==
accountExpires: 92275807
logonCount: 0
sAMAccountName: m.maksimov
sAMAccountType: 800668
userPrincipalName: m.maksimov@shturval.lab
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=shturval,DC=lab
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 133748385110655368

В полученном ответе найдите атрибуты, содержащие:

  • полное имя пользователя. В примере - это атрибут displayName;
  • уникальное имя пользователя. В примере - это атрибут sAMAccountName;
  • email адрес пользователя с UPN суффиксом и @. В примере email указан в атрибуте userPrincipalName;
  • UPN суффикс к email адресу пользователя. Вы сможете указать email суффикс вместо полного email адреса. В примере суффикс - shturval.lab.
Команда получения записей групп
ldapsearch -H ldap://10.11.11.7 -b "OU=Groups,dc=shturval,dc=lab" -D "cn=Administrator,cn=Users,dc=shturval,dc=lab" -w "dkjhdfss"
Пример ответа
# extended LDIF
#
# LDAPv3
# base <OU=Groups,dc=shturval,dc=lab> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# Groups, shturval.lab
dn: OU=Groups,DC=shturval,DC=lab
objectClass: top
objectClass: organizationalUnit
ou: Groups
distinguishedName: OU=Groups,DC=shturval,DC=lab
instanceType: 4
whenCreated: 20220928141115.0Z
whenChanged: 20220928141115.0Z
uSNCreated: 13006
uSNChanged: 13007
name: Groups
objectGUID:: uxe0CpQ7EBw==
objectCategory: CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=shturval,
DC=lab
dSCorePropagationData: 20220928141115.0Z
dSCorePropagationData: 20220928141115.0Z
dSCorePropagationData: 16010101000000.0Z

# cluster-admin, Groups, shturval.lab
dn: CN=cluster-admin,OU=Groups,DC=shturval,DC=lab
objectClass: top
objectClass: group
cn: cluster-admin
member: CN=Maksim Maksimov,CN=Users,DC=shturval,DC=lab
distinguishedName: CN=cluster-admin,OU=Groups,DC=shturval,DC=lab
instanceType: 4
whenCreated: 20240306092755.0Z
whenChanged: 20240306093217.0Z
uSNCreated: 73240
uSNChanged: 73251
name: cluster-admin
objectGUID:: G2n1dg==
objectSid:: AQUAAAAAA//PXEFSXUlmQQAAA==
sAMAccountName: cluster-admin
sAMAccountType: 268456
groupType: -2147646
objectCategory: CN=Group,CN=Schema,CN=Configuration,DC=shturval,DC=lab
dSCorePropagationData: 16010101000000.0Z

В полученном ответе определите атрибут записи, в котором содержится общее название группы. В примере - это атрибут cn.

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

Обратите внимание! При настройке поиска необходимо учитывать регистр символов атрибутов.

Настроить интеграцию с LDAP-каталогом

В графическом интерфейсе

  1. На странице Интеграция с LDAP раздела Управление доступом внесите данные для проверки подключения к LDAP-каталогу:
  • В поле DN для подключения укажите Distinguished Name учетной записи пользователя для аутентификации к LDAP-каталогу. DN должна совпадать с данными, введенными на первом шаге в параметре -D.
  • В поле Пароль для подключения укажите пароль пользователя для аутентификации к LDAP-каталогу. Пароль должен совпадать с данными, введенными на первом шаге в параметре -w.
  • В поле Адрес LDAP-сервера укажите в формате FQDN или IP-адрес (например, ldap.example.ru, 10.11.112.33:636). Адрес должен совпадать с введенными данными на первом шаге в параметре -H.
Скриншот

ldapconnect

  • При необходимости выполните подключение с TLS-соединением. Настройка использования TLS доступна в расширенных настройках интеграции. Изменить режим вы можете с помощью переключателя Показать расширенные настройки.

При выборе Использовать TLS дополнительно доступны поля:

  • Создавать TLS-сессию при подключении к LDAP;
  • Выключить верификацию CA;
  • Клиентский сертификат (файл для загрузки);
  • Доверенный корневой сертификат (файл для загрузки);
  • Клиентский приватный ключ (файл для загрузки).
Скриншот

ldaptls

Загруженные файлы будут переведены в формат base64. По завершении интеграции файлы будут доступны для скачивания из интерфейса.

Обратите внимание! Для изменения настроенной конфигурации необходимо введение пароля в настройках подключения.

  • Выберите режим настройки подключения: Ручной или Авто:
    • В ручном режиме поиск групп, пользователей и сопоставление пользователей заполняются вручную.
    • В автоматическом режиме настройки подключения необходимо выбрать каталог (ActiveDirectory, OpenLDAP, SambaDC, FreeIPA, ALDPro). При необходимости настройте базовый DN анализа групп и базовый DN поиска пользователей.
Скриншот

ldapauto

  1. Нажмите Проверить подключение и после успешного подключения:

2.1. Когда выбран ручной режим подключения

В блоке Поиск групп укажите:

  • в поле Базовый DN поиска групп - Distinguished Name контейнера (база поиска), в котором будет выполняться поиск записей. Значение должно совпадать с данными, введенными на первом шаге в параметре -b.
  • в поле Атрибут имени группы - атрибут записи, отвечающий за краткое название группы, определенный на первом шаге.
Скриншот

ldapgr

В блоке Поиск пользователей укажите:

  • в поле Базовый DN поиска пользователей - Distinguished Name контейнера (база поиска), в котором будет выполняться поиск записей пользователей. Значение должно совпадать с данными, введенными на первом шаге в параметре -b.
  • в полях Email атрибут, Name атрибут, UserName атрибут, Email суффикс - атрибуты, определенные на первом шаге. Для еmail адрес сотрудника должно быть заполнено хотя бы одно из полей: Email атрибут или Email суффикс.
Пример маппинга
Поле Описание атрибута Атрибут Сведения атрибута
Email атрибут email адрес пользователя с UPN суффиксом и @ userPrincipalName m.maksimov@shturval.lab
Name атрибут полное имя пользователя displayName Maksim Maksimov
UserName атрибут уникальное имя пользователя sAMAccountName m.maksimov
Email суффикс UPN суффикс email адреса пользователя - shturval.lab
Скриншот

ldapuser

2.2. Когда выбран автоматический режим подключения

  • Нажмите на Выполнить анализ.
Скриншот

ldapanalysis2

  • Проверьте атрибуты в заполненных полях поиска групп и поиска пользователей.
Скриншот

ldapanalysisgroup

ldapanalysisuser

2.3. Когда выбраны расширенные настройки доступны дополнительные атрибуты:

  • Фильтр (Дополнительное поле, применяемое для фильтрации при поиске в каталоге. В фильтре указывается атрибут записи и присваиваемое значение, по которому необходимо осуществить поиск, например, objectClass=person).
  • Scope (Область поиска, например, “sub” - поиск по всему дереву объектов, “one” - поиск на один уровень).
  • PreferredUserName атрибут (Поле уровня “пользователь” в LDAP, содержащее предпочтительное имя сотрудника).
Скриншот

ldapfilter

  1. При необходимости блоке Сопоставление пользователей задайте шаблон связи атрибута пользователя и атрибута группы.
Скриншот

usergroup

  1. Когда будут заполнены обязательные поля, станет доступна кнопка Протестировать. Нажатие на эту кнопку инициирует попытку подключения к каталогу. В случае успешного подключения станет доступна кнопка Сохранить.

  2. По завершению успешного тестирования настройки сохраните данные.

При необходимости внести изменения в сохраненную настройку введите пароль. После этого протестируйте интеграцию с измененными настройками и сохраните их.

В интерфейсе командной строки

  1. Подготовьте конфигурационный файл config.json с данными для интеграции с LDAP-каталогом.
Пример config.json
{
  "host": "10.11.11.7", 
  "insecureNoSSL": true, 
  "insecureSkipVerify": true, 
  "startTLS": false,
  "rootCA": "", 
  "clientCert": "", 
  "clientKey": "", 
  "bindDN": "cn=Administrator,cn=Users,dc=shturval,dc=lab", 
  "bindPW": "dkjhdfss", 
  "usernamePrompt": "", 
  "userSearch": {
    "baseDN": "cn=Users,dc=shturval,dc=lab",  
    "filter": "", 
    "username": "sAMAccountName", 
    "scope": "", 
    "idAttr": "DN", 
    "emailAttr": "userPrincipalName",  
    "nameAttr": "displayName", 
    "preferredUsernameAttr": "sAMAccountName", 
    "emailSuffix": ""  
  },
  "groupSearch": {
    "baseDN": "OU=Groups,DC=shturval,DC=lab", 
    "filter": "", 
    "scope": "", 
    "userAttr": "", 
    "groupAttr": "",
    "userMatchers": [
      {
        "UserAttr":  "DN", 
        "GroupAttr": "member" 
      }
    ],
    "nameAttr": "cn"
  }
}
Параметр Описание
host Адрес LDAP-сервера
insecureNoSSL Не использовать TLS-сессию для создания подключения к LDAP
insecureSkipVerify Выключить верификацию CA
startTLS Создание TLS-сессии при подключении к LDAP
rootCA Доверенный корневой сертификат в формате base64
clientCert Сертификат клиента, сгенерированный с использованием корневого CA в формате base64
clientKey Приватный ключ клиента, сгенерированный с использованием корневого CA в формате base64
usernamePrompt Значение, которое будет использоваться вместо Username
bindDN DN учетной записи пользователя для подключения к LDAP-каталогу
bindPW Пароль учетной записи пользователя для подключения к LDAP-каталогу
userSearch.baseDN Базовый DN для поиска пользователей
userSearch.filter Фильтр поиска пользователей
userSearch.username Атрибут уникального имени пользователя
userSearch.scope Уровень поиска (“sub” - поиск по всему дереву объектов, “one” - поиск на один уровень)
userSearch.idAttr Соответствие ID пользователя атрибуту LDAP
userSearch.emailAttr Атрибут Email пользователя
userSearch.preferredUsernameAttr Атрибут предпочтительного имени пользователя
userSearch.nameAttr Атрибут полного имени пользователя
userSearch.emailSuffix Email суффикс
groupSearch.baseDN Базовый DN для поиска групп
groupSearch.filter Фильтр поиска групп
groupSearch.scope Уровень поиска (“sub” - поиск по всему дереву объектов, “one” - поиск на один уровень)
groupSearch.UserAttr Атрибут пользователя, соответствующий группе
groupSearch.GroupAttr Атрибут группы, соответствующий атрибуту пользователя
groupSearch.nameAttr Атрибут общего названия группы
  1. Закодируйте подготовленный конфигурационный файл в формате base64.
Команда
cat ~/date/config.json | base64 --wrap=0

Где вместо ~/date/config.json укажите путь до конфигурационного файла.

Пример ответа
ew0KICAiaG9zdCI6ICIxMC4zMS4xNDUuNyIsDQogICJpbnNlY3VyZU5vU1NMIjogdHJ1ZSwNCiAgImluc2VjdXJlU2tpcFZlcmlmeSI6IHRydWUsDQogICJzdGFydFRMUyI6IGZhbHNlLA0KICAicm9vdENBIjogIiIsDQogICJjbGllbnRDZXJ0IjogIiIsDQogICJjbGllbnRLZXkiOiAiIiwNCiAgInJvb3RDQURhdGEiOiBudWxsLA0KICAiYmluZEROIjogImNuPUFkbWluaXN0cmF0b3IsY249VXNlcnMsZGM9c2h0dXJ2YWwsZGM9bGFiIiwNCiAgImJpbmRQVyI6ICJQQHNzdzByZCIsDQogICJ1c2VybmFtZVByb21wdCI6ICIiLA0KICAidXNlclNlYXJjaCI6IHsNCiAgICAiYmFzZUROIjogImNuPVVzZXJzLGRjPXNodHVydmFsLGRjPWxhYiIsDQogICAgImZpbHRlciI6ICIiL
  1. В неймспейсе shturval-backend кластера управления создайте secret с именем ldap-config и типом Opaque, содержащий в data закодированные данные config.json.
Команда
kubectl apply -f - <<EOF
apiVersion: v1
data:
  config.json: ew0KICAiaG9zdCI6ICIxMC4zMS4xNDUuNyIsDQogICJpbnNlY3VyZU5vU1NMIjogdHJ1ZSwNCiAgImluc2VjdXJlU2tpcFZlcmlmeSI6IHRydWUsDQogICJzdGFydFRMUyI6IGZhbHNlLA0KICAicm9vdENBIjogIiIsDQogICJjbGllbnRDZXJ0IjogIiIsDQogICJjbGllbnRLZXkiOiAiIiwNCiAgInJvb3RDQURhdGEiOiBudWxsLA0KICAiYmluZEROIjogImNuPUFkbWluaXN0cmF0b3IsY249VXNlcnMsZGM9c2h0dXJ2YWwsZGM9bGFiIiwNCiAgImJpbmRQVyI6ICJQQHNzdzByZCIsDQogICJ1c2VybmFtZVByb21wdCI6ICIiLA0KICAidXNlclNlYXJjaCI6IHsNCiAgICAiYmFzZUROIjogImNuPVVzZXJzLGRjPXNodHVydmFsLGRjPWxhYiIsDQogICAgImZpbHRlciI6ICIiL
kind: Secret
metadata:
  name: ldap-config
  namespace: shturval-backend
type: Opaque
EOF

Выполнить поиск пользователя в LDAP-каталоге

  1. Чтобы найти пользователя в LDAP-каталоге, в графическом интерфейсе платформы перейдите на страницу Управление ролями раздела Управление доступом и выберите Добавить назначение прав на пользователя.
  • В поле Уникальное имя пользователя начните вводить имя пользователя. Со второго введенного символа будет выполнен поиск пользователей по каталогу. В результате поиска отобразится список пользователей, имена которых содержат указанные символы.
  • Выберите имя пользователя из списка. Поиск по каталогу регистрозависимый, поэтому если пользователь не найден или отсутствует в списке, уточните введенные данные.
Скриншот

accessmanageradduser

Пример заполнения полей для настройки интеграции с типовым каталогом OpenLDAP

Настройки подключения

  • DN для подключения: cn=admin,dc=example,dc=com (пример DN для технологической учетной записи пользователя)
  • Пароль для подключения: password123
  • Адрес LDAP-сервера: ldap.example.ru (пример FQDN сервера LDAP)

Поиск групп

  • Базовый DN поиска групп: ou=Groups,dc=example,dc=com (пример базового полного названия группы)
  • Атрибут имени группы: cn (пример атрибута, указывающего на краткое название группы в каталоге)

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

  • Базовый DN поиска пользователей: ou=Users,dc=example,dc=com (пример базового полного названия организационной единицы “пользователь”)
  • Email атрибут: mail (пример поля уровня пользователя в LDAP, содержащего email сотрудника)
  • Email суффикс: @example.com (пример общего суффикса, который будет добавляться к userName пользователя)

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

При использовании TLS

  • Создавать TLS-сессию при подключении к LDAP: да/нет (выбор опции для создания TLS-сессии при подключении к серверу LDAP)
  • Выключить верификацию CA: да/нет (выбор опции для отключения проверки сертификата удостоверяющего центра)
  • Клиентский сертификат: file.pem (файл с клиентским сертификатом)
  • Доверенный корневой сертификат: ca.pem (файл с доверенным корневым сертификатом)
  • Клиентский приватный ключ: key.pem (файл с клиентским приватным ключом)

В блоке “Сопоставление пользователей” можно задать шаблон связи атрибута пользователя и атрибута группы. Например, можно сопоставить атрибут “uid” пользователя с атрибутом “memberOf” группы, чтобы определить принадлежность пользователя к определенной группе.

Пример
dn: uid=user1,ou=users,dc=example,dc=com
uid: user1
cn: User One
memberOf: cn=group1,ou=groups,dc=example,dc=com
memberOf: cn=group2,ou=groups,dc=example,dc=com

Пример заполнения полей для настройки интеграции с типовым каталогом Samba DC

Настройки подключения

  • DN для подключения: cn=admin,dc=example,dc=com (где “example” - это имя домена, а “com” - имя верхнего уровня домена)
  • Пароль для подключения: password1234
  • Адрес LDAP-сервера: ldap.example.ru или 10.11.112.33:636 (ldap.example.ru - полное доменное имя сервера LDAP, 10.11.112.33 - IP-адрес сервера LDAP, :636 - стандартный порт сервера LDAP с использованием TLS)

Поиск групп

  • Базовый DN поиска групп: ou=groups,dc=example,dc=com (где “example” - это имя домена, а “com” - имя верхнего уровня домена)
  • Атрибут имени группы: cn (в типовом каталоге SambaDC группы имеют атрибут “cn” для указания их имени)

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

  • Базовый DN поиска пользователей: ou=users,dc=example,dc=com (где “example” - это имя домена, а “com” - имя верхнего уровня домена)
  • Email атрибут: mail (в типовом каталоге SambaDC пользователи имеют атрибут “mail”, содержащий их адрес электронной почты)
  • Email суффикс: @example.com (в типовом каталоге SambaDC доменное имя “example.com” используется как суффикс для email адресов пользователей)
  • Name атрибут: displayName (атрибут “displayName” содержит полное имя пользователя)
  • UserName атрибут: sAMAccountName (атрибут “sAMAccountName” содержит уникальное имя пользователя)

В блоке “Сопоставление пользователей” можно указать шаблон связи атрибута пользователя и атрибута группы. Например, если в каталоге пользователей использован атрибут “uid”, а в каталоге групп - атрибут “cn”, то шаблон связи может быть “uid={{USER}}”, где “{{USER}}” будет заменено на имя пользователя при поиске его групп.

Пример заполнения полей для настройки интеграции с типовым каталогом FreeIPA или ALD Pro

Cтруктура каталога FreeIPA или ALD Pro
{
  "host": "freeipa.xxx.xx.msk.ru",
  "insecureNoSSL": true,
  "insecureSkipVerify": false,
  "startTLS": false,
  "clientCertData": "",
  "clientKeyData": "",
  "bindDN": "uid=admin,cn=users,cn=accounts,dc=freeipa,dc=tech",
  "bindPW": "dkjhdfss",
  "usernamePrompt": "",
  "userSearch": {
    "baseDN": "cn=users,cn=accounts,dc=freeipa,dc=tech",
    "filter": "",
    "username": "uid",
    "scope": "",
    "idAttr": "uid",
    "emailAttr": "mail",
    "nameAttr": "uid",
    "preferredUsernameAttr": "uid",
    "emailSuffix": "freeipa.tech"
  },
  "groupSearch": {
    "baseDN": "cn=groups,cn=accounts,dc=freeipa,dc=tech",
    "filter": "",
    "scope": "",
    "userAttr": "",
    "groupAttr": "",
    "userMatchers": [
      {
        "userAttr": "DN",
        "groupAttr": "member"
      }
    ],
    "nameAttr": "cn"
  }
}
  • DN для подключения: uid=admin,cn=users,cn=accounts,dc=freeipa,dc=tech
  • Пароль для подключения: pass1234
  • Адрес 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
  • Атрибут пользователя: DN
  • Атрибут группы: member
×