피드로 돌아가기
Dev.toSecurity
원문 읽기
JWKS 캐싱 기반 Multi-Issuer JWT 검증을 통한 Gateway 계층의 인증 최적화
Validate JWTs from Multiple Issuers in kgateway
AI 요약
Context
다양한 Identity Provider(IdP)를 사용하는 환경에서 각 IdP별 개별 Gateway를 운영해야 하는 관리 복잡성 발생. Upstream 서비스가 매 요청마다 JWT를 파싱하거나 IdP에 인증을 요청함으로써 발생하는 네트워크 오버헤드와 지연 시간 해결이 필요함.
Technical Solution
- JWTPolicy를 통한 단일 Gateway 내 다중 Issuer 정의로 인프라 파편화 방지
- Envoy Data Plane 계층에서 JWT 검증을 수행하여 Upstream 도달 전 비정상 요청을 즉시 차단하는 구조 설계
- JWKS Endpoint에서 공개키를 호출하여 로컬에 캐싱함으로써 IdP 의존성을 제거하고 오프라인 검증 가능 상태 유지
- Token의 'iss' Claim을 기준으로 매칭되는 Provider의 공개키를 선택하는 최우선 일치(First Match) 로직 적용
- 검증 완료된 특정 Claim을 HTTP Header로 변환하여 Upstream 서비스에 전달함으로써 중복 파싱 제거 및 비즈니스 로직 집중 환경 제공
- RS256 비대칭 암호화 기반의 서명 검증을 통해 토큰 변조 가능성을 원천 차단
실천 포인트
- Production 환경에서 JWKS cacheDuration을 최소 5분 이상으로 설정하여 IdP 장애 시 가용성 확보 - 보안 강화를 위해 aud(Audience) 검증 설정을 필수 적용하여 토큰 오용 방지 - Air-gapped 환경의 경우 JWKS를 Kubernetes Secret으로 마운트하는 로컬 검증 방식 검토 - Prometheus를 통해 JWT 거부율(Rejection Rate)을 모니터링하고 이상 징후에 대한 알람 설정