nullvuild

Bloger @nullvuild

Created Date '2025/03/09 오후 05:39

Modified Date '2025/03/22 오후 05:00

#Django #SECRET_KEY #분리

Django 프로젝트를 생성하면 보안 키(SECRET_KEY), 데이터베이스 비밀번호 정보가 settings.py에 직접 작성되어 있다. 하지만 보안상 위험하므로, 별도의 secret.json 파일로 분리하는 것이 좋다. 이번 글에서는 settings.py에서 직접 설정한 값을 제거하고, secret.json을 통해 안전하게 관리하는 방법을 설명한다.


1. 기존 settings.py에서 보안 정보 제거

기본적으로 settings.py에는 다음과 같은 코드가 있다.


SECRET_KEY = 'your-secret-key-here'

...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'your-database-password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

이처럼 SECRET_KEYDATABASES의 비밀번호가 직접 코드에 포함되어 있으면, 버전 관리(Git)에서 유출될 위험이 있다.

따라서, 이를 별도의 파일로 분리하는 것이 좋다.


2. secret.json 파일 생성


프로젝트의 settings.py가 위치한 폴더에 secret.json 파일을 만든다.


my_project/
│── my_project/
│   │── settings.py
│   │── secret.json  ← 새로 생성
│── manage.py

secret.json 내용

secret.json 파일을 열고 다음과 같이 작성한다.


{
    "SECRET_KEY": "your-secret-key-here",
    "DATABASE_NAME": "mydatabase",
    "DATABASE_USER": "myuser",
    "DATABASE_PASSWORD": "your-database-password",
    "DATABASE_HOST": "localhost",
    "DATABASE_PORT": "5432"
}

3. settings.py에서 secret.json 불러오기

이제 settings.py에서 secret.json을 불러와 사용하도록 수정한다.


json 모듈을 사용하여 보안 정보 로드

import os
import json

# secret.json 파일 경로 설정
SECRET_FILE = os.path.join(os.path.dirname(__file__), 'secret.json')

# JSON 파일 로드
with open(SECRET_FILE) as f:
    secrets = json.load(f)

# 보안 정보 적용
SECRET_KEY = secrets["SECRET_KEY"]
DEBUG = secrets["DEBUG"]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': secrets["DATABASE_NAME"],
        'USER': secrets["DATABASE_USER"],
        'PASSWORD': secrets["DATABASE_PASSWORD"],
        'HOST': secrets["DATABASE_HOST"],
        'PORT': secrets["DATABASE_PORT"],
    }
}

이제 SECRET_KEY, DATABASE_PASSWORD와 같은 중요한 정보가 코드에 직접 노출되지 않고, secret.json에서 안전하게 관리된다.


4. secret.json을 Git에서 제외

secret.json 파일이 Git에 포함되지 않도록 설정해야 한다.

.gitignore 파일을 열고 다음 내용을 추가한다.


# .gitignore에 추가
secret.json

이제 secret.json 파일은 Git에 커밋되지 않는다.


5. 정리

  • 기존 settings.py에서 SECRET_KEY 및 중요 정보를 제거
  • secret.json 또는 .env 파일을 생성하여 보안 정보 관리
  • settings.py에서 JSON을 불러와 설정
  • .gitignoresecret.json를 추가하여 Git에서 제외
Nullvuild

Nullvuild

@nullvuild

프로필