훈훈훈

파이썬(Django) :: SECRET_KEY 분리 방법 본문

파이썬/Django

파이썬(Django) :: SECRET_KEY 분리 방법

훈훈훈 2020. 2. 15. 18:29

# SECRET_KEY란 ?

장고(Django)에서 SECREET_KEY는 암호화 인증에 사용되는 비밀키이다.

 

이 값은 다른 프로젝트와는 다른 유일한 값으로 세팅되어야하며, 버전 컨트롤 시스템에서 제외되어야 한다. 

만약 외부에 노출 시 보안 위협에 노출될 수 있기 떄문에 settings 파일에 저장하는 것이 아닌 외부에 따로 저장을 해야한다.

 

해당 키를 분리 방법으로는 환경 변수를 이용한 방법과 외부에 저장하는 방법이 있으며, 이번 장에서는 외부에 저장하는 방법을 소개하려고 한다.

 

# secret.json 생성

{
    "FILENAME" : "secret.json",
    "SECRET_KEY" : "I'm secret !!",
    "DATABASES_HOST" : "127.0.0.1",
    "PORT" : "8080"
}

 'secret.json' 파일 생성 후 위 코드와 같이 JSON 형식으로 파일 이름, 비밀 키 등을 저장하였다.

 

# setting.py

import json

from django.core.exceptions import ImproperlyConfigured

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

def get_secret(setting, secrets=secrets):
    try:
        return secrets[setting]
    except KeyError:
        error_msg = f"Set the {setting} enviroment variable"
        raise ImproperlyConfigured(error_msg)

SECRET_KEY = get_secret("SECRET_KEY")

settings.py 파일에 다음과 같은 함수를 추가하면 SECRET_KEY를 외부에 저장한 secret.json 파일에서 불러와서 사용할 수 있다.

 

 * 참고 

  - ImproperlyConfigured : 장고에서 올바르게 설정되지 못한 프로젝트에 대해서 발생시키는 예외  

 

 

*** Refer

Two Scoops of Django

Comments