Как настроить в платформе Штурвал

Для настройки интеграции в платформе “Штурвал” вам потребуется:

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

Подробнее об этапах настройки интеграции здесь.

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

Длее описаны общие шаги для всех LDAP-каталогов по настройке интеграции в графическом интерфейсе или в интерфейсе командной строки.

Примеры настройки интеграции в платформе “Штурвал” с LDAP-каталогами на страницах:

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

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

ldapconnect

Режим расширенных настроек интеграции

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

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

  • Подключение по startTLS (по умолчанию отключено);
  • Включить верификацию CA (по умолчанию отключена);
  • Клиентский сертификат (файл для загрузки);
  • Доверенный корневой сертификат (файл для загрузки), если включена верификация CA;
  • Клиентский приватный ключ (файл для загрузки).
  • Порт. Если не задан и подключение к серверу LDAP осуществляется по startTLS, по умолчанию будет использован 389 порт.
Скриншот

ldaptls1

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

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

  1. Нажмите Проверить подключение.

  2. Когда выполнено успешное подключение:

3.1. Выбран ручной режим подключения

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

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

ldapgr

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

  • в поле Базовый DN поиска пользователей - Distinguished Name контейнера (база поиска), в котором будет выполняться поиск записей пользователей. Значение должно совпадать с данными, введенными в параметре -b при выполнении ldapsearch.
  • в полях Email атрибут, Name атрибут, UserName атрибут, Email суффикс - атрибуты, определенные при выполнении ldapsearch. Для еmail адреса сотрудника должно быть заполнено хотя бы одно из полей: Email атрибут или Email суффикс.
Скриншот

ldapuser

Описание полей интерфейса
ПолеОписание
Email атрибутemail адрес пользователя с UPN суффиксом и @
Name атрибутполное имя пользователя
UserName атрибутуникальное имя пользователя
Email суффиксUPN суффикс email адреса пользователя

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

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

ldapanalysis2

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

Скриншот

ldapanalysisgroup

ldapanalysisuser

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

  • Фильтр: Дополнительное поле, применяемое для фильтрации при поиске в каталоге. В фильтре указывается атрибут записи и присваиваемое значение, по которому необходимо осуществить поиск. Обратите внимание! Необходимо вводить данные для фильтрации в скобках, как при формировании запроса ldapsearch, например, (objectClass=group).
Примеры фильтров
# Фильтр поиска по значению, заданному в sAMAccountName без оператора
(sAMAccountName=i.ivanov) 
# Фильтр поиска по совпадению со значением имени или заданным значением в sAMAccountName. Используется оператор ИЛИ - |
(|(name=Ivan Ivanov)(sAMAccountName=ll.romashka)) 
# Фильтр поиска по совпадению имени и значения в sAMAccountName. Используется оператор И - &
(&(name=Ivan Ivanov)(sAMAccountName=i.ivanov)) 
# Фильтр поиска, исключающий значение sAMAccountName. Используется оператор отрицания - !
(!(sAMAccountName=i.ivanov)) 
  • Scope (Область поиска, например, “sub” - поиск по всему дереву объектов, “one” - поиск на один уровень).
  • PreferredUserName атрибут (Поле уровня “пользователь” в LDAP, содержащее предпочтительное имя сотрудника).
  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
bindDNDN учетной записи пользователя для подключения к 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.emailSuffixEmail суффикс
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