Настройки безопасности и маскирования

Router: режимы ключей, действия классов off/shadow/enforce, блокировка секретов, маскирование и параметры политики.

Роль: администратор контура. Эти действия выполняются в операторской консоли. В обычном hosted-кабинете доступны собственные ключи и лимиты; изменение политик, режима защиты и маскирования запрашивается у администратора.

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

Где что включать и отключать

ЗадачаГде нажатьЧто действительно изменится
Применять защитную политикуКлючи доступа → режим strictКлассификация и правила маршрутизации применяются к запросам этого ключа.
Исключить ключ из Secure screeningКлючи доступа → external_unrestrictedТрафик идёт наружу без проверки Secure; аутентификация, квоты и расчёт стоимости остаются. Используйте только для данных, разрешённых к такой передаче.
Управлять поиском значений для заменыИстория запросов → Запросы Router → Настройки IAM.SecureМеняются режим маскирования и минимальная защита.
Запретить передачу класса данныхПолитика → Tenant ID → Загрузить → РедактироватьМеняются правила соответствующего tenant.
Отключить уведомлениеПравила оповещений / Вебхуки → выключить правило / подпискуПрекращается оповещение; анализ и блокировки продолжаются.
Остановить обновление отчётаDashboard / История / Метрики → автообновление «Нет»Останавливается обновление экрана; запросы продолжают проверяться.
Не хранить исходный текстОператор сервиса: хранение контентаМетаданные и решения могут сохраняться без исходного содержимого.

Режим ключа: strict, external_unrestricted, external_masked

  1. Откройте Ключи доступа → Создать API-ключ либо селектор режима существующего ключа.
  2. Укажите метку, Tenant ID, срок действия и нужный режим; новый ключ скопируйте один раз в защищённое хранилище клиента.
  3. Выполните учебный запрос этим ключом и найдите его в История запросов → Запросы Router. Проверьте действие и фактический периметр.
РежимКлассификация / приватностьОсобенность
strictОбычная классификация и политикаРекомендуемый исходный режим для защищаемого трафика.
external_unrestrictedSecure screening пропускаетсяЭто разрешение передавать исходные данные наружу, а не «только мониторинг».
external_maskedПринудительное маскирование перед внешним провайдеромПоддерживается серверным контрактом; текущая форма показывает только первые два режима. Настраивается через поддерживаемый API управления ключами, если доступен в вашей версии. При невозможности замены — fail-closed; блокировка инъекций сохраняется при соответствующей политике.

Ротация прекращает использование старого ключа: обновите конфигурацию клиента и повторите запрос. Env/bootstrap-ключами управляет оператор. Отзыв ключа и отключение worker-клиента — разные действия.

Форма API-ключа · реальный staging, без создания ключа
Форма API-ключа · реальный staging, без создания ключа
2026-10-15 · Настоящее приложение на staging. Только синтетический клиент, публичные определения или агрегированные показатели тестового стенда. Это не статистика клиентов и не benchmark. Исходные пиксели не изменены; профиль и закрытые данные исключены. Показан несохранённый пример; новое учётное данное не создавалось.
  1. Метка
  2. Tenant ID
  3. Срок действия
  4. Строгие правила
  5. Создать

Включить external_masked через API

Потребуется административная сессия с правом записи, а не обычный inference API-ключ. Адрес — ваш шлюз Router, не сайт документации. В HTTP-клиенте используйте одобренную организацией авторизацию; не вставляйте токены в URL или JSON. API управления ключами требует подключённого Postgres.

  1. GET /admin/keys: найдите id нужного тестового ключа и сохраните прежний policy_mode. Не используйте вместо id секрет или prefix.
  2. PATCH /admin/keys/<id> с Content-Type: application/json и телом:
{"policy_mode": "external_masked"}
  1. Ожидайте HTTP 200 с метаданными ключа. Повторите GET /admin/keys и проверьте policy_mode; PATCH не ротирует секрет.
  2. Следующий учебный inference-запрос отправьте этим ключом. Проверьте X-IAM-Key-Policy-Mode: external_masked и замену приватных значений в выбранном внешнем потоке. Исходные значения не должны уходить провайдеру; при невозможности маскирования ожидайте отказ.
  3. Для возврата восстановите прежний режим тем же PATCH и проверьте новый запрос. Существующий запрос этим действием не переигрывается.

