Skip to content

feat: GCP production 배포와 출시 전 보안 보강 - #21

Open
manNomi wants to merge 8 commits into
mainfrom
agent/gcp-production-release
Open

feat: GCP production 배포와 출시 전 보안 보강#21
manNomi wants to merge 8 commits into
mainfrom
agent/gcp-production-release

Conversation

@manNomi

@manNomi manNomi commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

작업 내용

  • 기존 서버 배포 구성을 GCP Compute Engine와 Caddy HTTPS 워크플로우로 전환했습니다.
  • Vercel 환경변수 동기화 단계를 제거해 네이티브 앱과 GCP API만 운영 배포 경로에 남겼습니다.
  • 로그인 없이 접근 가능한 개인정보 처리방침, 이용약관, 고객지원 HTML 페이지를 GCP API 서버에 추가했습니다.
  • 업로드 엔드포인트 인증, 경로 탐색 방지, 파일 시그니처와 MIME 검증을 보강했습니다.
  • 인증 요청 이중 rate limit, production 개발 라우트 제거, 고아 업로드 정리를 반영했습니다.
  • 리캡 마커 조회가 요청 반경을 따르도록 테스트 기대값을 수정했습니다.
  • GCP Cloud DNS 구성과 앱 전용 배포 절차를 문서화했습니다.

검증

  • pnpm install --frozen-lockfile
  • pnpm db:generate
  • pnpm typecheck
  • pnpm build
  • pnpm test:api (61개 테스트, 47 통과 / 14 제외)
  • pnpm check:openapi-sync (63개 operation)
  • pnpm check:no-spotify-metadata
  • GitHub Actions workflow YAML parse
  • GCP 배포 워크플로우 30695453667 내부 health/API contract 통과

참고

manNomi and others added 3 commits August 1, 2026 19:30
Moves production deployment from AWS EC2 to a GCP Compute Engine VM
running the same Postgres+API Docker Compose stack. Caddy now
terminates HTTPS for api.soundlog.shop directly on the VM instead of
relying on the Vercel proxy trick EC2 needed for TLS.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- dev DB 테스트 라우트를 production에서 제거하고 비-production에서도 인증 필수화
- 업로드 사진 조회를 소유권/공개여부 기반 인증 엔드포인트(GET /v1/uploads/:fileId)로 전환,
  path traversal 차단, 매직바이트 기반 Content-Type 검증, 업로드 MIME 화이트리스트 적용
- 로그인/회원가입/refresh에 계정+IP 이중 rate limit 적용
- 이미지 교체 시 고아 업로드 파일 정리 로직 보강

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@manNomi
manNomi marked this pull request as ready for review August 1, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant