✅ Django SECRET_KEY를 안전하게 설정하는 방법
📌 목적
Django에서 보안에 중요한 SECRET_KEY를 외부 파일에서 안전하게 불러오는 코드를 완전히 이해하기!
1️⃣ 기본 코드 구조
BASE_DIR = Path(__file__).resolve().parent.parent
with open(BASE_DIR / '.config_secret' / 'secret.json') as f:
config_secret_str = f.read()
SECRET = json.loads(config_secret_str)
SECRET_KEY = SECRET['DJANGO_SECRET_KEY']
2️⃣ 한 줄씩 상세 설명
🔹 BASE_DIR = Path(__file__).resolve().parent.parent
- 현재 settings.py 파일의 경로를 기준으로 프로젝트 최상위 폴더 경로를 지정
- 예시: /Users/username/myproject/config/settings.py → /Users/username/myproject
🔹 with open(BASE_DIR / '.config_secret' / 'secret.json') as f:
- .config_secret/secret.json 파일을 연다
- Path를 / 연산자로 이어 붙이면 자동으로 경로가 연결됨
- 안전하게 파일을 열고 닫는 방식 (with문 사용)
🔹 config_secret_str = f.read()
- 파일 내용을 한 번에 문자열로 읽음
🔹 SECRET = json.loads(config_secret_str)
- JSON 형식의 문자열을 파이썬 딕셔너리로 변환
- 예시:
{
"DJANGO_SECRET_KEY": "abc123xyz987!!"
}
🔹 SECRET_KEY = SECRET['DJANGO_SECRET_KEY']
- 위 딕셔너리에서 키 값 꺼내서 Django에 설정값으로 전달
3️⃣ 시뮬레이션 예제
secret.json 파일 내용:
{
"DJANGO_SECRET_KEY": "1234abcd!@#$_secret_key_5678"
}
결과적으로 settings.py는 이렇게 동작함:
SECRET_KEY = "1234abcd!@#$_secret_key_5678"
4️⃣ 보안 팁 & 주의사항
항목 설명
secret.json은 .gitignore에 추가 필수 | 깃허브에 올리면 절대 안 됨! |
JSON 문법 오류 주의 | 콤마 누락, 따옴표 오류 등 실수 잦음 |
파일 경로 정확히 확인 | BASE_DIR 기준으로 .config_secret/secret.json 위치 필수 |
✅ 정리 요약
키워드 의미
Path(__file__).resolve().parent.parent | 프로젝트 루트 경로 찾기 |
with open(...) | 파일 열기 블럭 |
json.loads() | 문자열 → 딕셔너리 변환 |
SECRET['DJANGO_SECRET_KEY'] | 딕셔너리에서 보안 키 추출 |
📦 보너스: .env 방식으로도 가능!
원하면 다음과 같이 .env 파일과 python-dotenv를 써서 더 깔끔하게 처리할 수도 있음.
필요하면 다음 포스팅에서 다뤄볼게요 😎
'기술블로그-Django편' 카테고리의 다른 글
🔗 HTTP 메서드 + URL + request body 구조 정보 정리 (REST API 기반) (0) | 2025.05.14 |
---|---|
✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지? (0) | 2025.05.13 |
✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명 (0) | 2025.05.13 |
🔐 Django 비밀번호 암호화와 검증 완전 정리 (0) | 2025.05.13 |
🧠 Django ORM 객체 생성과 저장의 차이 완전 정리! (0) | 2025.05.13 |