Auth / Identity 서비스 Nginx 설정¶
Auth / Identity 서비스(로그인, 토큰 발급, OAuth, SSO 등)를 제공하기 위한 Nginx 설정 기준 정의함. 보안 민감도가 높은 Auth 서비스 특성을 반영하여 일반 API와 분리된 기준을 명시함.
1. 적용 대상¶
- 로그인 API
- 토큰 발급 / 갱신 API
- OAuth / SSO Endpoint
- 인증 게이트웨이
2. Auth 서비스 특성¶
Auth 서비스는 다음과 같은 특성을 가짐.
- 요청 크기 매우 작음
- 요청 빈도 높음
- 공격 대상 1순위
- 실패 시 재시도 및 자동화 공격 발생 가능함
- 성능보다 보안과 안정성이 중요함
3. 서비스별 필수 설정¶
3.1 요청 크기 제한¶
Auth 요청은 매우 작은 payload만 필요함.
client_max_body_size 1m;
- JSON 기반 인증 요청에 충분함
- 업로드 기능은 허용하지 않음
3.2 Timeout 정책¶
Auth 요청은 빠르게 성공 또는 실패해야 함.
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
- backend 지연 시 즉시 실패 유도
- 공격 시 연결 고착 방지 목적
3.3 프록시 헤더 전달¶
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
- 클라이언트 식별 및 로그 정확성 확보 목적
4. 권장 server 설정 예시¶
server {
listen 443 ssl;
server_name auth.example.com;
client_max_body_size 1m;
location / {
proxy_pass http://AUTH_BACKEND_UPSTREAM;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
}
}
5. Auth 트래픽 특성 및 rate / connection limit 적용 기준¶
5.1 Auth 트래픽 특성¶
- 짧은 요청 반복
- 동일 IP 또는 계정 기반 반복 시도 발생
- 정상 사용자와 공격 트래픽 구분 필요함
5.2 rate / connection limit 적용 원칙¶
- Auth 서비스는 rate limit 필수
- connection limit은 보조 수단으로 사용함
- 실패 응답 시에도 제한이 적용되도록 구성함
5.3 일반적인 권장 수치 예시 (참고)¶
limit_conn conn_limit 5;
limit_req zone=req_limit burst=10 nodelay;
전제:
req_limit,conn_limitzone은 04-Nginx Global 설정 (공통 기반)에서 먼저 정의되어 있어야 함.
- 외부 공개 Auth 서비스 기준 예시임
- 내부 Auth 서비스는 다소 완화 가능함
5.4 상황별 적용 예시¶
1) 내부 전용 Auth 서비스¶
- 목적: 안정성 확보
- 권장 방향:
limit_conn: 10 ~ 20 수준limit_req: 완화된 값 적용
2) 외부 공개 Auth 서비스¶
- 목적: 무차별 대입 공격 방어
- 권장 방향:
limit_conn: 3 ~ 5 수준limit_req: 적극 적용- IP / 계정 기반 제한 병행
3) SSO / OAuth 서비스¶
- 목적: 대규모 사용자 안정성 확보
- 권장 방향:
limit_conn: 낮게 유지limit_req: burst 허용- 실패 응답 시 빠른 차단 로직 연계
6. 정리¶
- Auth 서비스는 보안 우선 서비스임
- rate limit은 선택이 아니라 필수임
- timeout은 짧을수록 안전함