pile·
보안·cloudflare-blogCloudflare Blog·

Cloudflare 앱 생태계 OAuth 전면 개방 — Hydra 마이그레이션 내막

Cloudflare가 OAuth 인프라를 Hydra 1.X에서 2.X로 업그레이드하면서 자체 관리 OAuth를 전체 개발자에게 개방한 과정을 다룬다. 스키마 변경으로 인한 인덱스 락 문제, 블루-그린 배포 전략, 전환 중 revocation 큐 설계, 전환 후 리프레시 토큰 버그까지 실제 운영 사고와 해결을 상세히 기록했다.

핵심 포인트
  • 1.X 업그레이드 시 Hydra DB 인덱스 생성이 critical 테이블에 exclusive lock 유발 — CREATE INDEX CONCURRENTLY 재작성과 SELECT * 제거 커스텀 빌드로 해결.
  • 2.X는 스키마 변경이 방대해 in-place 불가 — 블루-그린 전략으로 약 3시간 만에 무중단 전환 완료.
  • 마이그레이션 창 동안 Cloudflare Queues로 revocation 이벤트를 큐잉 후 그린 전환 후 재생, 데이터 유실 없이 무효화 처리.
  • 1.X 전환 후 리프레시 토큰 strict 재사용 무효화 버그 → Worker 레이어 coalescing 임시 해결, 2.X에서 native grace period로 영구 해결.
  • 전환 후 Hydra P95 185ms→101ms(-45%), 메모리 888MB→763MB(-14%), CPU 1.07→0.67코어(-37%) 개선.
상세 정리
  • 배경: OAuth 파트너 연동이 Wrangler/PlanetScale 등 소수에 한정 — API 토큰 방식은 위임 흐름에 부적합해 전체 개방이 목표였다.
  • 보안 강화 선행: OAuth 동의 화면 개선, 대시보드 revocation 기능 추가, 앱 소유권 가시성 향상(피싱 방지)을 먼저 배포했다.
  • 1.X 첫 장벽: Hydra DB 마이그레이션이 critical 테이블에 exclusive lock 유발 → CREATE INDEX CONCURRENTLY로 SQL 재작성 + SELECT * 대신 명시적 컬럼 선택 커스텀 Hydra 빌드.
  • 2.X 전략 선택: 스키마 변경이 방대해 in-place 불가 → 블루-그린 배포 채택, 기존(blue)을 살린 채 그린으로 트래픽 전환.
  • 토큰 만료 연장: 전환 전 발급된 토큰이 마이그레이션 창 내내 유효하도록 만료를 수 시간으로 연장해 즉각적인 재발급 없이 서비스 유지.
  • Revocation 큐 설계: 전환 창 중 revocation 이벤트를 Cloudflare Queues에 수집 → 그린 DB 전환 후 재생, 무효화 이벤트 유실 차단.
  • 2.X 실행 순서: 생산 DB를 그린 타겟에 복사 → 제약 위반 데이터 정리 → Hydra + 내부 2개 시스템 동시 전환, 총 약 3시간 소요.
  • 1.X 전환 후 버그: 리프레시 토큰 에러 급증 — 신버전의 strict 재사용 무효화 정책이 원인으로 Wrangler/MCP 클라이언트처럼 요청이 많은 클라이언트가 피해를 입었다. Worker 레이어에서 refresh token 요청을 짧게 캐시하는 coalescing 로직으로 임시 처리.
  • 2.X 전환 후 403 급증: authorization 서비스 정리 잡이 Hydra 마이그레이션으로 변형된 세션을 과잉 삭제 → 시스템 간 OAuth 정책 데이터 불일치 발생 → 데이터 복원 + 정적 정책 의존도 감소로 수습.
  • DB 규모: 1억3250만 행 업데이트, 1억1470만 행 삽입, temp 136.97GB, 트랜잭션 커밋 22,200회.
  • 성능 개선 결과: P95 185ms→101ms(-45%), RSS 메모리 888MB→763MB(-14%), Go 힙 449MB→271MB(-40%), Goroutine 4015→3076(-23%), CPU 1.07→0.67코어(-37%).
왜 읽나OAuth 서버 대규모 버전 업그레이드나 PostgreSQL 무중단 인덱스 마이그레이션을 고민하는 백엔드/인프라 엔지니어에게 블루-그린 전환 + revocation 큐 + 토큰 coalescing까지 실전 레퍼런스.
cloudflare-blog
Cloudflare Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2