Django SECRET_KEY를 json 파일로 관리하기

ironcat·2022년 3월 15일
0

project

목록 보기
4/6
post-thumbnail

Django SECRET_KEY를 json 파일로 관리하기

이전에 솔루션 보안 인증을 받을 때 직접적으로 들어가 있는 값들에 대해 문제가 된 적이 있었다. 어떻게 처리해야할지 찾아보니 별도로 json 파일로 관리하는 경우가 많았다. 그 방법에 대해 정리해보려고 한다.

import json
from django.core.exceptions import ImproperlyConfigured

with open("secrets.json") as f:
    secrets = json.loads(f.read())


# Keep secret keys in secrets.json
def get_secret(setting, secrets=secrets):
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {0} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)

위 코드는 SECRET_KEY 관리로 검색하면 흔하게 볼 수 있는 코드이다.
get_secret 함수를 통해 특정 key로 접근 시 해당 값을 반환하거나 key가 없는 값일 경우 Set the {key} environment variable 이라는 에러메세지가 발생하게 된다.

{ 
    "SECRET_KEY" : "secret", 
  	"EMAIL_HOST_USER" : "email@email.xyz", 
    "EMAIL_HOST_PASSWORD" : "password", 
  	"DATABASE_HOST" : "database.host", 
    "DATABASE_PORT" : "xxxx" 
    ...
}

이제 SECRET_KEY 값 관리를 위해 경로에 secrets.json 파일을 생성 후 위와 같이 key값을 설정하여 secret 값들을 적어주고 아래와 같이 필요한 곳에 get_secret 함수를 호출하여 해당 값을 불러오도록 처리한다.

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', get_secret('SECRET_KEY'))
EMAIL_HOST_USER = get_secret('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = get_secret('EMAIL_HOST_PASSWORD')
DATABASES = {
    'default' : {
		...
	 	'PASSWORD' : get_secret('DATABASE_PASSWORD'),
	 	'HOST' : get_secret('DATABASE_HOST'),
	 	'PORT' : get_secret('DATABASE_PORT')
	}

참고 사이트 [Django] Secret key 분리하기

profile
공부하는 블로그

0개의 댓글