티스토리 뷰
[ Django Setting.py의 SECRET_KEY 보호하기 ]
- Setting.py에는 Django의 SECRET_KEY, Database 설정 계정의 암호 등 민감정보가 텍스트로 기록되어 있음
- 이러한 민감정보를 숨기기 위해 민감정보를 json 파일로 만들고 숨김, 숨겨진 민감정보 json 파일을 읽어들이는 방식으로 직접입력된 민감정보 텍스트를 보호
- 민감정보를 입력하기 위한 json 파일 생성
$ pwd
/opt/todo
$ vi .secrets.json
--------------------------------------------------------------------------------
{
"SECRET_KEY": "[Django의 SECRET_KEY 입력]",
"DATABASE": "[Database 연결 계정의 암호 입력]"
}
--------------------------------------------------------------------------------
- Django Setting.py 설정 변경
$ vi /opt/todo/todo/settings.py
-----------------------------------------------------------------------------------------
# Json 모듈 불러오기
import os, json
from django.core.exceptions import ImproperlyConfigured
# 기존 Django의 SECRET_KEY 정보 삭제
secret_file = os.path.join(BASE_DIR, '.secrets.json')
# secrets.json 파일을 읽은 후 secrets 변수에 저장
with open(secret_file) as f:
secrets = json.loads(f.read())
# get_secret 함수를 생성하여 호출 시 해당 키 값 리턴
def get_secret(setting, secrets=secrets):
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
# get_secret 함수를 호출하여 json SECRET_KEY 키의 값 적용
SECRET_KEY = get_secret("SECRET_KEY")
....
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'todo',
'USER': 'todo_admin',
# Database 연결 계정의 Password도 동일하게 Json의 DATABASE 키의 값 적용
'PASSWORD': get_secret("DATABASE"),
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
},
}
}
-----------------------------------------------------------------------------------------
- runserver, makemigrations & migrate 등의 명령어를 통해 정상적으로 작동하는지 확인
'[Web] > Django' 카테고리의 다른 글
[Django] Django Tutorial - MySQL 5.7 연결하기 (0) | 2020.02.13 |
---|---|
[Django] Django Tutorial - Settings.py (0) | 2020.02.13 |
[Django] Django Tutorial - VS Code 개발 환경 설정 (0) | 2020.02.09 |
[Django] Django Tutorial - Django & Nginx 연동하기 (0) | 2020.02.09 |
[Django] Django Tutorial - Django & Gunicorn 연동하기 (0) | 2020.02.08 |
Comments
최근에 올라온 글