피드로 돌아가기
Dev.toSecurity
원문 읽기
JWKS Rotation Gap으로 인한 Auth 5xx 31.4% 급증 해결
We rotated our JWKS without overlap. Here is the 4-minute window that broke prod.
AI 요약
Context
Issuer의 JWKS Rotation 주기와 Verifier의 Cache TTL 간 불일치로 인한 인증 실패 발생. 특히 24시간 TTL을 가진 구버전 라이브러리 서비스가 4시간의 Overlap Window를 초과하며 인증 토큰 검증 불가 상태에 진입한 구조적 한계.
Technical Solution
- Kid Miss 시 Forced Refresh 로직 도입을 통한 Cache TTL 의존성 제거 및 검증 지연 시간의 sub-second 단축
- Generic Error를 상세 로깅으로 전환하여 Rotation 관련 Cache Miss와 Fingerprint 변경 사항을 명시적으로 식별
- CI 파이프라인 내 JWKS Rotation Classifier 도입을 통한 Issuer의 Disjoint 상태 사전 탐지
- Previous JWKS와 Current JWKS의 교집합을 분석하여 Overlap Policy 위반 시 빌드 실패 처리
- Verifier 내부의 수동적 대기 구조에서 Issuer 상태를 사전 검증하는 능동적 Guardrail 체계로 전환
실천 포인트
1. JWKS Verifier 구현 시 kid 미탐지 상황에서 즉시 Refresh 후 재시도하는 로직이 포함되었는지 확인
2. 서비스 전체 플릿 내에서 가장 긴 Cache TTL을 가진 컴포넌트를 식별하고 Issuer의 Overlap Window가 이를 상회하는지 검토
3. Rotation 정책 위반을 탐지할 수 있는 자동화된 CI Check 도입 고려
4. JWT 라이브러리가 던지는 추상적인 서명 오류를 세분화하여 로깅하는 래퍼 클래스 설계