Rad Blog

Archive

Django SECRET_KEY 분리방법

2020-10-02 Django xfrnk2

방법은 두 종류가 있는데, 환경 변수로 저장하거나, 파일에 따로 저장하는 방법이다.
환경 변수로 저장시 아파치 등 웹 서버를 사용하는 경우 저장되지 않을 수 있으므로 후자의 방법을 선택했다.
임의의 원하는 공간에 secrets.json 파일을 작성 한 뒤, 아래와 같이 입력하고 저장한다.
딕셔너리 내에서 콤마는 후술(가장 뒤에 덧붙이지)하지 않는다.

secrets.json

{
  "SECRET_KEY": "실제 SECRET_KEY"
} 

그 다음 setting.py를 아래와 같이 변경한다.

settings.py

import os, json
from django.core.exceptions import ImproperlyConfigured

secret_file = os.path.join(BASE_DIR, 'config', '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)에 secrets.json 파일이 저장되지 않도록 SECRET_KEY를 공개하지 하기 위해 .gitignore 파일 안에 해당 json파일을 추가하면 되겠다.

comments powered by Disqus