[Django] Secret Key 분리

이정연·2023년 4월 23일
0

Django

목록 보기
11/12

서론

깃허브 가디언으로부터 장고 시크릿 키가 노출되어 있다는 경고 메일을 받았다.

시크릿 키란 장고 프로젝트를 생성할 때 부여받는 고유 암호인데 이것이 노출되면 보안상 위험하다고 한다.

지금은 개인 연습 용도로 사용하고 있지만 훗날 프로젝트를 할 때 배포까지 고려해야하니 시크릿 키를 별도로 관리하는 방법을 알아보고자 한다.

방법

1. secrets.json

프로젝트 루트 디렉토리에 secrets.json 파일을 생성하여 시크릿 키를 지정한다.

나같은 경우는 장고에서 default로 생성해준 키 값을 입력했다.

{
	"SECRET_KEY": <사용하고자 하는 장고 시크릿 >
}

2. settings.py

import os, json
from django.core.exceptions import ImproperlyConfigured

secret_file = os.path.join(BASE_DIR, 'secrets.json')  # secrets.json 파일 위치를 명시

with open(secret_file) as f:
    secrets = json.loads(f.read())

def get_secret(setting):
    """비밀 변수를 가져오거나 명시적 예외를 반환한다."""
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)


SECRET_KEY = get_secret("SECRET_KEY")

json file에서 설정한 시크릿 키를 settings.py에 가져온다.

3. gitignore

secrets.json

.gitignore 파일을 프로젝트 루트 디렉토리(secrets.json이 위치한 곳)에 생성후 secrets.json을 버전관리 하지 않겠다고 선언

profile
0x68656C6C6F21

0개의 댓글