메인 콘텐츠로 건너뛰기
당신은 MCP 서버를 연결했고, 이제 게이트웨이가 툴 호출이 실제 서버에 도달하기 전에 유출된 시크릿을 떼어내길 — 그리고 그 툴이 반환하는 무엇이든이 자격 증명(또는 인젝션 페이로드)을 모델로 다시 밀반입하는 것을 막길 원합니다. 그것들은 두 가지 다른 작업이며, 두 가지 다른 통제로 처리되고, 솔직한 버전이 중요합니다: 한 손잡이가 둘 다 커버한다고 가정하면, 갭을 출하하게 됩니다. 이 페이지는 OrcaRouter의 mcp 출력 정화에 대한 집중 가이드입니다 — firewall sanitize 판정이 실제로 편집하는 것, 하지 않는 것, 그리고 툴이 반환하는 콘텐츠를 관리하는 통제.
sanitize 판정은 툴 호출 인자를 편집하며, 툴이 반환하는 결과는 결코 아닙니다. 그것은 당신의 에이전트가 툴로 보내는 것을 재작성합니다. 툴이 돌려보내는 것을 관리하려면, 모델의 응답에 대한 output-stage guardrail을 사용합니다 — §3을 참조하세요.

1. mcp 표면에서 “sanitize”가 의미하는 것

에이전트가 MCP 게이트웨이를 통해 툴을 호출하면, 모든 tools/call은 디스패치 전에 mcp 표면에서 평가됩니다. 매칭하는 규칙은 작성 가능한 firewall 판정 중 하나를 담을 수 있습니다 — allow, audit, deny, sanitize, pending_approval, 또는 cap_cost. sanitize 판정이 편집하는 것입니다:
  • 그것은 호출의 인자(모델이 툴에 전달한 JSON)에 대해 시크릿 형태 탐지기 세트를 실행합니다.
  • 각 매칭은 [redacted:openai_key] 같은 정규 토큰으로 대체되고, 재작성된 인자가 서버로 전달되는 것입니다.
  • 툴은 여전히 실행됩니다 — sanitize는 비차단, 통과 판정입니다. 에이전트는 크래시하지 않습니다; 그저 원시 시크릿을 결코 툴에 건네지 않습니다.
내장 탐지기는 잘 알려진 시크릿 형태(AWS 액세스 키, sk- 스타일 API 키, Bearer 토큰, US SSN, Luhn 유효 카드 번호, 이메일)를 커버하며, 규칙은 매칭이 [redacted:custom]으로 렌더링되는 커스텀 정규식을 추가할 수 있습니다.
inbound 표면 — 요청이 선언하는 광고된 tools[], 어떤 툴이 호출되기 전 — 에는 편집할 호출 시 인자가 없으므로, 거기서 sanitize 판정은 닫힘으로 실패하고 deny로 에스컬레이션됩니다. Sanitize는 재작성할 라이브 인자 페이로드가 있는 곳 — mcp와 response 표면 — 에서만 의미가 있습니다.

2. 하나의 구체적인 규칙

인자에 OpenAI 스타일 키를 담은 어떤 툴 호출이든 차단되는 대신 키가 정제된 채 전달되길 원한다고 합시다. 그 시크릿 형태를 탐지하도록 구성된 sanitize 판정으로 mcp 표면에 규칙을 작성하세요. 이를 콘솔(Firewall → 정책 → 규칙)에서 수행하세요; 쓰기는 **Developer+**가 필요합니다. 규칙은, 개념적으로:
필드
표면mcp
tool_name_glob* (또는 한 서버로 범위 지정, 예: github.*)
판정sanitize
Sanitize 프리셋활성화할 시크릿 탐지기
호출 시, 다음과 같은 인자 페이로드:
{ "note": "use key sk-AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH for the upstream" }
는 서버로 다음과 같이 전달됩니다:
{ "note": "use key [redacted:openai_key] for the upstream" }
호출은 성공합니다; 시크릿은 결코 서버에 도달하지 않습니다. firewall 이벤트는 sanitize 판정, 표면, 그리고 매칭된 규칙을 기록합니다.
툴이 정당하게 인자의 대부분을 필요로 하지만 자유 텍스트에 시크릿이 가끔 묻어 올 때 sanitize에 손을 뻗으세요. 전체 호출이 위험할 때는 대신 deny(또는 pending_approval)를 사용하세요 — MCP 툴 허용 목록을 참조하세요.

3. 툴 결과는 신뢰할 수 없습니다 — 모델 응답에서 관리하세요

