TIL DAY 11 || Igonoring Django Secret Key with .gitignore

TK·2021년 2월 26일
1

TIL

목록 보기
15/55

장고 프로젝트 폴더를 새로운 repo 에 push 하자 다음과 같은 메일이 날아왔다.

무슨일인지 하고 봤더니

장고 공식 문서에서는 SECRET_KEY 를 노출하면 보안에 취약하기 때문에 노출하지 말라는 말이 적혀있었다.

그래서 github 에 push 를 할 때 자동으로 push 되지 않도록 해야한다.
그러기 위해선 .gitignore 파일에서 추가하고 싶지 않은 파일이나 디렉토리를 관리함으로써 모든 파일이 통째로 push 되지 않도록 해야한다.

  • 환경변수로 관리
  • 비밀파일로 관리

두가지 방법이 있는데, 환경변수로 관리하게 되면 로컬 환경이 바뀔 때 마다 변경해줘야하기 때문에 비밀파일로 관리하는 것이 편하다고 판단했다.

Isolate SECRET_KEY in 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

서버를 돌렸더니 잘 돌아간다. 이제 .gitignore 파일에 secretes.json 파일을 추가해서 자동으로 commit 되지 않도록 해보자.

  • 먼저 touch .gitignore 을 통해 .gitignore 파일을 생성한다.

  • vi .gitignore 으로 편집창을 열고 secrets.json 파일명을 추가하고 wq 로 저장한다.

  • add, commit 후 push 한다.

Result

실제로도 secret.json 파일이 push 되지 않은 것을 확인할 수 있다.

앞으로 비밀이 보장되어야 하는 민감한 KEY 및 개인정보 등을 관리할 때는 .gitignore 를 이용해서 관리하면 편할 것 같다.

profile
Backend Developer

0개의 댓글