본문 바로가기

BackEnd/Django

Django 장고 - Secret key 파일 분리하는 방법

반응형

장고 프로젝트를 Git에 업로드 하거나 배포할 때, 보안상으 이유로 Secret Key를 분리해야 합니다. 이번에는 Secret Key를 파일로 따로 관리하는 방법에 대해 알아보도록 하겠습니다.

  1. secrets.json 파일을 만들기
    - 먼저 secret key를 담을 secrets.json 파일을 manage.py과 같은 위치에 만듭니다.
    - 이 json file의 형식은 아래와 같습니다.
    - "SECRET KEY" 부분에 본인의 SECRET KEY를 입력해주면 됩니다.
    {
    	"SECRET_KEY" : "SECRET KEY"
    }​
  2. settings.py을 수정해줍니다.
    import os
    
    # json file을 읽기 위해 json module을 import 합니다.
    import json  
    
    # Error 발생시 처리하기 위해 import 합니다.
    from django.core.exceptions import ImproperlyConfigured
    
    # 기존에 있던 BASE_DIR입니다. 아래 secret_file을 불러올 때
    # 사용하기 때문에 BASE_DIR을 먼저 설정해줍니다.
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    # 만들어두었던 json 파일을 불러옵니다.
    secret_file = os.path.join(BASE_DIR, 'secrets.json')
    
    # json 파일을 읽어 secret에 할당합니다.
    with open(secret_file) as f:
    	secrets = json.loads(f.read())
    
    # json 파일에 key를 확인하고 key가 없으면 KeyError를 출력합니다.
    def get_secret(setting, secrets=secrets):
        try:
            return secrets[setting]
        except KeyError:
            error_msg = "Set the {0} enviroment variable".format(setting)
            raise ImproperlyConfigured(error_msg)
     
    SECRET_KEY = get_secret("SECRET_KEY")
  3. .gitignore에 입력합니다.
    - 아직 .gitignore에 입력하는 방법을 모르시는 분들은 아래 링크를 따라 들어가서 확인하시기 바랍니다.
    - 이렇게 하면 Secret key를 본인만 알 수 있게 관리할 수 있습니다.
    https://axce.tistory.com/11?category=994855
 

Git .gitignore File 적용으로 필요없는 파일 제외하고 업로드하기

# .gitignore 파일은 Project에서 원격 저장소로 보내고 싶지 않은 파일들을 제외시킬 수 있는 설정 File 입니다. # 우선 .gitignore 파일은 Project의 최상위에 존재해야 합니다. # .gitignore를 자동을 만들어

axce.tistory.com

 

반응형