피드로 돌아가기
Dev.toBackend
원문 읽기
Environment Split 설계를 통한 Production 보안 사고 원천 차단
Stop Putting Everything in settings.py
AI 요약
Context
단일 settings.py 파일 내 조건문 기반 환경 분리로 인한 설정 혼선 및 SECRET_KEY 유출 위험 상존. 환경별 설정값이 Version Control에 포함되어 보안 취약점 및 휴먼 에러 가능성이 높은 구조적 한계 노출.
Technical Solution
- config/settings/ 디렉토리 하위에 base, local, production, test 4개 파일로 책임 분리하는 구조 설계
- base.py에 공통 설정 및 django-environ을 통한 환경 변수 주입 로직을 구현하여 코드와 설정의 완전 분리
- local.py에서 DEBUG=True 및 SQLite 등 개발 편의성을 위한 Override 설정 적용
- production.py에서 HTTPS 강제화 및 S3 저장소, Structured Logging 등 고가용성/보안 설정 전담
- .env.example 파일을 통한 필수 환경 변수 명세화 및 .gitignore 설정을 통한 Secret 유출 방지
- python manage.py check --deploy 명령어를 CI 파이프라인에 통합하여 배포 전 보안 설정 자동 검증
실천 포인트
1. settings.py를 4개 파일(base, local, production, test)로 분리했는가
2. 모든 Secret 및 Credential이 .env 파일과 환경 변수를 통해 주입되는가
3. .env.example 파일을 통해 팀 내 환경 변수 명세가 공유되고 있는가
4. CI/CD 파이프라인에 check --deploy 단계가 포함되어 설정 오류를 사전 차단하는가
5. Git History에 유출된 SECRET_KEY가 있는지 확인하고 필요 시 Rotate를 수행했는가