안녕세계

[장고 AtoZ] SECRET KEY 분리 본문

[장고 AtoZ] SECRET KEY 분리

Junhong Kim 2018. 2. 5. 15:32
728x90
반응형

안녕하세요 이번 포스팅에서는

django 프로젝트의 Secret Key를 분리하는 과정을 진행할 것입니다.


django-admin startproject 명령어를 통해서 장고 프로젝트를 생성하면 settings.py 안에 SECRET_KEY가 존재합니다.

개인적으로 프로젝트를 진행하는 경우 공개 저장소에 따로 업로드 하지 않으면 문제가 되지 않지만


Github, Bitbucket 등 공개 저장소에 업로드할 때는 비밀 값들은 다른 사용자들이 알 수 없도록 하여 올려야합니다.

(예: Facebook APP key , AWS key 와 같은 값은 따로 관리해야 합니다.)


우선, 프로젝트 생성시 만들어지는 Secret Key를 따로 분리하여 공개저장소에 올리는 과정을 진행해보도록 하겠습니다!



우리가 이전에 생성한 프로젝트 구조는 아래 그림과 같습니다.



여기서 settings.py에 들어가보면 SECRET_KEY가 존재합니다



SECRET_KEY를 찾으셨나요? 그럼 여기에 존재하는 키 값을 우리는 .json 포맷의 파일로 분리해 봅시다!



다음으로 settings.py 로 가서 secrets.json에 존재하는 변수를 읽어보는 작업을 진행하겠습니다.


json과 예외처리할 ImproperlyConfigured를 import 합니다.

그리고 우리가 불러올 secrets.json 을 secret_file 변수에 경로를 담고


with open as f 구문을 통해서 json 변수를 읽어옵니다.


이후 get_secret 함수에서 해당 json 키값을 통해 해당 값을 SECRET_KEY 값에 적용합니다.

이 작업을 한뒤 서버를 실행하고 로컬로 접속하면 잘 접속 되는걸 확인할 수 있습니다.



그럼 이제 우리는 secrets.json을 .gitignore에 추가하고 제외한 뒤 공개 저장소에 올려보도록 하겠습니다!


.gitignore 를 등록할 때 꿀팁..!

https://www.gitignore.io/

위 사이트에서 우리가 기본적으로 원격저장소에 업로드할 때 제외할 파일을 미리 생성해주는 사이트입니다.

PyCharm을 사용할 때 굳이 원격 저장소에 올릴필요 없는 항목들을 자동으로 만들어줍니다.


우리는 지금 python, django, pycharm을 사용하고 있으므로 코드에 불필요한 항목들을 gitignore에 추가해주십시다.



저는 Django, Python, PyCharm에서 원격저장소에 올릴 때 불필요한 항목들을 생성했습니다.

Create후 브라우저에 나오는 텍스트들을 복사해서 .gitignore 파일(생성해야함) 에 붙여 넣어줍니다.

그리고 우리는 secrets.json 파일도 원격저장소에는 올리지 않을 것이므로 secrets.json한줄 더 추가해줍니다!



요기 까직 작업했다면 원격저장소에 업로드 해봅시다!! 

(원격저장소 업로드 방법은 현재 포스팅 주제에 벗어나기 때문에 생략합니다.)

저는 github에 프로젝트를 업로드하였고 우리가 저장해놨던 settings.json 파일이 제외된 상태로 업로드 된것을 확인할 수 있습니다.!



tutorial/settings.py 에서도 우리의 SECRET_KEY 정보를 찾을 수 없습니다!

이처럼 모든 프로젝트를 원격 저장소에 업로드할 때는 기본적으로 SECRET_KEY는 분리하여 업로드 하는것을 습관화 합시다!



다음 포스팅에서는 tutorial/settings.py를 배포상태별로 나누어 관리하고, 서버를 실행할때도 각각 다른 환경에서 실행하는 방법을 포스팅해보겠습니다.


감사합니다.!!

728x90
반응형

'Server > Django' 카테고리의 다른 글

[장고 AtoZ] Django REST Framewrok - ViewSet  (0) 2018.02.06
[장고 AtoZ] settings.py 파일 분할  (0) 2018.02.05
[장고 AtoZ] Django 서버 실행  (0) 2018.02.02
[장고 AtoZ] pyenv, virtualenv  (0) 2018.02.02
[장고 AtoZ] homebrew  (0) 2018.02.02
Comments