콘텐츠로 이동

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_limit zone은 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은 짧을수록 안전함