본문 바로가기

LIKELION 9th

[Django] SECRET_KEY 분리하기(Django Secret Key exposed on GitHub 메일)

 

낮에 메일을 확인하던 중 어마 무시한 메일을 발견했다.

 

 

Django Secret Key exposed on GitHub😮

 

알고 보니 장고에서 사용하는 AWS 시크릿 코드, 장고 시크릿 키 등의 값은 보안을 위해 프로젝트 코드에 포함하면 안 된다고 한다. 반성의 의미로 settings.py의 SECRET_KEY 분리하는 법을 복습해보겠다.

 

1) Django 프로젝트 폴더 내 secret.json 파일 새로 만들기

 

2) settings.py에서 복사한 SECRET_KEY값 딕셔너리 형태로 붙여 넣기

 *key와 value는 큰 따옴표로 감싸주는 거 잊지 말기

 

3) settings.py에서 JSON파일 불러오기

#settings.py
import os, json

from django.core.exceptions import ImproperlyConfigured
from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

#json파일을 파이썬 객체로 변환
secret_file = os.path.join(BASE_DIR, 'secret.json')

with open(secret_file) as f:
    secret = json.loads(f.read())

def get_secret(setting, secret=secret):
    try:
        return secret[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")

 

4) .gitignore 파일에 secret.json 추가하기

 

5) commit 후 push

깃허브 저장소를 확인해보니 JSON파일 없이 잘 올라간 것을 확인할 수 있었다.


 

시크릿 키를 관리하는 법 중에는 환경변수를 사용하는 법도 있다. 관련 포스팅 및 참고 자료는 아래 게시글 확인❗

 

TIL DAY 11 || Igonoring Django Secret Key with .gitignore

How to handle Django Secret Key?

velog.io