MCP 터널 보안

MCP 터널 보안 (MCP tunnels security)

터널 아키텍처는 강력한 기본값(아웃바운드 전용 연결, 종단 간 암호화, IP 검증)을 제공하지만, 터널 스택의 전반적인 보안은 여러분이 어떻게 구성하고 운영하느냐에도 달려 있어요. 이 페이지에서는 권장 보안 강화, 침해 대응, 터널 폐기(decommission) 방법을 다뤄요.

출처: 문서

본문

참고 (Note) MCP 터널은 연구 프리뷰(research preview) 상태예요. 사용해보려면 액세스를 요청하세요.

터널 아키텍처는 강력한 기본값(아웃바운드 전용 연결, 종단 간 암호화, IP 검증)을 제공하지만, 터널 스택의 전반적인 보안은 여러분이 어떻게 구성하고 운영하느냐에도 달려 있어요. 이 페이지에서는 권장 보안 강화, 침해 대응, 터널 폐기 방법을 다뤄요.

모범 사례 (Best practices)

  • 모든 MCP 서버에 OAuth를 요구하세요.업스트림 MCP 서버MCP 인증 스펙에 설명된 대로 OAuth를 요구하도록 구성해요. OAuth는 터널의 전송 인증 위에 방어 심층(defense in depth)을 제공하고 데이터 계층에서 사용자 수준의 권한 부여를 가능하게 해요.
  • 조직에 SSO를 활성화하세요. 터널, 페더레이션 규칙, 서비스 계정은 Claude Console에서 관리돼요. SSO는 이를 변경할 수 있는 관리자에게 ID 공급자의 세션 제어를 적용해요.
  • upstream.allowed_ips를 제한하세요. MCP 서버를 포함하는 가장 작은 CIDR 범위를 사용해요. 이것이 프록시의 주요 SSRF 방어책이에요.
  • 로그를 모니터링하세요. 터널 스택에서 경고, 오류, 비정상적인 트래픽 패턴에 알림을 걸어두세요.
  • 자격 증명을 순환(rotate)하세요. 서버 인증서와 터널 토큰을 정기적으로 순환하고, 손상이 의심되면 즉시 순환하세요.
  • 이미지를 최신 상태로 유지하세요. 새 프록시 릴리스를 추적하고 SHA-256 다이제스트로 이미지를 고정해요.
  • 네트워크 범위를 제한하세요. 프록시와 cloudflared네트워크 요구 사항에 나열된 대상에만 도달할 수 있어야 해요. NetworkPolicy(Kubernetes)나 호스트 방화벽 규칙(Compose)을 사용하세요.
  • MCP 서버 범위를 제한하세요. 각 서버는 그 목적에 필요한 도구와 데이터만 노출해야 해요.
  • 저장 시 자격 증명을 보호하세요. 개인 키와 터널 토큰에 조직의 비밀 관리 방식을 적용해요.

의심되는 침해에 대응하기 (Respond to a suspected breach)

터널 토큰, TLS 키 또는 프록시 호스트가 손상되었다고 생각된다면:

  1. 터널 스택 중지하기
    • Helm:
      helm uninstall mcp-tunnel -n mcp-tunnel
      
    • Docker Compose:
      docker compose down --timeout 0
      
  2. 업스트림 MCP 서버 분리하기 — 업스트림 MCP 서버를 이를 사용하는 모든 Managed Agent 세션에서 제거하고, Messages API 요청의 mcp_servers 블록에 URL을 전달하는 것을 중지해요.
  3. 터널 아카이브하기 — 아카이빙은 터널 토큰을 무효화하고 도메인을 분리해요. Console의 MCP tunnels 목록에서 터널을 아카이브하거나, API로 아카이브하려면 터널 아카이브를 참고해요.
  4. Anthropic에 연락하기 — 의심되는 손상을 Anthropic 지원팀에 신고해요.
  5. 하위 자격 증명 순환하기 — 새 터널을 다시 프로비저닝하고 영향을 받은 MCP 서버가 발급한 OAuth 토큰을 순환해요.
  6. 복구 전 로그 검토하기 — 새 터널을 온라인으로 가져오기 전에 손상이 의심되는 기간 동안 프록시, cloudflared, MCP 서버 로그를 검사해요.

터널 내리기 (Tear down a tunnel)

터널을 폐기하고 저장된 모든 자격 증명을 제거하려면 다음 단계를 따르세요.

  1. 터널 스택 중지하기
    • Helm:
      helm uninstall mcp-tunnel -n mcp-tunnel
      
    • Docker Compose:
      docker compose down
      
  2. 터널 아카이브하기 — Console의 MCP tunnels 목록에서 터널을 아카이브해요.
  3. 저장된 자격 증명 제거하기
    • Helm: 프로그래매틱 액세스를 사용했다면 설정 구성 요소가 릴리스 이름과 같은 단일 Secret을 만들었어요. 프로그래매틱 액세스가 없다면 mcp-tunnel-tokenmcp-tunnel-cert를 직접 만들었을 거예요. 해당하는 것을 삭제하세요:
      kubectl -n mcp-tunnel delete secret \
        mcp-tunnel mcp-tunnel-token mcp-tunnel-cert \
        --ignore-not-found
      
    • Docker Compose: 개인 키와 인증서는 data/에 있어요. 터널 토큰은 data/tunnel-token(프로그래매틱 흐름) 또는 셸 환경(수동 흐름)에 있어요. config/ 디렉터리와 docker-compose.yaml에는 비밀이 없으므로 재프로비저닝할 계획이라면 보관하고, 아니라면 함께 제거해도 돼요.
      sudo rm -rf data
      

더 알아보기 (Learn more)