Безопасность и работа с данными

Как AACSearch отделяет данные каждого клиента, защищает ключи и ограничивает то, что может сделать любой запрос. У каждой меры указан код, который её реализует.

Изоляция клиентов

Каждый индекс — отдельная коллекция, а каждый запрос несёт серверный фильтр организации, который вызывающая сторона не может переопределить.

packages/search-engine/search.ts · scopeFilter

Ключи API хранятся в виде хешей

Ключ показывается один раз и хранится как хеш SHA-256. У ключа может быть срок действия, его можно перевыпустить с переходным периодом или отозвать.

packages/api/lib/search/api-keys.ts

OIDC SSO на Enterprise

Организации на тарифе Enterprise могут входить через OIDC-провайдера после проверки домена почты. SAML пока недоступен; каждый вход проверяется по тарифу, поэтому при понижении плана доступ через IdP сразу отключается.

packages/auth/lib/sso-gate.ts

Никаких ключей в браузере

Виджет работает на коротких токенах сессии (по умолчанию 15 минут, максимум час). Их выпускает ваш сервер, и они позволяют только искать в одном индексе.

packages/api/lib/search/embed-token.ts

Доступ на уровне документа

У документа может быть список доступа. Результаты, счётчики и фасеты фильтруются до подсчёта, поэтому скрытые документы не видны даже по общему числу найденного.

packages/search-engine/search.ts · withAclFilter

Безопасный обход сайтов

Краулер и коннекторы обращаются только к публичным адресам http(s) и проверяют каждый редирект, поэтому их нельзя направить во внутреннюю сеть.

packages/api/lib/search/safe-fetch.ts

Ограничение частоты запросов

Лимиты по ключу на каждом эндпоинте API и лимиты по IP на публичных эндпоинтах — виджете и проверках доступности.

packages/api/lib/search/ip-rate-limit.ts

Ошибки ничего не раскрывают

Публичные коды и тексты ошибок не содержат деталей движка, трассировок стека и идентификаторов других клиентов.

packages/api/lib/search/privacy.ts

Журнал аудита

Административные действия — ключи, правила, эксперименты, коннекторы, удаление данных — записываются с указанием автора и времени.

packages/api/lib/search/audit.ts

Экспорт и удаление

Организация может выгрузить свои данные и полностью удалить их: индексы, документы, журналы запросов и графы.

GET /organization/export, DELETE /organization/data

Чего пока нет

Чтобы вы могли это учесть:

  • Сертификации SOC 2 и ISO 27001 пока нет.
  • Клиент пока не может выбрать регион хранения данных — уточните у нас, где они размещены.

Сообщить об уязвимости

Если вы нашли проблему безопасности, напишите нам с подробностями и шагами воспроизведения. Пожалуйста, не проводите проверки на данных других клиентов.

Написать по безопасности