Интеграция с LDAP
- Пример заполнения полей для настройки интеграции с типовым каталогом Active Directory
- Пример заполнения полей для настройки интеграции с типовым каталогом OpenLDAP
- Пример заполнения полей для настройки интеграции с типовым каталогом Samba DC
- Пример заполнения полей для настройки интеграции с типовым каталогом FreeIPA или ALD Pro
На этой странице
- Пример заполнения полей для настройки интеграции с типовым каталогом Active Directory
- Пример заполнения полей для настройки интеграции с типовым каталогом OpenLDAP
- Пример заполнения полей для настройки интеграции с типовым каталогом Samba DC
- Пример заполнения полей для настройки интеграции с типовым каталогом FreeIPA или ALD Pro
Настройка интеграции с LDAP-каталогом в платформе доступна администратору платформы. Рекомендуем обратиться за данными для подключения к LDAP-каталогу к администратору каталога.
Платформа “Штурвал” совместима с каталогами:
- Active Directory;
- OpenLDAP;
- FreeIPA;
- ALD Pro;
- Samba DC;
Как настроить интеграцию с каталогом пользователей:
- Получить параметры подключения к LDAP-каталогу.
- Получить атрибуты записей в LDAP-каталоге для корректной настройки поиска пользователей и групп в платформе “Штурвал”.
- Настроить интеграцию с LDAP-каталогом.
Пример заполнения полей для настройки интеграции с типовым каталогом Active Directory
Получить параметры подключения к LDAP-каталогу
Для настройки интеграции вам понадобятся:
- адрес LDAP-сервера (FQDN или IP-адрес). Вам может потребоваться указать порт в адресе LDAP-сервера. Уточните информацию у администратора LDAP-каталога;
- пароль учетной записи для подключения к LDAP-каталогу;
- DN (Distinguished Name) учетной записи пользователя для подключения к LDAP-каталогу;
- DN (Distinguished Name) контейнеров, в которых будет выполняться поиск записей пользователей и групп пользователей.
Получить атрибуты записей в LDAP-каталоге
- В интерфейсе командной строки с помощью утилиты 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-каталогом
В графическом интерфейсе
- На странице Интеграция с LDAP раздела Управление доступом внесите данные для проверки подключения к LDAP-каталогу:
- В поле DN для подключения укажите Distinguished Name учетной записи пользователя для аутентификации к LDAP-каталогу. DN должна совпадать с данными, введенными на первом шаге в параметре
-D. - В поле Пароль для подключения укажите пароль пользователя для аутентификации к LDAP-каталогу. Пароль должен совпадать с данными, введенными на первом шаге в параметре
-w. - В поле Адрес LDAP-сервера укажите в формате FQDN или IP-адрес (например, ldap.example.ru, 10.11.112.33:636). Адрес должен совпадать с введенными данными на первом шаге в параметре
-H.
Скриншот

- При необходимости выполните подключение с TLS-соединением. Настройка использования TLS доступна в расширенных настройках интеграции. Изменить режим вы можете с помощью переключателя Показать расширенные настройки.
При выборе Использовать TLS дополнительно доступны поля:
- Создавать TLS-сессию при подключении к LDAP;
- Выключить верификацию CA;
- Клиентский сертификат (файл для загрузки);
- Доверенный корневой сертификат (файл для загрузки);
- Клиентский приватный ключ (файл для загрузки).
Скриншот

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

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

В блоке Поиск пользователей укажите:
- в поле Базовый 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 |
Скриншот

2.2. Когда выбран автоматический режим подключения
- Нажмите на Выполнить анализ.
Скриншот

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


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

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

-
Когда будут заполнены обязательные поля, станет доступна кнопка Протестировать. Нажатие на эту кнопку инициирует попытку подключения к каталогу. В случае успешного подключения станет доступна кнопка Сохранить.
-
По завершению успешного тестирования настройки сохраните данные.
При необходимости внести изменения в сохраненную настройку введите пароль. После этого протестируйте интеграцию с измененными настройками и сохраните их.
В интерфейсе командной строки
- Подготовьте конфигурационный файл
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 | Атрибут общего названия группы |
- Закодируйте подготовленный конфигурационный файл в формате base64.
Команда
cat ~/date/config.json | base64 --wrap=0
Где вместо ~/date/config.json укажите путь до конфигурационного файла.
Пример ответа
ew0KICAiaG9zdCI6ICIxMC4zMS4xNDUuNyIsDQogICJpbnNlY3VyZU5vU1NMIjogdHJ1ZSwNCiAgImluc2VjdXJlU2tpcFZlcmlmeSI6IHRydWUsDQogICJzdGFydFRMUyI6IGZhbHNlLA0KICAicm9vdENBIjogIiIsDQogICJjbGllbnRDZXJ0IjogIiIsDQogICJjbGllbnRLZXkiOiAiIiwNCiAgInJvb3RDQURhdGEiOiBudWxsLA0KICAiYmluZEROIjogImNuPUFkbWluaXN0cmF0b3IsY249VXNlcnMsZGM9c2h0dXJ2YWwsZGM9bGFiIiwNCiAgImJpbmRQVyI6ICJQQHNzdzByZCIsDQogICJ1c2VybmFtZVByb21wdCI6ICIiLA0KICAidXNlclNlYXJjaCI6IHsNCiAgICAiYmFzZUROIjogImNuPVVzZXJzLGRjPXNodHVydmFsLGRjPWxhYiIsDQogICAgImZpbHRlciI6ICIiL
- В неймспейсе
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-каталоге
- Чтобы найти пользователя в LDAP-каталоге, в графическом интерфейсе платформы перейдите на страницу Управление ролями раздела Управление доступом и выберите Добавить назначение прав на пользователя.
- В поле Уникальное имя пользователя начните вводить имя пользователя. Со второго введенного символа будет выполнен поиск пользователей по каталогу. В результате поиска отобразится список пользователей, имена которых содержат указанные символы.
- Выберите имя пользователя из списка. Поиск по каталогу регистрозависимый, поэтому если пользователь не найден или отсутствует в списке, уточните введенные данные.
Скриншот

Пример заполнения полей для настройки интеграции с типовым каталогом 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