훈훈훈
파이썬(Django) :: SECRET_KEY 분리 방법 본문
# 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
'파이썬 > Django' 카테고리의 다른 글
파이썬(Django) :: 인증 데코레이터(Decorator) 클래스 (2) | 2020.02.17 |
---|---|
파이썬(Django) :: 회원 가입 및 로그인 API 구현 (0) | 2020.02.15 |
파이썬(Django) : 인증(Authentication)과 인가(Authorization) (0) | 2020.02.13 |
파이썬(Django) : 회원가입, 로그인 Simple API 구현 (1) | 2020.02.10 |
파이썬(Django) : QuerySet(쿼리셋) 이란 ? (1) | 2020.02.06 |
Comments