Trialix Connector: архитектура и безопасность
Trialix Connector - служба, которая ставится в сети компании и передаёт в Trialix сотрудников и группы из каталога: Active Directory, Samba AD (в том числе РЕД АДМ и Альт Домен), FreeIPA (в том числе ALD Pro), OpenLDAP или произвольного LDAP. Коннектор только читает каталог и ничего в нём не меняет. Правила (кого создать, кого отключить, пороги, места лицензии) применяет Trialix, настройки живут в ЛК, раздел «Каталоги». Документ для службы ИБ: что передаётся, куда, как хранятся секреты и как проверяются обновления. Кроме каталога, коннектор может работать шлюзом к системам внутри сети, см. ниже; по умолчанию шлюз выключен.
Схема работы
Каталог (AD, Samba, FreeIPA, OpenLDAP)
^ LDAPS 636 или LDAP 389 со StartTLS, только чтение
|
Trialix Connector (служба в сети компании)
| исходящий HTTPS 443, при необходимости через прокси
v
api.trialix.ru (Trialix)
Коннектор сам раз в минуту отправляет в Trialix пульс и в ответ получает настройки (расписание, привязанные группы) и задания: «обновить список групп», «предпросмотр», «синхронизация». Результат задания он отправляет обратно отдельным запросом. Trialix никогда не подключается к коннектору сам.
Куда ходит коннектор
| Направление | Адрес и порт | Зачем |
|---|---|---|
| Наружу | api.trialix.ru:443 (HTTPS) | регистрация, пульс, задания, результаты, проверка обновлений |
| Внутри сети | контроллер или сервер каталога, 636 (LDAPS) или 389 (LDAP со StartTLS) | чтение сотрудников и групп |
| Внутри сети | KDC, 88 | только при входе по Kerberos |
| Внутри сети | DNS | имена api.trialix.ru и сервера каталога |
| Внутри сети | адреса из списка gateway allow, базы и папки из списка ресурсов | только при включённом шлюзе |
- Входящих портов нет. Открывать что-либо из интернета к машине коннектора не нужно.
- Прокси: параметр
--proxy http://proxy.company.local:3128(приenrollи вsetup) или ответ на вопрос «Прокси» в мастере. Если прокси в настройках не задан, коннектор берёт системные переменныеHTTPS_PROXYиNO_PROXY. - Прокси с расшифровкой TLS (SSL-инспекция) должен пропускать
api.trialix.ruбез подмены сертификата или машина коннектора должна доверять корневому сертификату прокси. - Незашифрованное подключение к каталогу коннектор не выполняет: адрес
ldap://без StartTLS отклоняется с ошибкой. Минимальная версия TLS - 1.2.
Что передаётся
Только белый список атрибутов. Остальные атрибуты коннектор у каталога не запрашивает вовсе.
| Объект | Поля |
|---|---|
| Сотрудник | неизменяемый идентификатор (objectGUID, ipaUniqueID или entryUUID), SID (только AD и Samba), DN, логин, почта, имя, фамилия, должность, отдел, телефон, DN руководителя, список групп с учётом вложенности, признак «учётная запись отключена» |
| Группа | идентификатор, DN, название |
| Служебное | профиль каталога, базовый DN, время на машине коннектора, признак «ответ получен полностью», число страниц ответа |
Не передаются и не читаются: пароли, хеши паролей, сертификаты пользователей, фотографии, содержимое почты и файлов, произвольные атрибуты схемы.
Посмотреть снимок ровно в том виде, в каком он уходит в Trialix, можно на машине коннектора, ничего не отправляя:
sudo trialix-connector preview --json
На стороне Trialix снимок каждого прогона хранится вместе с отчётом (кого создать, обновить, отключить) и виден администраторам компании в ЛК, раздел «Каталоги», блок «Прогоны».
Где хранятся данные
Серверы Trialix находятся в Москве. База данных, файлы и журналы не покидают Россию. Снимки каталога и отчёты прогонов хранятся в базе Trialix вместе с остальными данными компании и доступны только администраторам этой компании.
Секреты на машине коннектора
Конфигурация лежит в одном файле config.json:
| ОС | Каталог | Права |
|---|---|---|
| Linux | /etc/trialix-connector | каталог 0700, файл 0600, владелец - системный пользователь службы trialix-connector (пакет и service install создают его и передают ему каталог) |
| Windows | %ProgramData%\Trialix\Connector | без наследования от %ProgramData%: SYSTEM и «Администраторы» - полный доступ, NetworkService (учётная запись службы) - изменение; права выставляются при установке службы и при каждом сохранении настроек, см. установку на Windows |
Секреты в файле хранятся только в зашифрованном виде:
| Секрет | Linux | Windows |
|---|---|---|
| Токен коннектора | AES-256-GCM. Ключ - SHA-256 от случайного ключа машины (файл machine.key, 0600, создаётся при первом запуске) и /etc/machine-id | DPAPI в контексте машины (CryptProtectData с флагом LOCAL_MACHINE) |
| Пароль сервисной учётной записи каталога | то же | то же |
| Строки подключения к базам для шлюза | то же | то же |
- Скопированный на другую машину
config.jsonне расшифруется: коннектор ответит «токен коннектора не расшифровывается на этой машине». - При входе по Kerberos пароль не хранится вовсе: на Linux используется keytab, на Windows - учётная запись, от имени которой работает служба (SSPI).
- В журнал коннектора пароль, токен и строки подключения не пишутся.
Регистрация коннектора
- Администратор компании в ЛК, раздел «Каталоги», вводит название и нажимает «Добавить коннектор».
- ЛК показывает одноразовый код подключения вида
XXXX-XXXX-XXXXи готовые команды для Linux и Windows. Код показывается один раз и действует час. В Trialix хранится только хеш кода. - На машине выполняется
trialix-connector enroll <код>. Коннектор обменивает код на токен и сохраняет токен в зашифрованном виде. Повторно тот же код не сработает. - Если код истёк или потерян, в карточке коннектора есть ссылка «Новый код подключения».

