fargate와 django에서의 ALLOWED_HOSTS

hyuckhoon.ko·2023년 5월 26일
0

TIL

목록 보기
44/69

1. ALLOWED_HOSTS 의미

트래픽을 허용하는 IP 목록이 아니다.
ALLOWED_HOSTS는 HTTP 요청 중 "Host"란 헤더가 믿을만한 요청만 허용하겠다는 것이다. 즉, HTTP 공격에 대비한 보안 설정이다.
다시 말하지만 어떤 IP를 받고 거절할지 결정하는 보안그룹이나 NACL이 아니다.

예를 들어보자.
장고 웹 애플리케이션에 요청(request)이 들어온다.
그 요청에서 "Host 헤더"를 확인한다.
Host에 명시된 값이 ALLOWED_HOSTS 리스트에 있다면 해당 요청을 애플리케이션 레벨에서 받아들인다. 그렇지 않으면, DisallowedHost 에러를 일으킨다.

Host 값은 네트워크 설정에 따라 로드밸런서의 dns 이름일 수도 있고, 컨테이너의 private IP일 수도 있다.

2. 코드

import sys
from socket import gethostbyname_ex, gethostname

from .base import *

DEBUG = False

ALLOWED_HOSTS = [
    secrets["STAGING_LOAD_BALANCER_DNS_NAME"],
] + list(set(gethostbyname_ex(gethostname())[2]))

0개의 댓글