여기가 대부분의 “출력을 정화하라” 설정이 잘못하는 부분입니다. sanitize 판정은 인자만 건드립니다. 툴의 결과 — MCP 서버가 돌려보내는 텍스트나 JSON — 는 firewall 판정에 의해 결코 재작성되지 않습니다. OrcaRouter는 툴 결과 콘텐츠를 모델에 대한 신뢰할 수 없는 입력으로 취급합니다. 손상되거나 포이즌된 MCP 서버는 데이터로 위장한 시크릿, PII 레코드, 또는 프롬프트 인젝션 페이로드를 반환할 수 있습니다. 그 콘텐츠에 대한 통제는 output 단계 — 모델의 응답, 모델이 툴 결과를 통합한 평가됨 — 의 guardrail입니다.
Secrets & API-Key Blocker 프리셋(카테고리 secrets)으로 guardrail을 첨부하세요. 그것은 AWS / OpenAI / GitHub 스타일 자격 증명을 차단합니다; PEM 키, Slack/Stripe 토큰, Google 키, 그리고 JWT를 위해 Private Keys & Cloud Tokens와 짝지으세요. output-stage 차단은 guardrail_blocked(HTTP 400)를 반환하고 요청의 할당량을 환불합니다.
PII Shield 프리셋은 타입이 지정된 엔티티 — [EMAIL], [SSN], [CREDIT_CARD], … — 를 마스킹하여, 매칭된 값을 태그로 렌더링합니다. Input-stage 마스킹은 모든 요청(스트리밍이든 아니든)에서 라이브입니다: 그것은 모델이 보기 전에 요청을 마스킹합니다. Output-stage 마스킹은 비스트리밍 응답에서만 모델 응답을 재작성합니다; 스트리밍 응답의 in-band 재작성은 로드맵에 있으므로, 마스크 규칙은 아직 스트리밍된 응답을 편집하지 않습니다.
포이즌된 결과는 “이전 지시를 무시하라” 스타일 텍스트를 운반할 수 있습니다. Prompt-Injection Basics 안전 프리셋(키워드/정규식) 더하기 인젝션 의도를 점수화하는 llm_judge 규칙이 여기서의 통제입니다. MCP 툴 포이즈닝프롬프트 인젝션을 참조하세요.
Output 강제와 스트리밍. Output-stage block은 스트리밍과 비스트리밍 응답 둘 다에서 강제됩니다 — 스트림에서는, 매칭 시 차단이 스트림을 끊고 일반 차단 통지를 내보냅니다. Output-stage mask비스트리밍 응답에만 적용됩니다; 스트리밍 응답의 in-band 재작성은 로드맵에 있으므로, 마스크 규칙은 아직 스트리밍된 응답을 편집하지 않습니다.

4. 각 통제가 사는 곳

두 표면의 간결한 지도이며, 올바른 손잡이를 올바른 위험에 배선하도록:
관리하려는 것…통제어디서
툴 호출의 인자 내 시크릿Firewall sanitize 판정(mcp 표면)Firewall 규칙
툴의 결과 내 시크릿 / PII / 인젝션output 단계의 GuardrailGuardrails
sanitize가 툴 결과를 커버하게 만들려 하지 마세요 — 그것은 그것을 볼 수 없습니다. 그리고 input-stage guardrail이 툴이 대화 도중 반환하는 것을 잡을 거라고 가정하지 마세요; 툴 결과 콘텐츠는 모델의 응답, 즉 output 단계에서 관리됩니다.

5. 첨부 및 관찰

두 통제 모두 워크스페이스 범위이고, 이름이 있으며, 정렬되어 있고, 둘 다 동일한 두 가지 방식으로 첨부됩니다:
  • 키별 — 에이전트가 사용하는 firewall_policy_id(sanitize 규칙용)와 guardrail_id(output 정책용)를 설정합니다.
  • 워크스페이스 기본값 — 정책/guardrail을 워크스페이스 기본값으로 표시하면 모든 키가 그것을 상속합니다.
이 모든 것을 세션/액세스 토큰으로 콘솔에서 구성하세요(관리 라우트는 릴레이 키가 아니라 UserAuth를 사용합니다). Firewall 쓰기는 **Developer+**가 필요합니다; guardrail 쓰기는 **Developer+**가 필요합니다. 라이브되면, sanitize 매칭은 firewall 이벤트(판정, 표면, 매칭된 규칙)로 나타나고, guardrail 매칭은 guardrail 매칭 피드에 나타납니다. 둘은 다른 읽기 게이트를 가집니다: firewall 이벤트 피드는 **Developer+**가 필요한 반면, guardrail 매칭 피드는 모든 워크스페이스 멤버가 읽을 수 있습니다. 기본적으로 매칭은 그 타입, 액션, 그리고 단계를 기록하지만 원시 매칭된 콘텐츠는 기록하지 않습니다; 트리아지를 위해 부분 문자열이 필요할 때만 Log raw content를 켜세요.

6. 다음 단계

MCP 툴 허용 목록

서버를 기본 거부로 두고 검토한 툴만 허용합니다.

Firewall 규칙

전체 규칙 DSL — 판정, 글로브, args-match, sanitize 구성.

Guardrails

콘텐츠 정책, 프리셋, PII 엔티티, 그리고 output-stage 강제.

MCP 툴 포이즈닝

애초에 툴 결과를 신뢰할 수 없게 만드는 위협.
이 두 레이어 간의 분할이 처음이신가요? Guardrails vs. firewall을 읽은 다음, sanitize와 output guardrail이 함께 닫는 유출 경로는 데이터 유출을 참조하세요.