1. MCP 에이전트를 보안하는 이유
에이전트를 다섯 개의 MCP 서버에 직접 가리키면 다섯 개의 신뢰 경계, 다섯 개의 자격 증명 저장소, 그리고 공유된 감사 추적은 0개를 갖게 됩니다. 고객 레코드를 읽는tools/call과 셸 명령을 실행하는 것이 모델에게 동일하게 보이고, 커뮤니티
서버는 처음 로드될 때 조용히 shell.exec와 외부 네트워크 범위를 요청할 수
있습니다.
해결책은 OrcaRouter를 모든 호출이 가로지르는 단일 초크 포인트로 만드는
것입니다. MCP 에이전트 트래픽을 처음부터 끝까지 보안하려면 모든 MCP
디스패치를 Firewall의 MCP 게이트웨이를 통해
라우팅하여, 모든 tools/call이 실제 서버에 도달하기 전에 정책 평가를 받게
하세요 — skill은 위험 점수가 매겨지고, egress는 통제되며, 자격 증명은 저장
시 암호화됩니다.
2. Secure Agents 기준선에서 시작하기
맞춤형인 무엇을 작성하기 전에, 자세를 설정하세요. 콘솔에서 Firewall → Posture를 열고balanced
자율성 수준(Developer
역할)을 적용하세요. 한 트랜잭션에서 가장 파괴적인 액션을 거부하면서 툴 호출을
감사하고 PII를 플래그합니다 — 광범위하게 강제하기 전에 관찰하며, 원클릭
실행 취소가 있습니다.
Events와 Runs 피드가 적절해
보이면, **tight**로 이동하세요: 기본 거부, 파괴적 셸 거부, SSRF 형태 egress
거부, 그리고 PII Shield와 Secrets Blocker guardrail 강제. 그 단일 스위치가
이 레시피가 그 위에 구축하는 바닥입니다.
3. 모든 tools/call을 하나의 MCP 게이트웨이를 통해 라우팅하기
각 MCP 서버를 한 번 등록하세요; 게이트웨이는 단일 연결 아래에서 그들의 툴을 집계하고(네임스페이스<server>.<tool>) 모든 tools/call을 firewall 엔진을
통해 실행합니다.
콘솔(또는 REST API, Developer+)에서 서버를 등록하세요:
github.create_issue와 shell.exec가 하나의 연결 아래에 나란히
나타나고, 각 디스패치는 실행되기 전에 평가됩니다. 차단된 호출은 전송 크래시가
아니라 툴 오류(firewall deny: …)로 모델에 돌아오므로, 에이전트가 적응할 수
있습니다.
서버의 툴에 대해 규칙을 작성할 수 있으려면, 먼저 그것을 probe하여 이름과
스키마를 발견하세요:
4. 에이전트가 끌어오는 skill 격리하기
MCP 게이트웨이는 호출을 통제합니다; skill 거버넌스는 에이전트가 로드하는 기능을 통제합니다. 모든 설치 가능한 skill, BYO MCP 서버, 또는 플러그인은 모든 규칙 판정 위에 올라타는 위험 밴드와 강제 모드로 스캔됩니다:| 모드 | 런타임에서의 효과 |
|---|---|
allow | 규칙 판정이 결정합니다; skill은 아무것도 더하지 않습니다. |
quarantine | deny에 미치지 않는 모든 것이 pending_approval로 보류됩니다. |
block | skill의 툴이 강제 거부됩니다. |
5. SSRF 형태의 egress 거부하기
손상되거나 혼동된 MCP 툴이 클라우드 메타데이터나 인트라넷 호스트에 도달하는 것은 고전적인 유출 경로입니다. 두 레이어가 그것을 커버합니다. 먼저, 게이트웨이는 등록 시점과 각 디스패치 홉에서 모든 원격 MCP 엔드포인트와 그 해석된 다이얼 IP를 SSRF 정책에 대해 검증합니다 — 인트라넷 범위와 클라우드 메타데이터 주소는 거부되며, DNS 리바인딩을 무력화하기 위해 재검사됩니다. 그것은 내장되어 있습니다; 여러분이 구성하지 않습니다. 둘째,tight 자율성 수준은 fetch 형태의 툴 이름을 거부하는 SSRF
egress 프리셋을 제공합니다 — http_fetch, web_search, fetch_url,
request, 그리고 그들의 <server>.* 네임스페이스 형태 — 그래서 전체 역할이
“이 URL을 가서 가져오기”인 툴은 다이얼하기 전에 멈춥니다.
툴이 목적지별로 어디에 도달할 수 있는지 통제하려면, host/CIDR 거부 목록과
함께 여러분 자신의 egress 규칙을 작성하세요 — 그것이 아웃바운드 도달
범위를 고정하는 표면입니다:
6. 서버 자격 증명을 암호화 상태로 유지하기
모든 MCP 서버의auth_json은 저장 시 암호화되고 읽을 때 마스킹됩니다;
게이트웨이는 디스패치 시점에 자격 증명을 주입하므로, 그것들은 결코 모델이나
클라이언트에 도달하지 않습니다. 지원되는 auth_mode 값:
bearer
bearer
{ "token": "…" } — 정적 bearer 토큰,
Authorization: Bearer로 전송됨.oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" } —
client-credentials OAuth; 게이트웨이가 토큰을 가져오고 갱신합니다.basic
basic
{ "username": "…", "password": "…" } — HTTP Basic 인증.none
none
"" — 인증되지 않은 서버. 기본값.status(ok / degraded / down)는 그것에 의존하기 전에 도달
가능한지를 알려줍니다.
7. 요청에 콘텐츠 guardrail 추가하기
Firewall은 액션을 통제합니다; 여러분의 MCP 에이전트를 통과하는 텍스트도 스크리닝되도록 Guardrail과 짝지으세요. Secrets Blocker 프리셋은 모델 — 또는 어떤 툴 — 이 보기 전에 요청 내 자격 증명을 잡고, PII Shield는 들어오는 길에 식별자를 마스킹합니다. 둘 다tight 자율성 수준과 함께 켜지거나,
guardrail_id를 통해 에이전트의 릴레이 키에 이름이 지정된 guardrail을
연결하세요.
8. 검증하고 지켜보기
정책에 신뢰하기 전에 그것이 예상하는 것을 하는지 확인한 다음, 피드를 주시하세요:툴 호출 테스트
여러분의 정책에 대해 샘플
tools/call을 dry-run하고 판정, 매치된 규칙,
그리고 이유를 보세요 — 아무것도 디스패치되지 않고, 아무것도 로깅되지
않습니다.Discovered tools
워크스페이스가 본 모든 툴이, covered 또는 gap으로 플래그됨 — 실제 MCP
트래픽으로부터 곧바로 규칙을 작성하세요.
Events & Runs
모든 디스패치, 그 판정, 그리고 그것이 친 표면이, 에이전트 run별로
롤업됨.
이상 피드
학습된 베이스라인에 대한 속도/비용 급증, retry 루프, 그리고 새로운 툴
경로.
9. 다음으로 갈 곳
MCP 툴 오염
격리와 MCP 게이트웨이 뒤의 위협 모델.
과도한 에이전시
자율 툴 사용에 기본 거부와 HITL이 중요한 이유.
자율 에이전트 레시피
고자율 에이전트를 처음부터 끝까지 강화하세요.
유출 중지
아웃바운드 egress를 깊이 있게 잠그세요.
