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. 보안·cloudflare-blogCloudflare Blog·

    사이트 소유자를 위한 새 AI 트래픽 제어 옵션

    Cloudflare가 Content Independence Day 1주년을 맞아 웹사이트 소유자가 AI 트래픽을 목적별로 세분화해 제어할 수 있는 새 시스템을 공개했다. 기존 "AI 봇 차단" 토글을 넘어 Search·Agent·Training 세 카테고리로 봇을 분류하고, robots.txt에 콘텐츠 재사용 범위를 선언하는 새 use= 시그널을 도입했다. 멀티퍼포스 봇은 가장 제한적인 카테고리 규칙이 적용되며, 2026년 9월 15일부터 광고 페이지에 새 기본값이 적용된다.

    #web-security#bot-management#robots-txt+2
  2. 보안·cloudflare-blogCloudflare Blog·

    양자 내성 암호화 행정명령(EO 14409) — 2030 전환 기한과 조직 대응 방안

    2026년 6월 22일 트럼프 대통령이 서명한 행정명령 EO 14409는 미 연방 기관에 2030년까지 암호화(키 교환) 전환, 2031년까지 디지털 서명 전환을 요구한다. Cloudflare는 이미 자사 네트워크 브라우저 트래픽의 2/3 이상을 PQC(Post-Quantum Cryptography)로 보호 중이며, 이 글은 행정명령의 기술적 함의와 조직이 지금 당장 해야 할 일을 정리한다.

    #tls#cryptography#post-quantum-cryptography+2
  3. 보안·vercel-blogVercel Blog·

    Vercel OIDC 토큰의 커스텀 오디언스 지원

    Vercel OIDC 발급자(`oidc.vercel.com`)가 커스텀 오디언스 클레임을 지원하기 시작했다. 기존 고정 오디언스(`https://vercel.com/{owner}`) 방식은 특정 제공자가 침해됐을 때 공격자가 동일 토큰으로 다른 서비스에 인증을 시도할 수 있었는데, 이제 배포마다 서드파티별 고유 `aud` 클레임을 설정해 토큰 격리가 가능하다.

    #jwt#oidc#token-exchange+1