장고 SECRET_KEY : SECRET_KEY란, 비밀 정보 숨기기

들어가며

장고에서 프로젝트를 시작하고 바로 github에 올리면 정말 큰일 난다고 합니다. 이는 SECRET_KEY가 공개되면 안되기 때문인데요. “장고 SECRET_KEY”란 무엇이며, 어떻게 숨겨서 github에 올릴 수 있는지 정리해보았습니다.

장고 SECRET_KEY 란

Django에서 ‘SECRET_KEY‘는 고유 토큰 생성, 쿠키 서명, 암호화 알고리즘 보안 등 다양한 보안 목적으로 사용되는 암호화 키라고 합니다.

이는 민감한 정보를 보호하고 Django 애플리케이션 내 암호화 작업의 무결성을 보장하는 비밀 암호 문구 역할을 해주는 거죠.

Django의 SECRET_KEY가 유출되거나 노출되면 공격자가 민감한 데이터를 해독하고, 사용자를 사칭하고, CSRF(교차 사이트 요청 위조) 공격을 포함한 다양한 유형의 공격을 실행할 수 있어 심각한 보안 위반이 발생할 수 있다고 하니 SECRET_KEY를 하드 코딩 그대로 외부로 공개되면 안되겠죠?

그러면 어떻게 코드에는 작동하면서 해당 값을 감출 수 있을까요?

여러 방법이 있지만 환경변수를 이용해서 감출 수 있습니다.

Config 구성하기

SECRET_KEY 값은 settings.py 파일에 존재하는데요. 만일 config 디렉토리가 없다면 아래의 명령어로 만들어 줍니다.

django-admin startproject config .

장고 SECRET_KEY 를 환경변수로 만들기

settings.py 파일을 열어보면 SECRET_KEY 변수가 보입니다.

SECRET_KEY를 코드에 보이지 않도록 환경 변수로 만들어 줄 겁니다.

SECRET_KEY 부분을 복사해줍니다.

프로젝트 디렉토리에 환경변수 파일을 .env 이름으로 만들어주고 여기에 SECRET_KEY 변수를 복사해줍니다.

이제 다시 settings.py 의 SECRET_KEY 변수의 값을 아래와 같이 변경합니다.
(위에 import os도 추가해줍니다.)

SECRET_KEY = os.environ.get('SECRET_KEY')

환경 변수 가져오기

앞에서 만든 .env 파일에 명시한 변수가 환경 변수가 되는데요. 이를 읽을 수 있게 manage.py 파일에서 추가 처리를 해줘야 합니다.

manage.py 파일에 dotenv 라이브러리를 import하고요.

dotenv는 기본 라이브러리가 아니기 때문에 설치가 안 되어 있다면 아래 명령어로 설치를 해줍니다.

pip install django-dotenv

if __name__ == '__main__'코드의 아랫줄에 dotenv.read_dotenv() 함수를 호출합니다.

마치며

이전에 ODBC 을 연결하는 코드에서 DB 비밀번호를 적지 않기 위해 pickle 파일을 만들어서 해당 파일에 비밀번호를 따로 입력하고 해당 값을 가져오도록 한 적이 있는데요.

장고에서는 그것보다 간편한 방법으로 민감한 정보를 환경변수로 만들고 관리할 수 있게 해줘서 편리한 것 같습니다.

SECRET_KEY 외에도 추가로 민감한 정보가 있다면 .env 파일에 환경 변수를 추가해서 사용해봐야겠습니다.

참고하면 좋은 글

Leave a Comment

목차