Shared Key에서 Per-User Token 체계로의 전환을 통한 보안 경계 확립
MCP Server Auth: The API Is the Real Boundary
AI 요약
Context
단일 shared API key 사용으로 인한 Audit Log 식별 불가 및 사용자별 권한 회수 불가능 문제 발생. MCP Client 단의 제어는 UX 수준의 제한일 뿐 실제 보안 경계(Security Boundary)를 형성하지 못하는 구조적 한계 직면.
Technical Solution
- InMemoryTokenRegistry 도입을 통한 Per-User Token 기반 Identity 식별 체계 구축
- timingSafeStrEq 및 No-Early-Return 로직 적용으로 Token 추측을 방지하는 Timing Attack 방어 설계
- Fastify onRequest Hook 기반의 Server-side Write Gate를 통해 HTTP Method와 Path Prefix 기준의 Authorization 강제
- Least Privilege 원칙에 따라 Role 미지정 시 Member 권한을 기본 부여하는 Fail-closed 메커니즘 구현
- Token Resolve 단계에서 Identity를 확정한 후 하위 스택이 이를 신뢰하는 Edge-based Authentication 구조 채택
실천 포인트
["Shared Key \uc0ac\uc6a9 \uc2dc \uc0ac\uc6a9\uc790 \uc99d\uac00 \uc2dc\uc810\uc5d0 \ub9de\ucd98 Per-User Token \uc804\ud658 \uacc4\ud68d \uc218\ub9bd", "\uc778\uc99d \ud1a0\ud070 \ube44\uad50 \uc2dc Constant-time \ube44\uad50 \ud568\uc218 \uc0ac\uc6a9 \uc5ec\ubd80 \uac80\ud1a0", "\uad8c\ud55c \uccb4\ud06c \ub85c\uc9c1\uc5d0\uc11c Early-return\uc73c\ub85c \uc778\ud55c \ud0c0\uc774\ubc0d \uc815\ubcf4 \uc720\ucd9c \uac00\ub2a5\uc131 \ud655\uc778", "API Gateway \ub610\ub294 Middleware \ub2e8\uc5d0\uc11c Role \uae30\ubc18\uc758 Path-prefix \uc811\uadfc \uc81c\uc5b4 \uad6c\ud604"]