Перебор кодов ограничен: не больше 10 попыток регистрации в минуту с одного адреса, дальше ответ «Слишком много попыток, подождите минуту».
Токен и его перевыпуск
- Токен коннектора (
trxc_…) хранится в Trialix только в виде хеша SHA-256. - «Перевыпустить токен» в карточке коннектора: новый токен уходит коннектору с ближайшим пульсом. Коннектор сохраняет его и подтверждает отдельным запросом уже с новым токеном. До подтверждения работают оба токена, после подтверждения старый перестаёт действовать. Пока идёт замена, ссылка в карточке называется «Токен обновляется».
- Отозвать доступ сразу - «Удалить коннектор». Синхронизация останавливается, учётные записи сотрудников и отделы остаются. Для повторного подключения создайте коннектор заново.
- Регистрация, перевыпуск токена, изменение настроек и запуск заданий попадают в журнал ЛК.
Обновления
Автообновления нет. Обновление ставится только командой администратора:
sudo trialix-connector update # покажет версию и спросит «Обновить? [да/нет]»
sudo trialix-connector update --yes # без вопроса, для скриптов
Порядок проверки:
- Коннектор получает у Trialix номер версии, адрес файла, его SHA-256 и подпись.
- Проверяет подпись Ed25519 открытым ключом выпусков Trialix. Этот ключ служит только для выпусков коннектора: он отделён от остальных ключей Trialix и хранится вне серверов приложения. Корневой ключ зашит в коннектор. Если подпись не совпала или ключ отозван - «подпись сборки не совпадает - обновление отменено» или «ключ подписи … неизвестен или отозван - обновление отменено», файл даже не скачивается.
- Скачивает файл и сверяет его SHA-256. Не совпало - «контрольная сумма не совпадает - обновление отменено».
- Только после обеих проверок заменяет исполняемый файл. Службу после этого нужно перезапустить.
Смена ключа выпусков
Если ключ выпусков нужно сменить (плановая замена или подозрение на утечку), Trialix публикует вместе с выпуском запись о новом ключе, подписанную прежним ключом. Коннектор принимает новый ключ, только если запись подписана ключом, которому он уже доверяет, и сохраняет его в trusted-keys.json рядом с настройками. Запись может отозвать прежний ключ: после этого подписанные им сборки коннектор не установит. Делать ничего не нужно, смена происходит при обычном trialix-connector update.
Для ручной проверки у каждого выпуска есть SHA256SUMS с контрольными суммами всех файлов и подпись SHA256SUMS.sig. Открытый ключ выпусков Trialix (файл trialix-connector-release.pub есть и среди файлов выпуска):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEATnV+ruW9/oXgYat8lO37KE7Yj9saVjEAm+26GUvvcjE=
-----END PUBLIC KEY-----
Проверка подписи (OpenSSL 3.0 и новее):
curl -fLO https://api.trialix.ru/v1/connector/download/SHA256SUMS
curl -fLO https://api.trialix.ru/v1/connector/download/SHA256SUMS.sig
cat > trialix-release.pub <<'KEY'
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEATnV+ruW9/oXgYat8lO37KE7Yj9saVjEAm+26GUvvcjE=
-----END PUBLIC KEY-----
KEY
base64 -d SHA256SUMS.sig > SHA256SUMS.sig.bin
openssl pkeyutl -verify -pubin -inkey trialix-release.pub -rawin -in SHA256SUMS -sigfile SHA256SUMS.sig.bin
# Signature Verified Successfully
Права коннектора в Trialix
Токен коннектора годится только для протокола коннектора (/v1/connector/…): пульс, результаты заданий, опрос шлюза, проверка обновлений. Он не даёт доступа к чатам, моделям, API компании и данным сотрудников. Задания коннектор получает только своей компании.
Шлюз к системам внутри сети
Шлюз даёт Trialix доступ к системам, которые видны только из сети компании: внутреннему GitLab или вики по HTTP, базе данных на чтение, общей папке. По умолчанию шлюз выключен. Включает его администратор на машине коннектора командой trialix-connector gateway enable, команды настройки - в разделах установки на Linux и Windows.
Внутренние системы (HTTP, базы, папки)
^ только адреса и ресурсы, разрешённые на машине коннектора
|
Trialix Connector
| исходящий HTTPS 443: опрос и результаты
v
api.trialix.ru (Trialix)
- Коннектор сам спрашивает у Trialix, есть ли запросы (
/v1/connector/gateway/poll). Trialix держит этот запрос до 25 секунд и отвечает списком запросов или пустым списком. Входящих портов по-прежнему нет. - Коннектор исполняет запросы у себя, не больше 8 одновременно, и отправляет каждый результат отдельным запросом. Запрос с истёкшим сроком не исполняется.
Что можно, решает машина коннектора, а не Trialix:
| Правило | Где задаётся |
|---|---|
| К каким адресам можно обращаться по HTTP | список gateway allow на машине коннектора. Адрес вне списка отклоняется до подключения, в том числе при перенаправлениях (их не больше 3) |
| Какие базы и папки доступны | список ресурсов на машине коннектора (trialix-connector resource add). Trialix знает только имя и тип ресурса |
| Строки подключения к базам | хранятся только на машине коннектора, зашифрованы так же, как пароль каталога. В Trialix не передаются |
Список разрешённых адресов и имена ресурсов видны администраторам компании в ЛК: коннектор передаёт их при каждом опросе.
Ограничения по видам запросов:
- HTTP. Только
http://иhttps://. Сертификат проверяется по системным корневым сертификатам и по файлуgateway.caFile, если он задан. Ответ обрезается по размеру, заданному в запросе. Корпоративный прокси для внутренних адресов не используется. - Базы данных (PostgreSQL, MySQL и MariaDB, Microsoft SQL Server, ClickHouse). Только одна инструкция, которая начинается с SELECT, WITH, SHOW, DESCRIBE или EXPLAIN. PostgreSQL и MySQL исполняют запрос в транзакции только на чтение, ClickHouse - с
readonly=1, SQL Server - в транзакции, которая в конце всегда откатывается. Время запроса и число строк ограничены (не больше 5 000 строк). В SQL Server нет режима «только чтение» для транзакции, поэтому учётной записи шлюза дайте только чтение, например рольdb_datareader. Отдельная учётка только на чтение нужна и для остальных баз: это главная защита, проверки коннектора - дополнительная. - Папки. Список файлов (до 1000 в ответе, без вложенных папок), свойства файла и чтение файла. Выйти за пределы папки ресурса нельзя: пути с
.., абсолютные пути и символические ссылки наружу отклоняются. Запись, переименование и удаление не поддерживаются.
В журнал коннектора на каждый запрос шлюза пишется одна строка без параметров и данных, например шлюз: sql crm-db 34 строки за 120 мс.
Выключить шлюз: trialix-connector gateway disable. Служба перечитывает настройки сама, в течение 30 секунд.
Журнал на машине
| ОС | Где |
|---|---|
| Linux | journalctl -u trialix-connector и файл /var/log/trialix-connector/connector.log (каталог 0750, владелец trialix-connector) |
| Windows | служба пишет в журнал событий Windows: «Приложение», источник TrialixConnector; файл connector.log у службы не ведётся |
Экран состояния в терминале: команда trialix-connector без параметров. Там связь с Trialix, последний пульс, расписание, последнее задание, состояние шлюза и последние 200 строк журнала.
Обновлено 08.11.2026