Синхронизация пользователей из службы каталогов
Jazz Sync Tool — приложение для синхронизации пользователей из вашей службы каталогов, совместимой с протоколом LDAP (например, Microsoft Active Directory) в SaluteJazz.
После синхронизации новые пользователи доступны в кабинете администратора. При синхронизации удаленные из службы каталогов пользователи автоматически удаляются из кабинета администратора.
Совместимость и требования
Основное требование — совместимость с Go версии 1.22.
- Операционная система:
- Windows 10 и выше/Server 2016 и выше;
- из семейства Linux, с версией ядра 2.6.32 и выше;
- из семейства macOS 10.15 Catalina и новее.
- LDAP-совместимая реализация службы каталогов. Актуальные совместимые версии:
- OpenLDAP: версия 2.4 и выше;
- Active Directory: совместимая с Windows 10 и выше или Server 2016 и выше.
- Сетевой доступ (
ldap: TCP/UDP) межд у сервером, на котором запускается приложение, и сервером, на котором установлена служба каталогов. - Сетевой доступ (
http) между сервером, на котором запускается приложение, иsalutejazz.ru. - Личный кабинет Jazz Cloud c активным проектом. Убедитесь, что для вашей учетной записи доступна вкладка SSO и на ней доступна генерация Secret.
- Актуальная версия приложения доступна по ссылке в личном кабинете Jazz Cloud.
Использование и описание приложения
Схема работы:
- Администратор запрашивает Secret в личном кабинете Studio .
- Studio отдает Secret.
- Администратор запускает приложение и передает ему параметры.
- Утилита отправляет запрос на получение токена авторизации (для этого используется Secret, который заказчик получает в личном кабинете Studio).
- Studio передает токен в ответе на запрос.
- Утилита авторизуется в LDAP-хранилище и запрашивает список пользователей.
- Утилита получает список пользователей из LDAP-хранилища.
- Утилита запрашивает список групп из LDAP-хранилища.
- Утилита получает список групп из LDAP-хранилища.
- Утилита сохраняет структуру групп локально.
- Утилита отправляет запрос, чтобы инициировать старт синка.
- Платформа проверяет активность проекта.
- Утилита получает в ответ на запрос идентификатор запущенного синка.
- Утилита отправляет список пользователей на платформу.
- Утилита получает ответ от платформы.
- Утилита инициирует завершение синка.
- Утилита получает ответ от платформы.
- Утилита запрашивает статус синка.
- Утилита получает статус синка от платформы.
Флаги и параметры запуска
Формат запуска (cmd/bash)
NAME:
sync.exe - ldap to cloud user sync app
USAGE:
sync.exe [global options] command [command options]
DESCRIPTION:
ldap user sync
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--ldap value ldap connection strings
--sync-mode value sync mode
--batch-size value (default: 50)
--dry-run (default: false)
--ldap-debug (default: false)
--secret value
--client-id value
--ldap-id value
--log-level value (default: "info")
--log-format value (default: "text")
--cert-path value
--key-path value
--ca-path value
--help, -h show help
--version, -v print only the version (default: false)
Описание параметров запуска
| Параметр | Описание | Валидации |
|---|---|---|
--help | Справка по командам | |
--ldap | Строка, в которой переданы все атрибуты для подключения к отдельной AD. Описание атрибутов и структуры параметров ldap — ниже. Утилита подключается только к одному источнику | --ldap(s) — это url, в котором нужно экранирование спецсимволов |
--sync-mode | Режим синхронизации | Возможные значения: full, diff |
--batch-size | Максимальный размер батча | |
--ldap-debug | Включение логирования запросов к AD | |
--client-id | Идентификатор проекта (Studio) | Соответствует project_id |
--ldap-id | Идентификатор ресурса. Задается заказчиком при запуске утилиты. Передается для каждого пользователя в параметре reg_source. Должен быть задан атрибутом в интеграционной записи, если используется IDP | |
--secret | Секрет клиента. Требуется заранее подать заявку в Studio на доступ к странице с secret | |
--ca-path | Путь к сертификату. При использовании шифрованного протокола необходимо указать протокол ldaps в параметре connectionURL | Используется отдельно от --cert-path и --key-path |
--cert-path | Путь к сертификату при использовании приватного ключа --key-path. При использовании шифрованного протокола необходимо указать протокол ldaps в параметре connectionURL | Используются только в паре |
--key-path | Приватный ключ к сертификату из --cert-path. При использовании шифрованного протокола необходимо указать протокол ldaps в параметре connectionURL | |
--log-level | Настройка уровня логирования, debug — подробные логи, info — только предупреждения/ошибки. По умолчанию info | --log-level=error--log-level=warning--log-level=info--log-level=debug |
--log-format | Формат вывода логов - текст или JSON-объект. По умолчанию text | log-format=jsonbr />log-format=text |
--version | Выводит версию приложения |
Пример запуска приложения
Пример запуска по протоколу LDAP
sync-v1.0.0-6-win-x64.exe --ldap="connectionURL=ldap://10.129.17.10:389&bindDN=adread@jazz.local&usersDN=OU=Employees,DC=jazz,DC=local&groupsDN=OU=EmployeesGroups,DC=jazz,DC=local&protocol=LDAP&bindPassword=sPXavwjq6&uniqueAttribute=objectGUID&importAttributes=middleName:middleName,memberOf:group&groupAttribute=group&filter=((objectClass=user))&groupFilter=((objectClass=group))&searchScope=20&paging=1000&vendor=MSAD&emailAttribute=mail&givenNameAttribute=givenName&surnameAttribute=sn" --sync-mode="full" --secret="1e1ef82c-2be1-4b53-bad6-6ef3f9a8b522" --client-id="019b467a-d093-7c78-892e-2f66c421bfa6" --ldap-id="fd09e5c5-95e8-4162-b7c3-5420e4eb8d7d" --log-level="debug" --log-format="json"
Пример запуска по протоколу LDAPS
sync-v1.0.0-6-win-x64.exe --ldap="connectionURL=ldaps://10.129.17.10:636&bindDN=adread@jazz.local&usersDN=OU=Employees,DC=jazz,DC=local&groupsDN=OU=EmployeesGroups,DC=jazz,DC=local&protocol=LDAP&bindPassword=sPXavwjq6&uniqueAttribute=objectGUID&importAttributes=middleName:middleName,memberOf:group&groupAttribute=group&filter=((objectClass=user))&groupFilter=((objectClass=group))&searchScope=20&paging=1000&vendor=MSAD&emailAttribute=mail&givenNameAttribute=givenName&surnameAttribute=sn" --sync-mode="full" --secret="1e1ef82c-2be1-4b53-bad6-6ef3f9a8b522" --client-id="019b467a-d093-7c78-892e-2f66c421bfa6" --ldap-id="fd09e5c5-95e8-4162-b7c3-5420e4eb8d7d" --log-level="debug" --log-format="json" --cert-path=/path/to/cert.cert --key-path=/path/to/cert.key
Получение данных из службы каталогов
Для подключения к службе каталогов нужны параметры сервера, параметры каталогов и параметры пользователя с доступом на чтение к службе каталогов. Полный перечень в таблице параметров подключения к LDAP ниже.
Обратите внимание, что значения параметров должны быть экранированы с помощью urlencode, прежде чем объединены через &.
| Параметр | Описание | Пример | Обязательный |
|---|---|---|---|
| Атрибуты подключения к LDAP | |||
protocol | Протокол взаимодействия. Поддерживаются протоколы: LDAP | protocol=LDAP | Нет |
connectionURL | Адрес подключения к LDAP-серверу. Есть возможность указать порт. По умолчанию LDAP использует порт 389, а LDAPS — порт 636. В зависимости от выбранного протокола содержит ldap:// или ldaps:// | connectionURL=ldap://10.212.32.3:389 connectionURL=ldaps://10.212.32.3:636 | Да |
bindDN | Учетная запись администратора. DN — «уникальное имя» — адрес в каталоге, определяющий учетную запись. Например: cn=ldap-sync,cn=test-user,dc=customer-01,dc=lab,dc=s2b,dc=tech означает, что используется учетная запись юзера ldap-sync из каталога test-user на сервере customer-01.lab.s2b.tech | bindDN=Administrator@customer-01.lab.s2b.tech | Да |
bindPassword | Пароль администратора | bindPassword={password} | Да |
vendor | Тип реализации каталога LDAP, к которому подключается утилита. По умолчанию MSAD | vendor=OTHER | Нет. Возможные значения: MSAD, OTHER |
| Атрибуты синхронизации пользователей | |||
usersDN | Полное DN дерева LDAP, в котором находятся пользователи (дерево, которое является родительским для пользователей LDAP). Например, 'ou=users,dc=example, dc=com', для пользователя 'uid='john',ou=users,dc=example,dc=com&. Можно передать несколько userDN | usersDN=CN=test-user,DC=customer-01,DC=lab,DC=s2b,DC=tech | Да |
groupDN | Полное DN дерева LDAP, в котором находятся группы (дерево, которое является родительским для групп LDAP). Например, 'ou=users,dc=example, dc=com', для пользователя 'uid='john',ou=users,dc=example,dc=com. Можно передать несколько groupDN | groupDN=OU=EmployeesGroups,DC=jazz,DC=local | Нет |
emailAttributte | Всегда принимает значение из атрибута, в котором содержится email. Например, из атрибута mail | emailAttribute | Да |
givenNameAttributte | Атрибут, который содержит имя | givenNameAttribute=givenName | Да |
surnameAttribute | Атрибут, который содержит фамилию | surnameAttribute=cn |