Actions
업무 #444
진행중
HP
JL
GoTrue proxy guard — /monitor/api/auth/gotrue/* 운영 외부 노출 차단
업무 #444:
GoTrue proxy guard — /monitor/api/auth/gotrue/* 운영 외부 노출 차단
설명
배경¶
Phase 0.7 Section A (User/GoTrue) 구현 시 주가한 GoTrue proxy /monitor/api/auth/gotrue/{signup,login,refresh} (commit:server|e77e776) 가 /monitor/* 와 함께 public route 로 열려 있다. 운영 (https://edge-rpc.alphea.io) 에서도 누구나 같은 origin 으로 호출 가능하므로, 실질적으로 내부 GoTrue 컨테이너(:9011) 를 외부에 proxy 하는 효과가 된다.
운영에 남아 있으면 안 되는 상태 — #443 (Phase 0.7 MVP) 구현/검증 종료 전 또는 동시에 가드를 추가해서 없애야 한다.
현재 상태¶
- 파일:
alphea-rpc/internal/handler/webconsole_test_client_gotrue.go - 파일 상단에 SECURITY / OPERATIONS NOTE 주석 달림 (다음 이슈 = 이 이슈)
- admin web 의 동등 proxy(
internal/admin/gotrue.go) 는 admin SAML/Basic Auth 뒤에 있어 보호됨 — 참고
옵션¶
(a) MONITOR_TEST_CLIENT_ENABLED env 가드¶
- 기본 OFF (운영), dev/스테이징에서만
true로 키면 endpoint 공개 - OFF 일 때
/monitor/api/auth/gotrue/*와/monitor/test-client페이지 자체도 404 - 장점: 가장 간단. 단일 환경 변수로 제어
- 단점: dev/스테이징에서는 그대로 공개 (특별한 인증 없이). 이더라도 dev/staging 은 VPN 뒤에 있다면 OK
(b) admin SAML/Basic Auth 뒤로 이동¶
- test client 자체도 같이 이동 (admin web 에 편입) 아니면 origin 분리로 CORS 문제 부활
- 장점: 이미 검증된 보호 계층 재사용
- 단점: 구현 양 큼. Phase 0.7 구현 순서 1단계 자리를 이동해야 함
(c) Rate limit / IP allowlist¶
- 외부 개방하되 brute-force 차단
- (a) 와 병행 가능
제안¶
(a) MONITOR_TEST_CLIENT_ENABLED env 가드 가 가장 가벼운 조치. dev/스테이징 (10.62.10.x) 은 VPN 뒤에 있으므로 관론으로시 충분. (b)/(c) 는 필요해지면 후속.
DoD¶
-
MONITOR_TEST_CLIENT_ENABLEDenv 추가 (config 기본값false) -
false일 때/monitor/test-client+ 3개 gotrue proxy endpoint 모두 404 - dev/CI 로컬 환경에서 이 env 를 true 로 키면 기존 sdktest+webconsole 검증 그대로 동작
-
webconsole_test_client_gotrue.go의 SECURITY / OPERATIONS NOTE 주석 갱신 (가드 도입됨을 반영) - PROJECT_STATUS 부채 표에서 해당 항목 제거
관련 이슈¶
HP Henry Park이(가) 6달 전에 변경
TODO 마커 + 부채 표 등록¶
commit:server|e1ab575
-
webconsole_test_client_gotrue.go상단의 SECURITY 주석을TODO(#444)로 격상. "운영 도메인에 남기면 안 됨" 명시 - PROJECT_STATUS.md 부채 표에 이 이슈 항목 궁연계 (🟡 → 🔴, 이슈 번호 명시)
- 메모리에도 기록
구현 시점은 #443 (Phase 0.7 MVP) 의 서버 RPC 구현 진행 중 또는 직후. 이 이슈가 해결되고 운영 배포에 반영되기 전에는 운영 도메인에서 /monitor/api/auth/gotrue/* 공개되어 있다는 점 인지 필요.
Actions