Django의 setting.py를 보면 secret key는 비밀스럽게 유지되어야 한다고 합니다.
settings.py에 그대로 비밀키를 넣고 git에 올려버리면 이 비밀키가 그대로 노출이 되겠죠.
그렇다면 어떻게 하면 secret key를 파일에서 분리할 수 있을까요?
(1) secrets.json 생성
BASE_DIR에 'secrets.json'이라는 파일을 만들고 아래의 내용을 복사하여 붙여놓고, secret_key 부분에는 자신의 secret key를 넣어 줍니다.
# secret_key는 자신의 secret key를 넣으면 됩니다.
{
"SECRET_KEY": "secret_key"
}
그다음 settings.py에서 secret.json을 사용할 수 있도록 해주어야 겠죠. 적절하게 원래 있는 settings.py 코드와 섞어주면 됩니다.
(2) settings.py 수정
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, secrets=secrets):
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")
그런데 파일을 분리하고나서 git에 올려버리면 이렇게 분리한 소용이 없겠죠?
그래서 .gitignore에 추가를 해줍시다.
(3) .gitignore에 추가
secrets.json
그러면 비밀키를 안전하게 유지할 수 있게 됩니다.
다음은 django-environ을 통해 환경변수를 관리하는 법을 알아보겠습니다.