| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Git
- WebSocket
- REDIS
- vscode
- 알고리즘
- 미니프로젝트
- 정보처리기사실기
- WIL
- resnet50
- 프로그래머스
- 가상환경
- 백준
- Class
- 정보처리기사
- js
- 1주차
- channels
- poetry
- 장고
- github
- 개발일지
- sql
- Commpot
- 채팅
- 파이썬
- 프로젝트
- re-id
- WHERE절
- 마스킹
- 2주차
- Today
- Total
개발일기
Django SECRET_KEY 관리하기 본문
장고 시크릿키는 보안상을 위해서라도 공개되어서는 안 된다.
장고 시크릿키를 관리하는 방법은 다음과 같다..!!
< secrets.json 파일을 만들어 관리하기 >
STEP1. settings.py에 모듈 설치하기
import os, json
from django.core.exceptions import ImproperlyConfigured
STEP2. secrets.json 파일 만들기
secrets.json 파일을 만든 뒤에 거기에
{
"SECRET_KEY":"시크릿키"
}
이렇게 시크릿키를 저장한다.
STEP3. settings.py에 다음 코드들을 입력하기
# SECURITY WARNING: keep the secret key used in production secret!
secret_file = os.path.join(BASE_DIR, 'secrets.json')
with open(secret_file) as f:
secrets = json.loads(f.read())
def get_secret(setting, secrets=secrets):
"""비밀 변수를 가져오거나 명시적 예외를 반환한다."""
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = get_secret("SECRET_KEY")
secrets.json 파일을 열어서 그 값을 읽은 후에, get_secret(setting, secrets = secrets) 함수를 통해 변수를 읽거나 예외를 가지고 온다.
SECRET_KEY = get_secret("SECRET_KEY")
secrets.json에서 "SECRET_KEY" 라는 키 값을 읽어오도록 하는 것이다.
error_msg는 ImproperlyConfigured 예외를 발생시키기 전에 생성된 문자열로,
error_msg는 설정(setting)을 인자로 받아 해당 설정에 대한 환경 변수가 설정되지 않았음을 알려주는 메시지를 생성한다.
raise ImproperlyConfigured(error_msg)는 ImproperlyConfigured 예외를 발생시키는 코드이다.
raise 키워드를 사용하여 예외를 명시적으로 발생시킬 수 있고, 예외가 발생하면 프로그램의 실행 흐름이 중단되고 해당 예외를 처리할 수 있는 상위 코드 블록으로 이동한다.
ImproperlyConfigured는 일반적으로 프로그램의 설정이 부적절하거나 올바르게 구성되지 않았을 때 발생하는 예외이다. 예를 들어, 환경 변수가 설정되지 않았거나 잘못된 값으로 설정되었을 경우에 이 예외가 발생할 수 있다.
따라서 get_secret 함수는 setting을 키로 사용하여 secrets 사전에서 값을 찾으려고 시도하고, 값이 존재하지 않을 경우 KeyError 예외가 발생한다.
이때 ImproperlyConfigured 예외가 error_msg와 함께 발생하며, 이 예외는 setting에 대한 환경 변수가 설정되지 않았음을 나타내고, 예외를 처리하는 코드에서 이에 대한 적절한 조치를 취할 수 있다.
STEP4. gitignore에 secrets.json 추가하기
이로써 github에 시크릿키가 노출되는 것을 막을 수 있다.
또 다른 숨기고 싶은 정보가 있을 경우도, secrets.json에 추가해줌으로써 계속 숨길 수 있다.
예를 들어 이메일 인증 코드의 경우, 보안상 관리자계정의 이메일비번을 보이면 안 된다.
그럴 때,
# settings.py
EMAIL_HOST_PASSWORD = get_secret('mail_password')
#secrets.json
{
"mail_password":"이메일비번"
}
이런 식으로 get_secret 함수를 통해 숨길 수 있다.
'오늘의 공부일기 > 장고 공부일기' 카테고리의 다른 글
| media & static 파일 다루기 / (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting 해결하기 (0) | 2023.05.10 |
|---|---|
| 테스트코드 작성하기 (0) | 2023.05.02 |
| 장고심화 (0) | 2023.04.25 |
| 장고 심화 (0) | 2023.04.24 |
| #2 장고 __pycache__ 삭제하기 (0) | 2023.04.05 |