К содержанию
Trialix
Начать
Все документы для ИТ

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

Секреты в файле хранятся только в зашифрованном виде:

СекретLinuxWindows
Токен коннектораAES-256-GCM. Ключ - SHA-256 от случайного ключа машины (файл machine.key, 0600, создаётся при первом запуске) и /etc/machine-idDPAPI в контексте машины (CryptProtectData с флагом LOCAL_MACHINE)
Пароль сервисной учётной записи каталогато жето же
Строки подключения к базам для шлюзато жето же
  • Скопированный на другую машину config.json не расшифруется: коннектор ответит «токен коннектора не расшифровывается на этой машине».
  • При входе по Kerberos пароль не хранится вовсе: на Linux используется keytab, на Windows - учётная запись, от имени которой работает служба (SSPI).
  • В журнал коннектора пароль, токен и строки подключения не пишутся.

Регистрация коннектора

  1. Администратор компании в ЛК, раздел «Каталоги», вводит название и нажимает «Добавить коннектор».
  2. ЛК показывает одноразовый код подключения вида XXXX-XXXX-XXXX и готовые команды для Linux и Windows. Код показывается один раз и действует час. В Trialix хранится только хеш кода.
  3. На машине выполняется trialix-connector enroll <код>. Коннектор обменивает код на токен и сохраняет токен в зашифрованном виде. Повторно тот же код не сработает.
  4. Если код истёк или потерян, в карточке коннектора есть ссылка «Новый код подключения».

Карточка «Добавить коннектор»: код подключения и команды установки

Перебор кодов ограничен: не больше 10 попыток регистрации в минуту с одного адреса, дальше ответ «Слишком много попыток, подождите минуту».

Токен и его перевыпуск

  • Токен коннектора (trxc_…) хранится в Trialix только в виде хеша SHA-256.
  • «Перевыпустить токен» в карточке коннектора: новый токен уходит коннектору с ближайшим пульсом. Коннектор сохраняет его и подтверждает отдельным запросом уже с новым токеном. До подтверждения работают оба токена, после подтверждения старый перестаёт действовать. Пока идёт замена, ссылка в карточке называется «Токен обновляется».
  • Отозвать доступ сразу - «Удалить коннектор». Синхронизация останавливается, учётные записи сотрудников и отделы остаются. Для повторного подключения создайте коннектор заново.
  • Регистрация, перевыпуск токена, изменение настроек и запуск заданий попадают в журнал ЛК.

Обновления

Автообновления нет. Обновление ставится только командой администратора:

sudo trialix-connector update          # покажет версию и спросит «Обновить? [да/нет]»
sudo trialix-connector update --yes    # без вопроса, для скриптов

Порядок проверки:

  1. Коннектор получает у Trialix номер версии, адрес файла, его SHA-256 и подпись.
  2. Проверяет подпись Ed25519 открытым ключом выпусков Trialix. Этот ключ служит только для выпусков коннектора: он отделён от остальных ключей Trialix и хранится вне серверов приложения. Корневой ключ зашит в коннектор. Если подпись не совпала или ключ отозван - «подпись сборки не совпадает - обновление отменено» или «ключ подписи … неизвестен или отозван - обновление отменено», файл даже не скачивается.
  3. Скачивает файл и сверяет его SHA-256. Не совпало - «контрольная сумма не совпадает - обновление отменено».
  4. Только после обеих проверок заменяет исполняемый файл. Службу после этого нужно перезапустить.

Смена ключа выпусков

Если ключ выпусков нужно сменить (плановая замена или подозрение на утечку), 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)
  1. Коннектор сам спрашивает у Trialix, есть ли запросы (/v1/connector/gateway/poll). Trialix держит этот запрос до 25 секунд и отвечает списком запросов или пустым списком. Входящих портов по-прежнему нет.
  2. Коннектор исполняет запросы у себя, не больше 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 секунд.

Журнал на машине

ОСГде
Linuxjournalctl -u trialix-connector и файл /var/log/trialix-connector/connector.log (каталог 0750, владелец trialix-connector)
Windowsслужба пишет в журнал событий Windows: «Приложение», источник TrialixConnector; файл connector.log у службы не ведётся

Экран состояния в терминале: команда trialix-connector без параметров. Там связь с Trialix, последний пульс, расписание, последнее задание, состояние шлюза и последние 200 строк журнала.

Обновлено 08.11.2026