본문 바로가기

Python/Django

[Django] Secret key 새로 생성 후 분리하기

Django Secret key란? [참고]

Cryptographic Signing을 제공하는데 사용된다.

Cryptographic Signing이란?

  • Web application security의 Golden rule은 신뢰할 수 없는 출처로부터 온 데이터를 절대 신뢰해서는 안된다는 것
  • 하지만 때로는 신뢰할 수 없는 매체를 통해 데이터를 전달하는 것이 유용할 수도 있다.
  • 그렇기에 value를 Cryptographically sign(암호화적으로 서명)하는 것이 필요하다.

Secret key 새로 생성

Django Secret Key Generator

Secret key 분리

secrets.json

{
    "SECRET_KEY": "여기에 secret key 넣기"
}

settings.py

import 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")

.gitignore

secrets.json