Импорт данных по учётным записям пользователей c сервера LDAP

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

После синхронизации в БД в таблицах users и user_groups появляется информация о пользователях домена и их группах:

Параметр на LDAP-сервере Параметр в БД LCM Описание

objectGUID

users.id

Уникальный идентификатор пользователя

sAMAccountName

users.login

Имя пользователя для входа в систему (Логин)

userAccountControl

true

Указывает, что учетная запись пользователя выключена

userPrincipalName

users.domain_full_name

Полное доменное имя пользователя (например, ivanov@inno.tech или petrov@samara.vtb.ru)

userPrincipalName (подстрока)

users.domain

Имя домена в короткой форме записи (например, inno.tech или samara.vtb.ru)

mail

users.email

Адрес электронной почты

cn

users.common_name

Общее имя пользователя

name

users.first_name

Короткое имя пользователя

givenName

users.given_name

Имя пользователя

sn

users.last_name

Фамилия пользователя

displayName

users.display_name

Отображаемое имя пользователя

title

users.title

Должность пользователя

department

users.department

Отдел, в котором работает пользователь

company

users.company

Подразделение, в котором работает пользователь

memberOf

user_groups.group_name

Группы пользователя, связь один к многим

Расписание выполнения синхронизации пользователей

Синхронизация происходит с помощью встроенного в продукт планировщика задач по расписанию. Управление расписанием осуществляется с помощью параметра lcm.inventory.job.sync-users.cron.expr в файле application.properties:

lcm.inventory.job.sync-users.cron.expr=*/5 * * * * ?

Значением данного параметра выступает выражение cron-like.

Выражение cron-like относится к формату временных интервалов, которые используются в системе планирования задач cron в операционной системе Unix. Этот формат представляет собой строку, которая содержит шесть или семь полей, разделенных пробелами или табуляцией. В каждом поле задано значение времени или даты, когда задача должна быть выполнена. Поля могут содержать любые разрешенные значения, а также различные комбинации разрешенных специальных символов для этого поля.

Описание полей:

Поле Обязательность заполнения Допустимые значения Допустимые специальные символы

Секунды

Да

0-59

, - * /

Минуты

Да

0-59

, - * /

Часы

Да

0-23

, - * /

День месяца

Да

1-31

, - * ? / L W

Месяц

Да

1-12 или JAN-DEC, где:

  • (1) JAN — январь;

  • (2) FEB — февраль;

  • (3) MAR — март;

  • (4) APR — апрель;

  • (5) MAY — май;

  • (6) JUN — июнь;

  • (7) JUL — июль;

  • (8) AUG — август;

  • (9) SEP — сентябрь;

  • (10) OCT — октябрь;

  • (11) NOV — ноябрь;

  • (12) DEC — декабрь

, - * /

День недели

Да

1-7 или SUN-SAT, где:

  • (1) SUN — воскресенье;

  • (2) MON — понедельник;

  • (3) TUE — вторник;

  • (4) WED — среда;

  • (5) THU — четверг;

  • (6) FRI — пятница;

  • (7) SAT — суббота

, - * ? / L #

Год

Нет

1970-2099

, - * /

Описание специальных символов:

Значение Расшифровка Описание

*

Все значения

Используется для выбора всех значений в поле. Например, если в поле Минуты указано значение *, — это будет означать, что задание должно выполняться каждую минуту

?

Нет специального значения

Используется, когда не важно, какой это должен быть день месяца или день недели. Например, если в поле День месяца указано значение 10, а в поле День недели — ?, — это будет означать, что задание должно выполняться 10-го числа месяца, независимо от того, какой это будет день недели

-

Используются для указания диапазона. Например, если в поле Часы указано значение 10-12, — это будет означать, что задание будет выполняться в 10:00, 11:00 и 12:00 часов

,

Используется для поочередного указания значений. Например, если в поле День недели указано значение MON,WED,FRI, — это будет означать, что задание будет выполняться в понедельник, среду и пятницу

/

Используется для указания приращения. Например, если в поле Секунды указано значение 0/15, — это будет означать, что задание будет выполняться в 0, 15, 30 и 45 секунд; а если указано значение 5/15 — в 5,20,35 и 50 секунд

L

От англ. — last (последний)

Используется для указания значений:

  • в поле День месяца — последнего дня месяца; например, для января — это будет 31 января, а для февраля — 28 февраля в не високосный год;

  • в поле День недели — субботы; однако если значение L используется после другого значения, оно будет означать последние n-дней месяца, например, значение 6L будет означать последнюю пятницу месяца.

Также может использоваться для указания смещения от последнего дня месяца, например, L-3 будет означать третий день до конца месяца.

При использовании символа L важно не указывать списки или диапазоны значений, это может привести к некорректным данным

W

От англ. — weekday (рабочий день)

Используется для указания ближайшего рабочего дня недели (понедельник-пятница) к указанному дню. Например, если в поле День месяца указано значение 15W, — это будет означать, что задание будет выполняться в ближайший рабочий день к 15-му числу месяца. Если 15-е число выпадает на субботу, задание будет запущено в пятницу 14-го числа, а если 15-е число выпадает на воскресенье, то в понедельник 16-го числа. Если 15-е число выпадает на вторник, то задание будет запущено во вторник 15-го числа. Однако, если указано значение 1W для дня месяца, и 1-е число выпадает на субботу, то задание будет запущено в понедельник 3-го числа, так как оно не может пересекать границы дней месяца.

Можно объединить символ W с символом L (LW), чтобы задать значение, которое будет означать последний будний день месяца.

При использовании символа W важно не указывать списки или диапазоны значений, это может привести к некорректным данным

#

