sanitize на самом деле редактирует, что
он не делает, и какой контроль управляет контентом, который возвращает
инструмент.
1. Что означает «sanitize» на поверхности mcp
Когда агент вызывает инструмент через MCP-шлюз, каждыйtools/call оценивается на поверхности mcp перед диспетчем.
Совпавшее правило может нести один из
авторируемых вердиктов firewall — allow, audit, deny, sanitize,
pending_approval или cap_cost. Вердикт sanitize — это редактирующий:
- Он прогоняет набор детекторов формы секретов по аргументам вызова (JSON, который модель передала в инструмент).
- Каждое совпадение заменяется каноническим токеном вроде
[redacted:openai_key], и переписанные аргументы — это то, что пересылается на сервер. - Инструмент всё равно запускается —
sanitize— это неблокирующий, пропускающий вердикт. Агент не падает; он просто никогда не передаёт сырой секрет инструменту.
sk-, токены Bearer, US SSN, номера карт,
валидные по Луну, email), и правило может добавить пользовательские
регулярные выражения, чьи совпадения отображаются как [redacted:custom].
На поверхности inbound — рекламируемый
tools[], который объявляет
запрос, до того как вызван любой инструмент — нет аргументов времени вызова
для редактирования, так что вердикт sanitize там закрывается (fail closed)
и эскалируется до deny. Sanitize осмыслен только там, где есть живая
полезная нагрузка аргументов для переписывания: поверхности mcp и response.2. Одно конкретное правило
Допустим, вы хотите, чтобы любой вызов инструмента, чьи аргументы содержат ключ в стиле OpenAI, пересылался с вычищенным ключом, а не блокировался. Напишите правило на поверхности mcp с вердиктомsanitize,
настроенным на обнаружение этой формы секрета. Сделайте это из консоли
(Firewall → политика → правила); запись требует Developer+.
Правило, концептуально:
| Поле | Значение |
|---|---|
| Поверхность | mcp |
tool_name_glob | * (или ограничить одним сервером, например github.*) |
| Вердикт | sanitize |
| Пресеты sanitize | детекторы секретов для включения |
sanitize, поверхность и совпавшее правило.
3. Результаты инструментов недоверенные — управляйте ими на ответе модели
Вот часть, которую большинство настроек «очистки вывода» делают неправильно. Вердиктsanitize касается только аргументов. Результат инструмента —
текст или JSON, который возвращает MCP-сервер — никогда не переписывается
вердиктом firewall.
OrcaRouter относится к контенту результата инструмента как к недоверенному
входу для модели. Скомпрометированный или отравленный MCP-сервер может
вернуть секрет, запись PII или полезную нагрузку prompt-injection,
наряженную под данные. Контроль для этого контента — это
guardrail на стадии output — ответ модели,
оцениваемый после того, как модель включила результат инструмента.
Перехватывайте секреты, всплывающие в ответе
Перехватывайте секреты, всплывающие в ответе
Прикрепите guardrail с пресетом Secrets & API-Key Blocker (категория
secrets). Он блокирует учётные данные в стиле AWS / OpenAI / GitHub;
сочетайте его с Private Keys & Cloud Tokens для PEM-ключей, токенов
Slack/Stripe, ключей Google и JWT. Блок выходной стадии возвращает
guardrail_blocked (HTTP 400) и возвращает (refunds) квоту запроса.Редактируйте PII в ответе
Редактируйте PII в ответе
Пресет PII Shield маскирует типизированные сущности —
[EMAIL],
[SSN], [CREDIT_CARD], … — отображая совпавшие значения как теги.
Маскирование входной стадии живо на каждом запросе (потоковом или нет):
оно маскирует запрос до того, как модель его увидит. Маскирование
выходной стадии переписывает ответ модели только на непотоковых
ответах; внутриполосное переписывание потокового ответа в дорожной
карте, так что правило маскирования пока не редактирует потоковый ответ.Нейтрализуйте инъекцию, едущую в результатах инструмента
Нейтрализуйте инъекцию, едущую в результатах инструмента
Отравленный результат может нести текст в стиле «игнорируй предыдущие
инструкции». Безопасный пресет Prompt-Injection Basics
(ключевое слово/регулярное выражение) плюс правило
llm_judge,
оценивающее намерение инъекции, — это контроли здесь. См.
Отравление MCP-инструментов и
Prompt injection.Применение на выходе и потоковая передача. Блок выходной стадии
применяется как на потоковых, так и на непотоковых ответах — на потоке блок
обрывает поток при совпадении и выдаёт обобщённое уведомление о блокировке.
Маскирование выходной стадии применяется только к непотоковым
ответам; внутриполосное переписывание потокового ответа в дорожной карте,
так что правило маскирования пока не редактирует потоковый ответ.
4. Где живёт каждый контроль
Компактная карта двух поверхностей, чтобы вы подключили правильную ручку к правильному риску:| Вы хотите управлять… | Контроль | Где |
|---|---|---|
| Секретами в аргументах вызова инструмента | Вердикт firewall sanitize (поверхность mcp) | Правила Firewall |
| Секретами / PII / инъекцией в результате инструмента | Guardrail на стадии output | Guardrails |
5. Прикрепление и наблюдение
Оба контроля ограничены рабочим пространством, именованы и упорядочены, и оба прикрепляются одними и теми же двумя способами:- На ключ — установите
firewall_policy_id(для правила sanitize) иguardrail_id(для выходной политики) на ключе, который использует агент. - По умолчанию для рабочего пространства — отметьте политику / guardrail как значение по умолчанию для рабочего пространства, чтобы каждый ключ его наследовал.
6. Куда идти дальше
Список разрешённых MCP-инструментов
Default-deny для сервера и разрешите только инструменты, которые вы
проверили.
Правила Firewall
Полный DSL правил — вердикты, глобы, args-match, конфигурация sanitize.
Guardrails
Контентные политики, пресеты, PII-сущности и применение выходной стадии.
Отравление MCP-инструментов
Угроза, которая в первую очередь делает результаты инструментов
недоверенными.