Для нового ключа: POST /admin/keys с {"label":"Masked staging client","tenant_id":"docs-demo","policy_mode":"external_masked"}. HTTP 201 возвращает key один раз; сохраните его в хранилище секретов. Необязательный expires_at — будущая дата RFC3339; отсутствие / null означает отсутствие срока истечения. При 400 проверьте JSON/режим/дату, при 401/403 — административные права, 404 — id, 503 — хранилище. Ошибка не подтверждает изменение; перечитайте состояние перед повтором.

Маскирование и минимальная защита floor

  1. История запросов → Запросы Router → Настройки IAM.Secure (та же панель доступна в Routing Audit).
  2. Выберите Режим маскирования и Минимальная защита.
  3. Нажмите Сохранить; кнопка активна только при изменении. Нажмите Обновить, чтобы увидеть применённые значения; это также сбрасывает несохранённый черновик.
  4. Отправьте учебный запрос и проверьте заголовок ответа X-IAM-Masking-Mode, решение, периметр и доказательства замены в истории.
Настройки маскирования и минимальной защиты · реальный staging
Настройки маскирования и минимальной защиты · реальный staging
2026-10-15 · Настоящее приложение на staging. На кадре обезличенные настройки или агрегированные показатели тестового стенда; это не статистика реальных клиентов и не benchmark. Профиль оператора и списки чужих tenant исключены. Параметры защиты не изменялись.
  1. Режим
  2. Минимальная защита
  3. Сохранить
ПолеЗначения и смыслОбласть действия
Режим / modeauto — дополнительный поиск всех известных приватных значений; verdict_classes — только классы первичного вердиктаБазовый режим Router.
Минимальная защита / floorauto запрещает клиенту ослабить режим до verdict_classes; verdict_classes допускает выбор обоих режимовНижняя граница для переопределений запроса.
JSON iam_masking.modeРежим конкретного запросаНе может обойти floor.
X-IAM-Masking-ModeЗаголовок переопределения режимаОбрабатывается после JSON; итог ограничивается floor. Используйте один способ задания режима.
X-IAM-Auto-Mask, X-IAM-Auto-Discover, Secure-алиасыСовместимые переключатели автообнаруженияfalse/off выбирают verdict_classes, а не выключают замену целиком.
iam_masking.session_idИдентификатор сессии замены для стабильных KEY_N в диалогеПринадлежит вашему клиентскому контексту; используйте непрозрачный ID, не персональные данные.
TTL / backend / encryptionСрок жизни, хранилище и шифрование словаря заменыИнформационные строки; меняет оператор сервиса.

«Только подтверждённые классы» не выключает маскирование. Оно уменьшает область повторного поиска. В административном сохранении явно передавайте желаемые mode и floor: изменение базового режима на более слабый может также изменить floor. Затем перечитайте оба значения. Router сохраняет настройки для реплик в общем хранилище; ошибка 503 не подтверждает применение.

Маскирование заменяет найденные значения плейсхолдерами KEY_N; смысловой конфиденциальный текст не всегда допускает безопасную замену. Политика mask_route в этом случае повышает изоляцию до on-prem/локального периметра. TTL не является сроком хранения аудита.

Все параметры политики маршрутизации

Политика → Tenant ID → Загрузить → Редактировать → Форма / JSON. Сначала сохраните копию текущего документа. После изменения используйте Предпросмотр, затем сохранение и проверку учебного запроса. Предпросмотр проигрывает выборку аудита без применения и вызова модели; пустая выборка не доказывает безопасность.

