[Django] SECRET_KEY (작성 중..)
SECRET_KEY
- 암호화 서명을 제공하는데 사용되며 SECRET_KEY 값이 없을 경우 장고는 실행되지 않는다.
- django-admin startproject 명령으로 프로젝트 생성 시 자동으로 키 값이 생성됨.
- 보안과 직관된 데이터이므로 외부에 노출되지 않도록 각별한 주의하 필요하다.
어디에 이용되지?
사용 중인 django.contrib.sessions.backends.cache 외에 다른 백엔드 세션이나 기본
CookieStorage 또는 FallbackStorage 사용중인 모든 메세지들
모든 PasswordResetView 토큰들
다른 키가 제공되기 전까지 암호화 서명에 사용
settings.py에서 SECRET_KEY 분리
환경변수로 SECRET_KEY 가져오기
비밀파일 패턴으로 SECRET_KEY 가져오기
(1) 환경변수
SECRET_KEY 값을 환경변수로 등록해두고 이를 가져와 사용한다면, 협업을 위해 커밋할 경우 키 값이 외부에 공개되는 것을 방지할 수 있다.
- 환경변수 등록
$ vi .bashrc
$ export SECRET_KEY=' 본인 SECRET_KEY 값 '
$ echo $SECRET_KEY
- 환경변수 참조
# 환경 변수로 부터 키값을 가져옴
import os
SECRET_KEY = os.environ['환경변수명']
(2) 비밀파일 패턴
json 파일 생성하고, 파일로 부터 설정값을 읽어오는 방식. json 파일은 .gitignore 등록해 커밋 되지 않도록 하는 것.
- json 생성
- 비밀파일로 부터 데이터를 가져오는 함수 작성 (repo/conf/util.py)
import json
# json 파일 경로
secret_file = os.path.join(BASE_DIR, 'devel.json'
with open('secret_file', mode='rt', encoding='utf-8') as file:
secrets = json.loads(file.read())
def get_secret(setting, data=secrets):
데이터 가져오기 (repo/conf/devel.py)