Маскирование запросов
Маскирование запросов — поиск и скрытие конфиденциальных данных в запросах перед их отправкой к модели.
Сервис распознает основные типы данных, например email, номер телефона, номер паспорта. Можно выбрать нужные типы, а также настроить распознавание собственных типов данных.
Распознавание работает на основе регулярных выражений. Проверяются текстовые значения в POST-запросах на эндпоинты:
/chat/completions— текст сообщений, текстовые части мультимодального контента, аргументы функций и полеprediction;/images/generations— текст в полеprompt.
Маскирование можно использовать в одном из двух режимов — замена данных или блокировка запроса.
Мы не рекомендуем использовать маскирование как единственный механизм защиты данных. Ограничивайте доступ к API-ключам и не передавайте конфиденциальную информацию без необходимости.
Чтобы использовать маскирование, включите его. Маскирование включается отдельно для каждого ИИ-роутера.
Типы распознаваемых данных
В сервисе есть правила для распознавания следующих типов данных:
- email-адреса;
- российские и международные номера телефонов;
- номера банковских карт с проверкой контрольной суммы по алгоритму Луна;
- СНИЛС с проверкой контрольной суммы;
- ИНН из 10 или 12 цифр с проверкой контрольной суммы;
- серия и номер паспорта РФ;
- API-ключи ИИ-роутера.
Вы также можете настроить распознавание собственных типов данных. Для этого составьте регулярное выражение для распознавания нужных данных и укажите его в тикете при включении маскирования.
Режимы маскирования
Маскирование работает в одном из двух режимов:
- замена данных — найденные данные заменяются на маркеры-заглушки. Подходит для работы с данными, в которых могут встречаться конфиденциальные;
- блокировка запроса — при первом найденном вхождении запрос блокируется. Подходит для работы с данными, в которых не должно быть конфиденциальных данных еще до отправки к модели.
Замена данных
Найденные конфиденциальные данные в запросе заменяются на маркеры-заглушки вида [ЗАМЕНЕНО:<тип_данных>]. Модель получает запрос с замененными данными.
Если встречаются разные вхождения одного типа данных, они получают порядковые номера, например [ЗАМЕНЕНО:email_1] и [ЗАМЕНЕНО:email_2]. Для числовых значений не учитывается разделение дефисами и пробелами.
Например, запрос «Напиши ivan@example.com, копия — manager@example.com. Ответить на ivan@example.com.» будет обработан и отправлен модели в виде «Напиши [ЗАМЕНЕНО:email_1], копия — [ЗАМЕНЕНО:email_2]. Ответить на [ЗАМЕНЕНО:email_1]».
При замене данных ответ API не будет содержать дополнительных данных или заголовков. Менять обработку успешных ответов не требуется.
Блокировка запроса
При первом найденном вхождении отклоняется весь запрос. ИИ-роутер возвращает ошибку guardrail_rejected с HTTP-кодом 422 в формате JSON-файла и не отправляет запрос к модели. Если запрос потоковый, то ошибка возвращается до начала SSE-потока.
В ответе в заголовке x-gateway-request-id возвращается идентификатор запроса. Сохраняйте его в логах приложения для диагностики.
При обработке ответа проверяйте поле error.code. Не повторяйте запрос с кодом guardrail_rejected автоматически без изменения содержимого.
Ошибки
Если ИИ-роутер не смог применить правила и запрос нельзя отправить без проверки, клиент получает ошибку с HTTP-кодом 500:
{
"error": {
"type": "server_error",
"code": "internal_error",
"message": "Guardrails could not be applied to this request",
"request_id": "sel-aig-<request_id>"
}
}
Здесь <request_id> — идентификатор запроса.
Для ошибки с кодом 500 настройте ограниченное число повторных попыток с увеличением задержки после каждой ошибки. Если ошибка сохраняется, создайте тикет и в нем укажите идентификатор запроса.
Ограничения
Проверка не гарантирует обнаружение всех персональных или конфиденциальных данных.
Так как проверка работает на основе регулярных выражений, то значение останется без изменений, если оно:
- разделено между несколькими полями или частями сообщения;
- закодировано;
- транслитерировано;
- записано словами вместо цифр;
- находится внутри изображения или файла.
Возможны ложные совпадения. Например, правило для распознавания паспорта РФ может распознать как паспорт другой идентификатор из десяти цифр.
Включить маскирование запросов
-
Если вы хотите использовать маскирование в режиме блокировки запросов, убедитесь, что ваш клиент обрабатывает ошибку
guardrail_rejectedс HTTP-кодом422и заголовокContent-Type: application/json, в том числе для запросов соstream: true. -
Создайте тикет для включения маскирования. В тикете укажите:
- ID ИИ-роутера, можно скопировать в панели управления: в верхнем меню нажмите Продукты → ИИ-роутер → в карточке ИИ-роутера под его именем нажмите ;
- режим маскирования — замена данных или блокировка запроса;
- типы данных, которые нужно маскировать;
- если нужно настроить распознавание собственного типа данных — регулярное выражение для поиска этого типа данных;
- если выбран режим замены данных — желаемое имя маркера.