[Django] secret key 분리하기 - secrets.json 방법으로

Mini·2022년 8월 25일
0

Django

목록 보기
4/5

Django의 setting.py를 보면 secret key는 비밀스럽게 유지되어야 한다고 합니다.

settings.py에 그대로 비밀키를 넣고 git에 올려버리면 이 비밀키가 그대로 노출이 되겠죠.

그렇다면 어떻게 하면 secret key를 파일에서 분리할 수 있을까요?

(1) secrets.json 생성

BASE_DIR에 'secrets.json'이라는 파일을 만들고 아래의 내용을 복사하여 붙여놓고, secret_key 부분에는 자신의 secret key를 넣어 줍니다.

# secret_key는 자신의 secret key를 넣으면 됩니다.
{
    "SECRET_KEY": "secret_key"
}

그다음 settings.py에서 secret.json을 사용할 수 있도록 해주어야 겠죠. 적절하게 원래 있는 settings.py 코드와 섞어주면 됩니다.

(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, 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")

그런데 파일을 분리하고나서 git에 올려버리면 이렇게 분리한 소용이 없겠죠?
그래서 .gitignore에 추가를 해줍시다.

(3) .gitignore에 추가

secrets.json

그러면 비밀키를 안전하게 유지할 수 있게 됩니다.
다음은 django-environ을 통해 환경변수를 관리하는 법을 알아보겠습니다.

0개의 댓글