ПараметрКак настроить и за что отвечает
nameПонятное название политики; не является условием выбора.
tenant_idКонкретный tenant; * — общая политика по умолчанию. Фильтр tenant в шапке не заменяет выбор редактируемого документа.
perimeter_rules[].when.sensitivityPUBLIC / INTERNAL / CONFIDENTIAL / RESTRICTED; пусто — любой класс. Более чувствительный класс ставьте раньше общего правила.
when.content_typeСписок: GENERAL, CODE, ARCHITECTURE, RESEARCH; пустой список — любой тип. Это категория классификатора, а не MIME-тип файла. text, json, image, audio, document из некоторых форм не заменяют эти значения и могут дать 422.
actionСерверный контракт: route, mask_route, block. В некоторых версиях формы есть reroute; для маскирования задавайте именно mask_route в JSON. Не считайте reroute его синонимом.
perimeterexternal — внешний провайдер; on_prem — организационный периметр; local — локальный. Для block провайдер не вызывается.
Порядок правилСверху вниз, первое совпадение. Стрелки вверх/вниз меняют результат. Если совпадения нет, используется on-prem; внешний маршрут по умолчанию не подразумевается.
cost_optimization.research_to_cheapestВыбор дешёвой подходящей модели для research, внутри разрешённого периметра.
cost_optimization.prefercheapest_relevant, fastest, balanced: предпочтение стоимости, скорости или баланса; не ослабляет приватность.
reasoning_effortnone, low, medium, high; влияет на reasoning у поддерживаемой модели. Значение в запросе клиента имеет приоритет.
Max out / request_limits.max_output_tokensПотолок max_tokens; если клиент не указал лимит, потолок подставляется. 0 выключает этот потолок.
Max prompt / request_limits.max_prompt_charsМаксимум символов извлечённого prompt; превышение даёт HTTP 413 до провайдера. 0 выключает этот лимит.
on_classifier_unavailableПоддерживаемые валидатором значения: block, fail_closed или пусто. Для явно требуемой блокировки используйте block в JSON и проверьте тест отказа на staging. Предложенный формой allow может быть отклонён с 422.
on_injection_detectedСервер принимает block или пусто; flag из некоторых форм может быть отклонён. Для блокировки задавайте block.
block_messageСообщение клиенту при блокировке; не содержит исходного секрета.

Модель, указанная клиентом, не даёт права снизить периметр. При external-only реестре провайдеров валидатор требует явно блокировать приватные классы и отказ классификатора; политика, которой нужен отсутствующий on-prem fallback, отклоняется.

Редактор политики Router: mask_route, лимиты и поведение при сбоях · staging
Редактор политики Router: mask_route, лимиты и поведение при сбоях · staging
2026-10-15 · Настоящий staging и существующая операторская SSO-сессия. Только синтетический tenant/группа; секреты и профиль оператора исключены областью снимка. Форма не доказывает применение на всех репликах.
  1. mask_route
  2. Сохранить
  3. fail_closed
Редактор политики Router: mask_route, лимиты и поведение при сбоях · staging
Редактор политики Router: mask_route, лимиты и поведение при сбоях · staging
2026-10-15 · Настоящий staging и существующая операторская SSO-сессия. Только синтетический tenant/группа; секреты и профиль оператора исключены областью снимка. Форма не доказывает применение на всех репликах.
  1. mask_route
  2. Сохранить
  3. fail_closed

Пример JSON для учебного tenant

Замените docs-demo на ваш тестовый tenant. Используйте поддерживаемые в вашей версии значения типов контента. Пример намеренно не требует content_type.

{
  "name": "Private data stays inside",
  "tenant_id": "docs-demo",
  "perimeter_rules": [
    {"when": {"sensitivity": "RESTRICTED"}, "action": "block"},
    {"when": {"sensitivity": "CONFIDENTIAL"}, "action": "route", "perimeter": "on_prem"},
    {"when": {"sensitivity": "INTERNAL"}, "action": "mask_route", "perimeter": "external"},
    {"when": {"sensitivity": "PUBLIC"}, "action": "route", "perimeter": "external"}
  ],
  "cost_optimization": {"research_to_cheapest": false, "prefer": "balanced"},
  "on_classifier_unavailable": "block",
  "on_injection_detected": "block",
  "block_message": "Request blocked by organization policy",
  "request_limits": {"max_output_tokens": 4096, "max_prompt_chars": 32000},
  "reasoning_effort": "none"
}

