본문 바로가기
Frameworks/Django

[Django] settings.py에서 SECRET KEY 관리하기

by 젊은오리 2022. 5. 18.
728x90

프로젝트를 github에 올릴 때 조심해야될 사항 중 한가지가 비밀 키를 노출시키면 안된다는 것이다.  AWS cloud를 이용할 때에도 AWS access key나 secret key들을 장고의 settings.py에 다 넣어놓게 되는데 이거 노출되면 과금폭탄 맞을수도 있다. 따라서 api key(노출돼도 괜찮은 api key도 존재한다)을 포함한 여러가지 key값에 대해서 관리가 필요하다.

기존에는 최상위폴더에 secrets.json파일을 따로 만들어서 아래 사진과 같이 settings.py에서 secrets.json의 경로를 알려주고 secrets.json파일을 gitignore에 등록하는 방식으로 관리했는데,, 이번에 설명할 방법은 json파일이 아닌 python파일로 간단하게 관리하는 방식이다.

1
2
3
4
5
6
7
8
#settings.py
 
BASE_DIR = Path(__file__).resolve().parent.parent
ROOT_DIR = os.path.dirname(BASE_DIR)
SECRETS_PATH = os.path.join(ROOT_DIR, 'secrets.json')
 
 
SECRET_KEY = json.loads(open(SECRETS_PATH).read())
cs

 

1. python파일 생성

본인은 my_settings.py로 했지만 파일명은 아무거나 지어도 상관없다. manage.py와 같은 위치상에 만든다.

SECRET_KEY와 DATABASES을 settings.py에서 가져와 복붙한다.(이곳에 다른 비밀 키들을 가져와서 관리해도 된다.)

완성된 my_settings.py와 settings.py는 아래 사진과 같다. settings.py에서 my_settings.py를 import해줘야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#my_settings.py
 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}
SECRET_KEY = "본인 장고 secret key"
cssd

 

1
2
3
4
5
6
#settings.py
 
import my_settings
 
SECRET_KEY = my_settings.SECRET_KEY
DATABASES = my_settings.DATABASES
cs

 

2. .gitignore에 등록

당연한 얘기지만 혹시나 까먹을까봐.. gitignore에 등록해서 파일숨기는 것을 잊지말자..!

728x90

댓글