Скрытие секретов

Когда программа отправляет запрос в модель, вместе с вопросом уходит и всё, что вы в него вставили: ключи, пароли, номера документов, персональные данные. Скрытие секретов — это фильтр, который заменяет такие значения условными обозначениями до отправки, а в ответе возвращает их на место. Модель работает с обозначениями, а вы получаете осмысленный ответ с настоящими данными.

Включено по умолчанию? Нет

Честно с самого начала: функция выключена по умолчанию. Включённая, она переписывает запросы, и включать её стоит осознанно, посмотрев на правила. Переключатель живёт в настройках и применяется в течение примерно 15 секунд, без перезапуска.

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

Как устроено правило

Правило состоит из трёх частей:

  • Имя — как вы будете называть правило, например «Личные данные клиентов».
  • Образец поиска — описание того, что искать. Это «образец» в техническом смысле: специальная запись, которой можно описать, например, «любой номер из одиннадцати цифр» или «слово после „номер:“». Составляется один раз, дальше работает сам.
  • Шаблон вывода — как обозначить найденное. В шаблоне ровно один знак $, на место которого подставляется номер, например КЛИЕНТ_$.

К правилу прилагается список самих секретов — конкретных значений, которые нужно прятать.

Что заменяется, а что нет

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

Практический вывод: список секретов нужно вести вручную. Если секрет не в списке, он уйдёт в модель как есть — даже если образец поиска его находит.

Нумерация и возврат на место

Нумерация сплошная и постоянная: одно и то же значение во всех запросах получает одно и то же обозначение. Если секрет в первый раз стал КЛИЕНТ_1, то и в десятый раз он уйдёт как КЛИЕНТ_1. Так модель не путается, а вы понимаете ответы.

Возврат на место работает во всех ответах, включая те, что приходят по частям. Он продолжает работать даже после того, как правило изменили или удалили: продукт отдельно помнит все когда-либо выданные обозначения. А слова, которые просто выглядят похоже, но секретом не являются, не портятся — они проходят как есть.

Безопасный отказ

Если проверку по правилу выполнить не удалось, запрос не уходит поставщику — вы получаете ошибку. Логика простая: лучше не получить ответ, чем отправить секреты наружу. Так ведёт себя и слишком «жадный» образец поиска, который считает тело запроса дольше отведённого времени.

Отчёты об утечках

Каждый случай замены фиксируется: правило, модель, ключ, время, обозначение и сколько раз значение встретилось. Это раздел «Отчёты об утечках» — он отвечает на вопрос «что именно мы прячем и как часто». Сами секреты в отчётах замаскированы, поэтому историю можно смотреть и спустя месяцы.

Срок хранения отчётов по умолчанию — 90 дней, после чего старые записи удаляются сами. Значение можно изменить в настройках. Если один и тот же запрос приходит повторно, второй раз он не отчитывается — в отчётах не будет искусственного «всплеска утечек».

Тестер правила

Прежде чем включать правило в работу, его можно проверить на живом примере: вставьте фрагмент текста и посмотрите, что именно будет заменено. Номера в предпросмотре свои, отдельные, — они не занимают номера настоящей нумерации. Это самый дешёвый способ убедиться, что образец поиска не задевает лишнего.

Где хранятся правила и соответствия

Правила живут в вашей базе, а вот соответствия между секретами и обозначениями — в отдельном хранилище внутри контейнера, в папке PROXYAGENT_ANONYMIZER_DB. По умолчанию это временная папка контейнера. Если не подключить к ней постоянный том, при пересоздании контейнера соответствия потеряются: старые обозначения перестанут возвращаться на место, а новые начнут нумероваться заново. Подключение тома описано в разделе Размещение и данные.

Чего функция не делает

  • Не трогает чат с ИИ-агентом — переписка в чате идёт мимо этого фильтра.
  • Не трогает трафик прокси-службы — обычный, не связанный с ИИ трафик фильтруется отдельно, если вообще фильтруется.

Дальше: как пустить через тот же сервер обычный трафик — в разделе Прокси для обычного трафика.

← Оглавление документации