Включить маскирование вместо блокировки

  1. Проверьте, что ключ работает в strict, а класс допускает замену.
  2. В нужном tenant измените только соответствующее правило на mask_route и требуемый периметр, оставив более строгие правила выше.
  3. Проверьте примеры с PII, секретом, конфиденциальным смысловым текстом и injection. Последние не должны становиться разрешёнными из-за общего правила.
  4. Найдите фактический результат по Request ID. Если маскировать нельзя, ожидайте более закрытый маршрут/блокировку, а не передачу исходного текста наружу.

Отмена изменения

«Отмена» закрывает несохранённый редактор. После сохранения примените предыдущий документ или поддерживаемый rollback версии; rollback повторно валидируется относительно текущих провайдеров и может получить 422. Проверяйте версию, перечитанные значения и новый запрос.

Действия классов: off, shadow и enforce

Реальный regex-тест: pii.contact → [CONTACT]
Реальный regex-тест: pii.contact → [CONTACT]
2026-10-15 · Настоящее приложение на staging. Только синтетический клиент, публичные определения или агрегированные показатели тестового стенда. Это не статистика клиентов и не benchmark. Исходные пиксели не изменены; профиль и закрытые данные исключены. Проверен образец screenshot@example.invalid. Это regex-проверка реестра, а не транспортный тест запроса к модели.
  1. Образец текста
  2. Протестировать
  3. Маскированный текст

Оператор развёртывания задаёт IAM_GW_DATA_CLASS_ACTIONS; в Helm — gateway.dataClassActions. Классификация, маскирование по политике и действия из реестра — разные настройки. off оставляет действия реестра метаданными. shadow рассчитывает возможное ужесточение без изменения маршрута. enforce применяет действия класса в фактическом периметре. Проверьте текущий режим в Классы данных или GET /admin/data-classes → action_enforcement; значение зависит от стенда.

Для защищаемого трафика используйте strict или external_masked. При enforce найденный Tier0 класс code.secret не теряется за меткой конфиденциальности. В стандартном реестре он блокирует external и hybrid/on_prem, а local допускается; точные tenant overrides имеют приоритет. Режим external_masked применяет действия в конечном external scope и не превращает block или local_only в отправку внешней модели. Для critical данных, которые вердикт не разрешает маскировать, действие mask не считается успешно выполненным: внешний запрос блокируется.

Перед включением на рабочем стенде пройдите staging-проверки: учебный секрет без действующих полномочий, обычный публичный текст, PII с поддерживаемым маскированием, marker-only текст, tenant override и отказ инспектора. Для запрета проверьте действие block, Request ID и отсутствие вызова провайдера; одного RESTRICTED или зелёного badge недостаточно. Политическая блокировка может возвращать HTTP 200 с синтетическим ответом Router — это не генерация моделью. Пользователь не может включить opt-out через поле JSON: режим берётся из проверенного API-ключа.

external_unrestricted намеренно отключает Secure screening и эти действия классов, сохраняя аутентификацию и квоты. Не используйте его для проверки защитных гарантий. Возврат к off отменяет enforcement для последующих запросов; это изменение защиты, а не только интерфейса. Прежние запросы не переигрываются.

Паспортные данные перед отправкой модели

