Настройки безопасности и маскирования
Router: режимы ключей, действия классов off/shadow/enforce, блокировка секретов, маскирование и параметры политики.
Роль: администратор контура. Эти действия выполняются в операторской консоли. В обычном hosted-кабинете доступны собственные ключи и лимиты; изменение политик, режима защиты и маскирования запрашивается у администратора.
Здесь собраны параметры, которые влияют на безопасность реального запроса. Права администратора нужны для изменения глобальных настроек; доступность формы зависит от роли и редакции. Настройки интерфейса и фильтры отчётов защиты не меняют.
Где что включать и отключать
| Задача | Где нажать | Что действительно изменится |
|---|---|---|
| Применять защитную политику | Ключи доступа → режим strict | Классификация и правила маршрутизации применяются к запросам этого ключа. |
| Исключить ключ из Secure screening | Ключи доступа → external_unrestricted | Трафик идёт наружу без проверки Secure; аутентификация, квоты и расчёт стоимости остаются. Используйте только для данных, разрешённых к такой передаче. |
| Управлять поиском значений для замены | История запросов → Запросы Router → Настройки IAM.Secure | Меняются режим маскирования и минимальная защита. |
| Запретить передачу класса данных | Политика → Tenant ID → Загрузить → Редактировать | Меняются правила соответствующего tenant. |
| Отключить уведомление | Правила оповещений / Вебхуки → выключить правило / подписку | Прекращается оповещение; анализ и блокировки продолжаются. |
| Остановить обновление отчёта | Dashboard / История / Метрики → автообновление «Нет» | Останавливается обновление экрана; запросы продолжают проверяться. |
| Не хранить исходный текст | Оператор сервиса: хранение контента | Метаданные и решения могут сохраняться без исходного содержимого. |
Режим ключа: strict, external_unrestricted, external_masked
- Откройте Ключи доступа → Создать API-ключ либо селектор режима существующего ключа.
- Укажите метку, Tenant ID, срок действия и нужный режим; новый ключ скопируйте один раз в защищённое хранилище клиента.
- Выполните учебный запрос этим ключом и найдите его в История запросов → Запросы Router. Проверьте действие и фактический периметр.
| Режим | Классификация / приватность | Особенность |
|---|---|---|
strict | Обычная классификация и политика | Рекомендуемый исходный режим для защищаемого трафика. |
external_unrestricted | Secure screening пропускается | Это разрешение передавать исходные данные наружу, а не «только мониторинг». |
external_masked | Принудительное маскирование перед внешним провайдером | Поддерживается серверным контрактом; текущая форма показывает только первые два режима. Настраивается через поддерживаемый API управления ключами, если доступен в вашей версии. При невозможности замены — fail-closed; блокировка инъекций сохраняется при соответствующей политике. |
Ротация прекращает использование старого ключа: обновите конфигурацию клиента и повторите запрос. Env/bootstrap-ключами управляет оператор. Отзыв ключа и отключение worker-клиента — разные действия.
2026-10-15 · Настоящее приложение на staging. Только синтетический клиент, публичные определения или агрегированные показатели тестового стенда. Это не статистика клиентов и не benchmark. Исходные пиксели не изменены; профиль и закрытые данные исключены. Показан несохранённый пример; новое учётное данное не создавалось.
- Метка
- Tenant ID
- Срок действия
- Строгие правила
- Создать
Включить external_masked через API
Потребуется административная сессия с правом записи, а не обычный inference API-ключ. Адрес — ваш шлюз Router, не сайт документации. В HTTP-клиенте используйте одобренную организацией авторизацию; не вставляйте токены в URL или JSON. API управления ключами требует подключённого Postgres.
GET /admin/keys: найдите id нужного тестового ключа и сохраните прежнийpolicy_mode. Не используйте вместо id секрет или prefix.PATCH /admin/keys/<id>сContent-Type: application/jsonи телом:
{"policy_mode": "external_masked"}
- Ожидайте HTTP 200 с метаданными ключа. Повторите
GET /admin/keysи проверьтеpolicy_mode; PATCH не ротирует секрет. - Следующий учебный inference-запрос отправьте этим ключом. Проверьте
X-IAM-Key-Policy-Mode: external_maskedи замену приватных значений в выбранном внешнем потоке. Исходные значения не должны уходить провайдеру; при невозможности маскирования ожидайте отказ. - Для возврата восстановите прежний режим тем же 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
- История запросов → Запросы Router → Настройки IAM.Secure (та же панель доступна в Routing Audit).
- Выберите Режим маскирования и Минимальная защита.
- Нажмите Сохранить; кнопка активна только при изменении. Нажмите Обновить, чтобы увидеть применённые значения; это также сбрасывает несохранённый черновик.
- Отправьте учебный запрос и проверьте заголовок ответа
X-IAM-Masking-Mode, решение, периметр и доказательства замены в истории.
2026-10-15 · Настоящее приложение на staging. На кадре обезличенные настройки или агрегированные показатели тестового стенда; это не статистика реальных клиентов и не benchmark. Профиль оператора и списки чужих tenant исключены. Параметры защиты не изменялись.
- Режим
- Минимальная защита
- Сохранить
| Поле | Значения и смысл | Область действия |
|---|---|---|
Режим / mode | auto — дополнительный поиск всех известных приватных значений; verdict_classes — только классы первичного вердикта | Базовый режим Router. |
Минимальная защита / floor | auto запрещает клиенту ослабить режим до 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.sensitivity | PUBLIC / 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 его синонимом. |
perimeter | external — внешний провайдер; on_prem — организационный периметр; local — локальный. Для block провайдер не вызывается. |
| Порядок правил | Сверху вниз, первое совпадение. Стрелки вверх/вниз меняют результат. Если совпадения нет, используется on-prem; внешний маршрут по умолчанию не подразумевается. |
cost_optimization.research_to_cheapest | Выбор дешёвой подходящей модели для research, внутри разрешённого периметра. |
cost_optimization.prefer | cheapest_relevant, fastest, balanced: предпочтение стоимости, скорости или баланса; не ослабляет приватность. |
reasoning_effort | none, 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, отклоняется.
2026-10-15 · Настоящий staging и существующая операторская SSO-сессия. Только синтетический tenant/группа; секреты и профиль оператора исключены областью снимка. Форма не доказывает применение на всех репликах.
- mask_route
- Сохранить
- fail_closed
2026-10-15 · Настоящий staging и существующая операторская SSO-сессия. Только синтетический tenant/группа; секреты и профиль оператора исключены областью снимка. Форма не доказывает применение на всех репликах.
- mask_route
- Сохранить
- 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"
}
Включить маскирование вместо блокировки
- Проверьте, что ключ работает в
strict, а класс допускает замену. - В нужном tenant измените только соответствующее правило на
mask_routeи требуемый периметр, оставив более строгие правила выше. - Проверьте примеры с PII, секретом, конфиденциальным смысловым текстом и injection. Последние не должны становиться разрешёнными из-за общего правила.
- Найдите фактический результат по Request ID. Если маскировать нельзя, ожидайте более закрытый маршрут/блокировку, а не передачу исходного текста наружу.
Отмена изменения
«Отмена» закрывает несохранённый редактор. После сохранения примените предыдущий документ или поддерживаемый rollback версии; rollback повторно валидируется относительно текущих провайдеров и может получить 422. Проверяйте версию, перечитанные значения и новый запрос.
Действия классов: off, shadow и enforce
2026-10-15 · Настоящее приложение на staging. Только синтетический клиент, публичные определения или агрегированные показатели тестового стенда. Это не статистика клиентов и не benchmark. Исходные пиксели не изменены; профиль и закрытые данные исключены. Проверен образец screenshot@example.invalid. Это regex-проверка реестра, а не транспортный тест запроса к модели.
- Образец текста
- Протестировать
- Маскированный текст
Оператор развёртывания задаёт 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.
- Сначала проверьте настройки на staging и используйте только учебные данные:
Паспорт РФ серия 4521 номер 123456. Это вымышленный пример, не данные клиента. - Отправьте запрос рабочим API вашего клиента. Поддерживаются отдельные поля серии и номера, переносы строк, JSON с дополнительными полями и строковые Unicode-экранирования. В аргументах инструментов Router сохраняет контекст имени инструмента и вложенных паспортных полей при классификации и замене.
- В История запросов → Запросы Router найдите request ID и раскройте строку. Проверьте класс
pii.passport, действиеmask_route, фактический периметр и блок маскирования. Подсветка показывает найденные исходные фрагменты и переданные вместо них плейсхолдеры. Исходный Input может оставаться в защищённой истории: это не тело, отправленное модели. - Для приёмки интеграции дополнительно проверьте тело на вашем тестовом провайдере: в защищаемом маршруте вместо паспортных значений должны быть плейсхолдеры. Успешный 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_FLOOR | auto, auto | Базовый режим и минимальная защита. |
IAM_GW_CLASSIFIER_TIMEOUT_MS | 1500 мс | Максимальное ожидание классификатора. |
IAM_GW_CLASSIFIER_MAX_TIER | 3 | Максимальная глубина каскада. |
IAM_GW_CLASSIFIER_OPTIONAL | false | Конфигурация обязательности инспектора; не универсальный клиентский переключатель. |
IAM_GW_CLASSIFIER_BREAKER_THRESHOLD | 5 ошибок | Порог открытия circuit breaker. |
IAM_GW_CLASSIFIER_BREAKER_COOLDOWN_MS | 30000 мс | Пауза перед новой попыткой. |
IAM_GW_PRIVATE_MASK_TTL_HOURS | 12 ч | Жизнь словаря замены, отдельно от аудита. |
IAM_GW_DATA_CLASSES | Путь к реестру | Детекторы классов. |
IAM_GW_DATA_CLASS_ACTIONS | off | Enforcement действий классов; off не выключает классификацию или замену по политике. |
IAM_GW_AUDIT_RING | 500 записей | Размер краткой истории в памяти. |
IAM_GW_AUDIT_STORE_TEXT | false | Хранение исходного контента, отдельно от метаданных. |
IAM_GW_AUDIT_CONTENT_RETENTION_DAYS | 30 дней | Срок хранения исходного содержимого. |
| Postgres / Redis / ключ шифрования | Конфигурация и секреты оператора | Постоянная история, общие настройки и защищённые сессии; значения секретов в документацию не помещаются. |