git으로 프로젝트를 진행한다면 ( 2 ) - django secret key 분리하기
보고 배운 곳 : https://inma.tistory.com/83
.gitignore 설정하기 : https://integer-ji.tistory.com/179
해당 글을 보았다면 모두가 보는 공개된 장소 (Git)에는 중요한 정보를 올리지 않아야 한다.
django-admin을 통하여 project를 만들었다면
settings.py에 secret key가 생겼을 것이다.
우리는 이 key를 지켜야 한다
(AWS key 등 잘못하면 과금이 되기 때문에 모든 key는 자신의 지갑과 같다고 생각해야 한다.)
1. 왜 숨겨야 하나?
생성한 project 아래에 settings.py에 가보면 SECRET KEY가 있다.
https://wayhome25.github.io/django/2017/07/11/django-settings-secret-key/
몽키님의 블로그를 봐보면 SECRET KEY가 노출될 경우
https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY
SECRET_KEY¶
Default: '' (Empty string)
A secret key for a particular Django installation. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value.
django-admin startproject automatically adds a randomly-generated SECRET_KEY to each new project.
Uses of the key shouldn’t assume that it’s text or bytes. Every use should go through force_text() or force_bytes() to convert it to the desired type.
Django will refuse to start if SECRET_KEY is not set.
django 공식 문서 중..
그러니 우리는 SECRET KEY를 잘 관리해야 한다.
2. 분리하기
manage.py와 동일한 위치에 secrets.json파일을 만들어 settings.py에 있는 SECRET_KEY를 넣어줍니다.
{
"SECRET_KEY" : "xxx"
}
3. settings.py에서 json 파일 읽어오기
import os, json
from django.core.exceptions import ImproperlyConfigured
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
secret_file = os.path.join(BASE_DIR, 'secrets.json')
with open(secret_file) as f:
secrets = json.loads(f.read())
def get_secret(setting, secrets=secrets):
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")
기존에 있던 SECRET_KEY를 지워주고 해당 소스를 넣어주었다.
소스 참조 : https://inma.tistory.com/83
해당 소스를 넣고 runserver를 했을 때 정상적으로 django가 실행된다면 성공한 것이다.
4. .gitignore에서 secrets.json 제외시키기
이렇게 gitignore에 SECRET_KEY가 담긴 secrets.json를 제외시켜주면 끝!
'코딩공부 > Python Django' 카테고리의 다른 글
django 초대받은 github에 커밋하기 (0) | 2020.05.19 |
---|---|
첫 협업, git 설정하기 - collaborator이 없을 때 (0) | 2020.05.15 |
django .gitignore 설정 (0) | 2020.05.15 |
django 회원가입 기능 만들기 (9) | 2020.03.01 |
django media 파일 설정 이미지 파일 저장하기 (0) | 2020.03.01 |