Этот путь требует защищаемого ключа strict или external_masked, доступного классификатора и включённого enforce для действий классов. Для pii.passport стандартный реестр задаёт mask в external и hybrid/on_prem; local допускает оригинал. Точный override вашего tenant может менять это правило. external_unrestricted остаётся явным отключением IAM.Secure.

  1. Сначала проверьте настройки на staging и используйте только учебные данные: Паспорт РФ серия 4521 номер 123456. Это вымышленный пример, не данные клиента.
  2. Отправьте запрос рабочим API вашего клиента. Поддерживаются отдельные поля серии и номера, переносы строк, JSON с дополнительными полями и строковые Unicode-экранирования. В аргументах инструментов Router сохраняет контекст имени инструмента и вложенных паспортных полей при классификации и замене.
  3. В История запросов → Запросы Router найдите request ID и раскройте строку. Проверьте класс pii.passport, действие mask_route, фактический периметр и блок маскирования. Подсветка показывает найденные исходные фрагменты и переданные вместо них плейсхолдеры. Исходный Input может оставаться в защищённой истории: это не тело, отправленное модели.
  4. Для приёмки интеграции дополнительно проверьте тело на вашем тестовом провайдере: в защищаемом маршруте вместо паспортных значений должны быть плейсхолдеры. Успешный dry-run или HTTP 200 сам по себе этого не доказывает.

Аргументы инструментов сохраняют JSON-ключи, контейнеры и типы нестроковых полей. Если паспорт передан числом и замена плейсхолдером нарушит тип JSON-поля, Router возвращает 503 masking_unavailable до отправки провайдеру. Передавайте документные идентификаторы строками, сохраняя ведущие нули, и повторите учебную проверку. При недоступном маскировании не переходите на external_unrestricted для обхода ошибки: проверьте доступность IAM.Secure и параметры режима/floor.

Тот же отказ применяется, если диапазоны найденных значений нельзя безопасно сопоставить исходному тексту после удаления невидимых Unicode-символов. Частичная успешная замена не разрешает отправить оставшиеся оригиналы. Удалите невидимые разделители внутри идентификаторов в своём клиенте и повторите проверку; защищённый оригинал запроса остаётся доступен в истории при разрешённом хранении.

Обнаружение относится к явно обозначенным паспортным реквизитам. Обычные номера заказов и суммы без паспортного контекста не становятся паспортами только из-за длины числа. Результаты моделей для иных форматов документов нужно проверять отдельно на собственном тестовом корпусе.

Параметры оператора: что нельзя изменить фильтром страницы

Приведены значения по умолчанию исходного контракта, не гарантия настроек вашего стенда. Для hosted-версии передайте запрос администратору организации; самостоятельно развёрнутый сервис настраивает оператор с проверкой на staging.

Параметр сервисаЕдиница / исходное значениеВлияние
IAM_GW_MASKING_MODE, IAM_GW_MASKING_FLOORauto, autoБазовый режим и минимальная защита.
IAM_GW_CLASSIFIER_TIMEOUT_MS1500 мсМаксимальное ожидание классификатора.
IAM_GW_CLASSIFIER_MAX_TIER3Максимальная глубина каскада.
IAM_GW_CLASSIFIER_OPTIONALfalseКонфигурация обязательности инспектора; не универсальный клиентский переключатель.
IAM_GW_CLASSIFIER_BREAKER_THRESHOLD5 ошибокПорог открытия circuit breaker.
IAM_GW_CLASSIFIER_BREAKER_COOLDOWN_MS30000 мсПауза перед новой попыткой.
IAM_GW_PRIVATE_MASK_TTL_HOURS12 чЖизнь словаря замены, отдельно от аудита.
IAM_GW_DATA_CLASSESПуть к рееструДетекторы классов.
IAM_GW_DATA_CLASS_ACTIONSoffEnforcement действий классов; off не выключает классификацию или замену по политике.
IAM_GW_AUDIT_RING500 записейРазмер краткой истории в памяти.
IAM_GW_AUDIT_STORE_TEXTfalseХранение исходного контента, отдельно от метаданных.
IAM_GW_AUDIT_CONTENT_RETENTION_DAYS30 днейСрок хранения исходного содержимого.
Postgres / Redis / ключ шифрованияКонфигурация и секреты оператораПостоянная история, общие настройки и защищённые сессии; значения секретов в документацию не помещаются.

Все разделы приложения · Анализ трафика · FAQ