✅ Django SECRET_KEY를 안전하게 설정하는 방법

2025. 5. 13. 17:38·기술블로그-Django편

✅ Django SECRET_KEY를 안전하게 설정하는 방법


📌 목적

Django에서 보안에 중요한 SECRET_KEY를 외부 파일에서 안전하게 불러오는 코드를 완전히 이해하기!


1️⃣ 기본 코드 구조

BASE_DIR = Path(__file__).resolve().parent.parent

with open(BASE_DIR / '.config_secret' / 'secret.json') as f:
    config_secret_str = f.read()

SECRET = json.loads(config_secret_str)
SECRET_KEY = SECRET['DJANGO_SECRET_KEY']

2️⃣ 한 줄씩 상세 설명

🔹 BASE_DIR = Path(__file__).resolve().parent.parent

  • 현재 settings.py 파일의 경로를 기준으로 프로젝트 최상위 폴더 경로를 지정
  • 예시: /Users/username/myproject/config/settings.py → /Users/username/myproject

🔹 with open(BASE_DIR / '.config_secret' / 'secret.json') as f:

  • .config_secret/secret.json 파일을 연다
  • Path를 / 연산자로 이어 붙이면 자동으로 경로가 연결됨
  • 안전하게 파일을 열고 닫는 방식 (with문 사용)

🔹 config_secret_str = f.read()

  • 파일 내용을 한 번에 문자열로 읽음

🔹 SECRET = json.loads(config_secret_str)

  • JSON 형식의 문자열을 파이썬 딕셔너리로 변환
  • 예시:
{
  "DJANGO_SECRET_KEY": "abc123xyz987!!"
}

🔹 SECRET_KEY = SECRET['DJANGO_SECRET_KEY']

  • 위 딕셔너리에서 키 값 꺼내서 Django에 설정값으로 전달

3️⃣ 시뮬레이션 예제

secret.json 파일 내용:

{
  "DJANGO_SECRET_KEY": "1234abcd!@#$_secret_key_5678"
}

결과적으로 settings.py는 이렇게 동작함:

SECRET_KEY = "1234abcd!@#$_secret_key_5678"

4️⃣ 보안 팁 & 주의사항

항목 설명

secret.json은 .gitignore에 추가 필수 깃허브에 올리면 절대 안 됨!
JSON 문법 오류 주의 콤마 누락, 따옴표 오류 등 실수 잦음
파일 경로 정확히 확인 BASE_DIR 기준으로 .config_secret/secret.json 위치 필수

✅ 정리 요약

키워드 의미

Path(__file__).resolve().parent.parent 프로젝트 루트 경로 찾기
with open(...) 파일 열기 블럭
json.loads() 문자열 → 딕셔너리 변환
SECRET['DJANGO_SECRET_KEY'] 딕셔너리에서 보안 키 추출

📦 보너스: .env 방식으로도 가능!

원하면 다음과 같이 .env 파일과 python-dotenv를 써서 더 깔끔하게 처리할 수도 있음.
필요하면 다음 포스팅에서 다뤄볼게요 😎

'기술블로그-Django편' 카테고리의 다른 글

🔗 HTTP 메서드 + URL + request body 구조 정보 정리 (REST API 기반)  (0) 2025.05.14
✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지?  (0) 2025.05.13
✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명  (0) 2025.05.13
🔐 Django 비밀번호 암호화와 검증 완전 정리  (0) 2025.05.13
🧠 Django ORM 객체 생성과 저장의 차이 완전 정리!  (0) 2025.05.13
'기술블로그-Django편' 카테고리의 다른 글
  • 🔗 HTTP 메서드 + URL + request body 구조 정보 정리 (REST API 기반)
  • ✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지?
  • ✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명
  • 🔐 Django 비밀번호 암호화와 검증 완전 정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (797)
      • Python (32)
      • 프로젝트 (114)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    titaniumcase
    뷔
    travel ban
    urbantrends
    bts
    chinanightlife
    americaparty
    btsreunion
    youngprofessionals
    btsdischarge
    self-growth
    chatgpterror
    remittance
    RM
    homebartrend
    classaction
    livebroadcast
    btsjungkook
    smartphonedurability
    hotcoffeecase
    college reunions
    global politics
    lawsuitculture
    gpterror
    btscomeback
    life reflection
    americanlaw
    newpoliticalparty
    trumpmuskclash
    basalcellcarcinoma
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
✅ Django SECRET_KEY를 안전하게 설정하는 방법
상단으로

티스토리툴바