장고 프로젝트 폴더를 새로운 repo 에 push 하자 다음과 같은 메일이 날아왔다.
무슨일인지 하고 봤더니
장고 공식 문서에서는 SECRET_KEY 를 노출하면 보안에 취약하기 때문에 노출하지 말라는 말이 적혀있었다.
그래서 github 에 push 를 할 때 자동으로 push 되지 않도록 해야한다.
그러기 위해선 .gitignore 파일에서 추가하고 싶지 않은 파일이나 디렉토리를 관리함으로써 모든 파일이 통째로 push 되지 않도록 해야한다.
두가지 방법이 있는데, 환경변수로 관리하게 되면 로컬 환경이 바뀔 때 마다 변경해줘야하기 때문에 비밀파일로 관리하는 것이 편하다고 판단했다.
secretes.json
settings.py 의 SECRET_KEY
값을 복사한다.
secrets.json 파일을 managy.py 와 같은 디렉토리에 생성한 뒤 dict 형태로 SECRET_KEY
를 넣어준다. 이 땐 key 와 value 는 항상 큰 따옴표 "" 로 감싸줘야 에러가 나지 않는다.
그 뒤 settings.py 에서 secrets.json 을 다음과 같은 방식으로 import 한다.
BASE_DIR
에서는 path 를 지정해준다. parent.parent
는 현재 settings.py 파일이 속한 위치에서 부모.부모 위치 즉, 프로젝트 폴더 최상단이다. 왜냐면 secrets.json 이 그 디렉토리에 있기 때문이다.
with open(secret_file) as f:
코드를 통해 secrets.json 에 있는 파일을 열어, json.loads 를 통해 json 파일을 파이썬이 이해할 수 있는 dict type 으로 변환해주는 작업을 거친다.
get_secret()
함수를 통해 다른 파일에서 관리하는 SECRET_KEY
를 import 해온다.
서버를 돌렸더니 잘 돌아간다. 이제 .gitignore 파일에 secretes.json 파일을 추가해서 자동으로 commit 되지 않도록 해보자.
먼저 touch .gitignore
을 통해 .gitignore 파일을 생성한다.
vi .gitignore
으로 편집창을 열고 secrets.json 파일명을 추가하고 wq
로 저장한다.
실제로도 secret.json 파일이 push 되지 않은 것을 확인할 수 있다.
앞으로 비밀이 보장되어야 하는 민감한 KEY 및 개인정보 등을 관리할 때는 .gitignore 를 이용해서 관리하면 편할 것 같다.