깃허브 가디언으로부터 장고 시크릿 키가 노출되어 있다는 경고 메일을 받았다.
시크릿 키란 장고 프로젝트를 생성할 때 부여받는 고유 암호인데 이것이 노출되면 보안상 위험하다고 한다.
지금은 개인 연습 용도로 사용하고 있지만 훗날 프로젝트를 할 때 배포까지 고려해야하니 시크릿 키를 별도로 관리하는 방법을 알아보고자 한다.
프로젝트 루트 디렉토리에 secrets.json
파일을 생성하여 시크릿 키를 지정한다.
나같은 경우는 장고에서 default로 생성해준 키 값을 입력했다.
{
"SECRET_KEY": <사용하고자 하는 장고 시크릿 키>
}
import os, json
from django.core.exceptions import ImproperlyConfigured
secret_file = os.path.join(BASE_DIR, 'secrets.json') # secrets.json 파일 위치를 명시
with open(secret_file) as f:
secrets = json.loads(f.read())
def get_secret(setting):
"""비밀 변수를 가져오거나 명시적 예외를 반환한다."""
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")
json file에서 설정한 시크릿 키를 settings.py에 가져온다.
secrets.json
.gitignore 파일을 프로젝트 루트 디렉토리(secrets.json이 위치한 곳)에 생성후 secrets.json을 버전관리 하지 않겠다고 선언