Django 비밀 키 분리

머리말



시리즈의 지난 편에 이어 비밀 키가 있는 별도의 Django 설정이 필요한 이유를 알아보겠습니다.



Django 프로젝트에는 SECRET_KEY 이 필요합니다. Django 프로젝트를 시작할 때에도 Django는 아래와 같은 SECRET_KEY를 제공합니다.

SECRET_KEY = 'django-insecure-yl7phg4*vdh@c22)%o%c99-4el7i+ku17gl458p$3q3@i-%)1r'

Django는 개발자에게 상기시키기 위해 "django-insecure-"와 함께 SECRET_KEY를 추가합니다.

그들은 왜 이것을 덧붙였습니까? 간단한 이유는 Django가 SECRET_KEY를 사용하여 브라우저와 공유되는 정보에 서명하기 때문입니다.



Django는 또한 이것으로 우리에게 경고합니다



이제 우리는 Django SECRET_KEY를 잘.. 비밀로 유지해야 한다는 것을 알고 있습니다. 프로젝트를 온라인 저장소에 커밋하면 SECRET_KEY가 노출된다는 것을 의미하지 않습니까?

이것이 메인 코드베이스에서 SECRET_KEY를 분리해야 하는 주된 이유입니다.

OS에서 환경 변수를 설정하는 등 고양이 가죽을 벗기는 방법은 더 있지만 동일한 서버에서 여러 웹 앱을 실행하는 경우 구현하기 어려울 수 있다고 생각했습니다. 여기서 공유하는 한 가지 방법은 python-decouple을 사용하는 것입니다.

설치



먼저 django 프로젝트에 라이브러리를 설치하겠습니다.

pipenv install python-decouple
pipenv lock -r >requirements.txt

python-decouple 설정



초보자 프로젝트의 경우 .env 파일에 추가해야 하는 항목이 3개뿐입니다.

DEBUG = True
SECRET_KEY = 'My_Secret_Key'
ALLOWED_HOSTS = "*"

이제 settings.py를 변경할 수 있습니다.

먼저 상단에서 python-decouple 라이브러리를 가져옵니다.

from decouple import config, Csv

다음에 대한 설정을 변경하십시오.

SECRET_KEY = config('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = config('DEBUG', cast=bool, default=False)

ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())

이제 비밀 키를 유지하기 위해 파일을 분리하는 방법이 있습니다.

.gitignore 업데이트



.env 파일을 공개 리포지토리 권한으로 커밋하는 경우 우리가 수행한 모든 작업은 아무 의미가 없습니다.

이제 .gitignore 파일에 다음을 추가하십시오.

.env

이제 우리는 공개 저장소에 .env를 커밋하지 않을 것입니다.

.env_sample 만들기



나는 .env_sample을 추가할 것을 제안합니다. 언젠가 누군가가 이 프로젝트를 포크하고 Django가 실행되지 않는 이유를 이해할 수 없을 것이기 때문입니다. 이름과 일부 매개 변수를 편집하면 Django가 제대로 실행될 수 있습니다.

추가 정보



안전한 SECRET_KEY를 만드는 것은 어렵습니다. 그런데 이 포스팅은 예전에





이렇게 하면 노출 가능성이 매우 낮은 새 SECRET_KEY를 안전하게 생성할 수 있습니다.



이제 설정에서 비밀을 분리할 수 있습니다. 이는 SECRET_KEY에만 적용되는 것이 아니라 타사 공급업체에 대한 API 인증 자격 증명 및 다른 서버 IP에 대한 것일 수도 있습니다.

좋은 웹페이지 즐겨찾기