Используется для указания n-ного дня месяца. Например, если в поле День недели указано значение 6#3, — это будет означать, что задание будет выполняться в третью пятницу месяца.

Если указано значение #5, а в месяце нет пяти заданных дней недели, то в этом месяце задание выполнено не будет

Примеры выражений:

  • * * * ? * * — задача должна выполняться каждую секунду;

  • 0 * * ? * * — задача должна выполняться каждую минуту;

  • 0 */2 * ? * * — задача должна выполняться каждую четную минуту;

  • 0 15,30,45 * ? * * — задача должна выполняться каждый час в 15, 30 и 45 минут;

  • 0 0 * * * — задача должна выполняться в полночь каждый день;

  • 0 0 12 ? * 5#3 — задача должна выполняться каждый месяц в третий четверг месяца с 00:00 до 12:00.

Больше примеров вы можете найти, перейдя по ссылке.

В качестве значения параметра по умолчанию используется 0 0 12 * * ?, что соответствует ежедневному запуску задания в 00:00:00.

Для выключения задания синхронизации используется значение указанного параметра off:

lcm.inventory.job.sync-users.cron.expr=off

Синхронизация пользователей может быть осуществлена из нескольких доменов LDAP-сервера и выполняется последовательно. Для задания параметров подключения к каждому из доменов заполните следующий набор параметров группы lcm.inventory.ldap.datasource[i] в файле application.properties:

# максимальное количество пользователей для одной итерации синхронизации
lcm.inventory.ldap.search-page-size=500

# Блок параметров подключения к домену номер #1 (нумерация с 0)

# условное обозначение домена
lcm.inventory.ldap.datasource[0].name=domain_alias1
# IP адрес или сетевое имя контроллера домена
lcm.inventory.ldap.datasource[0].host=192.168.0.1
# Порт для соединения по протоколу LDAP. Опционален, по умолчанию имеет значение `389`.
# Для LDAP over SSL обычно используют порт 636
lcm.inventory.ldap.datasource[0].port=636
# Имя пользователя, которое будет использовано для подключения к домену MS AD.
# Может иметь следующие форматы
# 1) <имя_пользователя>@<имя домена>, например ivanov@INNO
# 2) Пользователь в формате LDAP, например CN=ivanov,CN=Users,DC=inno,DC=local
lcm.inventory.ldap.datasource[0].username=username1@domain1_name
# Пароль пользователя для подключения к домену MS AD.
lcm.inventory.ldap.datasource[0].password=user_password
# Параметр отвечающий за соединение по протоколу LDAP over SSL (LDAPS).
# Возможные значения:
# 1) false - соответствует выключенному протоколу LDAPS, используется обычный LDAP
# 2) true - соответствует включенному протоколу LDAPS, требует наличие файла с сертификатом для SSL соединения (задается отдельным параметром)
# 3) trust-all - соответствует включенному протоколу LDAPS, принимает любые сертификаты без подтверждения
# Опционален, по умолчанию имеет значение `false`
lcm.inventory.ldap.datasource[0].ssl=true
# Относительный или абсолютный путь к файлу с сертификатом для подключения через LDAPS.
# Опционален, по умолчанию имеет значение `certificate.pem`
# Формат файла с сертификатом SSL и способ его получения описаны ниже
lcm.inventory.ldap.datasource[0].ssl-certificate=/home/username/cert1.pem
# Базовое имя домена для поиска пользователей в формате записи LDAP
lcm.inventory.ldap.datasource[0].base-dn=DC=domain_name1,DC=local
# Максимальная длительность подключения к LDAP серверу в миллисекундах. Значение `0` означает бесконечное ожидание.
# Опционален, по умолчанию имеет значение `10000`
lcm.inventory.ldap.datasource[0].connect-timeout-millis
# Максимальная длительность выполнения запроса к LDAP серверу в миллисекундах. Значение `0` означает бесконечное ожидание.
# Опционален, по умолчанию имеет значение `10000`
lcm.inventory.ldap.datasource[0].response-timeout
# Параметр отвечает за освобождение соединения в случае превышения максимальной длительности ожидания запроса.
# Возможные значения `true` и `false`
# Опционален, по умолчанию имеет значение `true`
lcm.inventory.ldap.datasource[0].abandon-on-timeout
# Указывает, разрешать ли использование экземпляра фабрики сокетов (который может совместно использоваться несколькими соединениями)
# для одновременного создания нескольких сокетов. Как правило, реализации фабрики сокетов являются потокобезопасными
# и могут создавать несколько соединений одновременно в отдельных потоках, но известно, что это не так в некоторых
# реализациях виртуальных машин (например, фабрики сокетов SSL в IBM JVM). Этот параметр может использоваться, чтобы указать,
# следует ли разрешить одновременные попытки создания сокета (что может обеспечить лучшую и более стабильную производительность,
# особенно в случаях, когда попытка подключения не удалась из-за тайм-аута) или предотвратить (что может быть необходимо для
# непотокового реализации фабрики сокетов)
# Возможные значения `true` и `false`
# Опционален, по умолчанию имеет значение `true`
lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use

# Блок параметров подключения к домену номер #2
lcm.inventory.ldap.datasource[1].name=domain_alias2
lcm.inventory.ldap.datasource[1].host=192.168.0.2
lcm.inventory.ldap.datasource[1].port=389
lcm.inventory.ldap.datasource[1].username=username2@domain2_name
lcm.inventory.ldap.datasource[1].ssl=false
lcm.inventory.ldap.datasource[1].base-dn=DC=domain_name2,DC=local

# Блок параметров подключения к домену номер #3
lcm.inventory.ldap.datasource[2].name=domain_alias2
#...