Active Directory Connector — это интеграционный компонент, который обеспечивает синхронизацию пользователей и групп из Active Directory или FreeIPA в DION. Он позволяет автоматически создавать и удалять учетные записи пользователей в DION на основе данных из Active Directory или FreeIPA, а также обновлять информацию о пользователях, такую как ФИО, email, должность.
Коннектор поддерживает выборку пользователей из нескольких контейнеров и групп в Active Directory(FreeIPA), а также задание критериев выборки пользователей (исключаются рабочие станции, сервера и контроллеры доменов).
Для отправки данных в DION, коннектор поддерживает API DION, который позволяет отправлять данные в зашифрованном формате. Коннектор может быть настроен для отправки данных асинхронно для оптимизации производительности.
Коннектор также поддерживает расписание обновления данных, которое можно настроить в соответствии с требованиями организации. Он может обрабатывать ошибки при получении данных из Active Directory(FreeIPA) и отправке данных в DION, а также может логировать свою работу для быстрого выявления и устранения возможных проблем.
Обратите внимание. Если вам необходимо обновлять данные по нескольким доменам, укажите их все в конфигурационном файле в атрибуте
domain_name
.
Учетная запись с правами на развертывание deb-пакета (rpm) и запуск сервиса Active Directory Connector DION
Дистрибутив AD Connector можно скачать по ссылке.
синтаксис: dion-ad-connector [command] [arguments]
### Команды:
version - версия приложения
help - описание
### Для этих команд требуется указать файл конфигурации -config=ad-connector.yml
### Можно не указывать, если файл конфигурации находится в директории /etc/dion/ad-connector.yml
check-config - проверить корректность файла конфигурации
check-connect-ldap - проверить подключение к серверу Active Directory и показать несколько записей из AD
check-connect-dion - проверить подключение к Дион
get-users - показать пользователей из AD
[-limit 100] - лимит 0 или без флага - без лимита
[-encrypt] - шифровать данные
[-file] - сохранить в файлу. В конце к файлу добавиться порядковый номер файла
upload-file - выгрузить файл Дион. не более 4мб
-file - файл, который будет зашифрован и загружен в интеграционное api
get-schedule - получить расписание будущих запусков
[-limit 5] - кол-во следующих запусков. По умолчанию 5
sync-once - один раз получить данные из ldap и отправить их в Дион
sync - запуск получения данных из ldap и отправки в Дион по расписанию
### Переменные окружения
CLI_MODE=true - вывод в командную строку будет подкрашен
LOG_LEVEL=-1 - уровень логирования -1, 0, 1
### Сервис dion-ad-connector
systemctl status dion-ad-connector - состояние сервиса
systemctl restart dion-ad-connector - перезапустить сервис
systemctl stop dion-ad-connector - остановить сервис (до следующего перезапуска системы)
systemctl disable dion-ad-connector - выключить запуск сервиса при загрузке системы
journalctl -u dion-ad-connector -f - логи сервиса (если не указан файл логов в конфигурации
cd ~/directory/
sudo dpkg -i dion-ad-connector-x.x.x.deb
, где dion-ad-connector-x.x.x.deb
- имя пакета\/etc/dion/ad-connector.yml
# Для отступов используйте пробелы
# Уровень логирования (-1 debug, 0 - info, 1 - error)
# Переменная окружение LOG_LEVEL обладает приоритетом перед значением из конфигурации
log_level: 1
# Файл в который записывать логи. Если не указан вывод в stdout (stderr для ошибок)
# Запись логов в файл происходит только для настроенной по расписанию синхронизации
# Для команд настройки и отладки (посмотреть полный список: dion-ad-connector --help)
# вывод происходит в консоль
log_file:
# ------------------------------------------------------------------------------
# БЛОК 1 |
# ДОМЕНЫ ДЛЯ КОТОРЫХ ПРОИСХОДИТ СИНХРОНИЗАЦИЯ ПОЛЬЗОВАТЕЛЕЙ |
# ------------------------------------------------------------------------------
# из AD получим и отправим в Дион только тех пользователей, почта которых имеет указанный домен
# Например user@test.ru - будет синхронизирован, а user2@test-org.ru - нет
# Допустимо указать несколько доменов через пробел: test.ru test2.ru test3.ru
domain_name: test.ru
# ------------------------------------------------------------------------------
# БЛОК 2 |
# ШИФРОВАНИЕ |
# ------------------------------------------------------------------------------
dion:
# Публичный ключ Дион
# используется для шифрования данных, отправляемых в Дион
public_key: >
# Путь к файлу с публичным ключом Дион
# То же что и dion_public_key. Если указано оба значения - приоритет файл.
# Если указан путь к не существующему файлу, приложение не сможет работать
public_key_file:
# ------------------------------------------------------------------------------
# БЛОК 3 |
# ПОДКЛЮЧЕНИЕ К ИНТЕГРАЦИОННОМУ API ДИОН |
# ------------------------------------------------------------------------------
integration:
# Путь к интеграционному API
uri: https://api-integration.dion.vc/v1/customers/users
# Путь к API теста подключения к интеграционному API
connection_test_uri: https://api-integration.dion.vc/v1/connection-test
# Интеграционный токен организации. Выпускается в панели администрирования в Дион
token:
# Путь к файлу с интеграционным токеном организации
# Тоже самое что и integration_token. Если указано оба значения - приоритет файл
# Если указан путь к не существующему файлу, приложение не сможет работать
token_file:
# прокси, через который будет выполнено подключение к интеграционному api
proxy_url:
# ------------------------------------------------------------------------------
# БЛОК 4 |
# ДАННЫЕ ПОДКЛЮЧЕНИЯ К ACTIVE DIRECTORY |
# ------------------------------------------------------------------------------
ldap:
url: ldap-server
port: 389
# использовать ldaps
# не совместимо с switch_to_tls=true
ldaps: false
# переключиться в ldaps после подключения по ldap
# https://datatracker.ietf.org/doc/html/rfc4511#section-4.14
switch_to_tls: true
# Подключение без предоставления данных пользователя
unauthenticated_bind: false
# Пользователь, под которым будет происходить работа с AD
user_dn: cn=admin,dc=test,dc=local
# Пароль пользователя
password: admin
# Путь к файлу с паролем пользователя
# Тоже самое что ldap.password. Если указано оба значения - приоритет файл
# Если указан путь к не существующему файлу, приложение не сможет работать
password_file:
# Для технологического пользователя (для выборки записей настройки в БЛОКЕ №6)
base_dn: ou=users,dc=test,dc=local
# ------------------------------------------------------------------------------
# БЛОК 5 |
# ОТНОШЕНИЯ АТРИБУТОВ В AD -> DION |
# ------------------------------------------------------------------------------
ldap_attribute_mapping:
# Название поля в AD которое будет отправлено в DION как Email пользователя
# Обязательное поле
email: mail
# Название поля в AD (в нижнем регистре) которое будет отправлено в DION как ИМЯ пользователя.
name_attr: displayname
# Название поля в AD которое будет отправлено в DION как ДОЛЖНОСТЬ пользователя
position_attr: title
# ------------------------------------------------------------------------------
# БЛОК 6 |
# НАСТРОЙКИ ПОИСКА В AD |
# ------------------------------------------------------------------------------
ldap_searching:
# Пути для поиска пользователей
- base_dn: ou=users,dc=test,dc=local
filter: "(&(objectClass=user)(memberOf=cn=test,ou=groups,ou=test,dc=test,dc=local))"
# ------------------------------------------------------------------------------
# БЛОК 7 |
# АВТОМАТИЗАЦИЯ |
# ------------------------------------------------------------------------------
automation:
# Формат crone: минуты часы дни месяцы дни_недели full
# Используется время в UTC
# пример запуска каждый день в 15 и в 20 часов: * 15,20 * * * full
schedule:
- "* 15,20 * * * full"
Base DN — раздел каталога, где приложение начнет поиск пользователей и групп. Чтобы ваших пользователей можно было найти в приложении, они должны располагаться под базовым DN.
Например, у нас могут быть следующие DN для пользователя и группы:
cn=Elon Musk,ou=users,dc=example,dc=com
cn=Finance,ou=users,dc=example,dc=com
Используя приведенные выше примеры, наш пользователь и группа находятся в организационной единице(Organisational Unit), называемой «users», поэтому мы можем безопасно установить для нашего базового DN следующее:
ou=users,dc=example,dc=com
И группа, и пользователь будут доступны в нашем приложении.
Если в вашей службе каталогов используются несколько классов обьектов для пользователей, то в параметре filter необходимо указать их все. Например, если пользователи отличаются наличием двух атрибутов objectClass (один равен «person», а другой — «user»), необходимо сопоставить их следующим образом:
(&(objectClass=person)(objectClass=user))
Обратите внимание на символ амперсанда & в начале. Его использование значит выполнение запроса: objectClass=person И objectClass=user.
В то же время,
(|(objectClass=person)(objectClass=user))
Использование прямого слеша значит выполнение запроса: objectClass=person ИЛИ objectClass=user.
Microsoft Active Directory поддерживает этот memberOf
атрибут, который позволяет фильтру работать с членством пользователей.
Если вам необходимо синхронизировать пользователей из определенной группы, то используйте фильтр
base_dn: ou=users,dc=test,dc=local
filter: "(&(objectClass=user)(memberOf=cn=test,ou=groups,dc=test,dc=local))"
Ошибка | Вариант решения |
Описание должности в Active Directory длиннее, чем в DION | Размерность поля в DION ограничена. Описание полей пользователей DION представлено по ссылке |
Ошибка при обращении AD connector к Active Directory: LDAP Result Code 10 "Referral": 0000202B: RefErr: DSID-0310084A, data 0, 1 access points |
Указанная директория не доступна для пользователя, указанного для подключения к Active Directory в конфигурационном файле |
Вопросы по настройке и предложения по доработке отправляйте, пожалуйста, на support@diongo.ru