From 4ca73f20e66de96e18e497323054480821b311ae Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Sat, 6 Dec 2025 12:50:06 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=AF=BC=EA=B0=90=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=ED=95=98=EB=93=9C=EC=BD=94=EB=94=A9=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존 JWT_SECRET_KEY 문서 확장 - 2025-12-06 민감 정보 기본값 전면 제거 작업 추가 - 원칙 문서 참조 명시 (311, AGENTS.md) - 다음 작업 시 원칙 준수 가이드 제공 --- .../251117_jwt_secret_key_mismatch_fix.md | 69 ++++++++++++------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/journey/troubleshooting/251117_jwt_secret_key_mismatch_fix.md b/journey/troubleshooting/251117_jwt_secret_key_mismatch_fix.md index 4abfbdd..0f3bc32 100644 --- a/journey/troubleshooting/251117_jwt_secret_key_mismatch_fix.md +++ b/journey/troubleshooting/251117_jwt_secret_key_mismatch_fix.md @@ -1,34 +1,51 @@ -# JWT Secret Key 불일치 문제 해결 +# 민감 정보 하드코딩 제거 -**날짜:** 2025-11-17 -**문제:** 프론트엔드 메시지 전송 401 에러, 관리자 페이지 API 401 에러 +**날짜:** 2025-11-17, 2025-12-06 +**작성자:** admin +**관련 파일:** 아래 수정 파일 목록 참조 -## 원인 +--- -1. **robeing-gateway**: docker-compose.yml에 잘못된 JWT_SECRET_KEY 하드코딩 -2. **admin-dashboard-backend**: 코드에 JWT_SECRET_KEY 하드코딩 +## 문제 상황 -## 해결 +### 2025-11-17: JWT Secret Key 불일치 +- 프론트엔드 메시지 전송 401 에러, 관리자 페이지 API 401 에러 +- robeing-gateway: docker-compose.yml에 잘못된 JWT_SECRET_KEY 하드코딩 +- admin-dashboard-backend: 코드에 JWT_SECRET_KEY 하드코딩 -### robeing-gateway -```yaml -# docker-compose.yml - 하드코딩 제거 -environment: - - JWT_SECRET_KEY=admin_secret_key_robeing_2025 # 삭제 -``` +### 2025-12-06: 민감 정보 기본값 전면 제거 +- 코드와 docker-compose.yml에 API 키, 토큰, 비밀번호 기본값 하드코딩 다수 발견 +- 환경변수 미설정 시에도 기본값으로 동작하여 보안 리스크 -### admin-dashboard-backend -```python -# admin_routes.py -SECRET_KEY = os.getenv("JWT_SECRET_KEY", "admin_secret_key_robeing_2025") -``` +## 해결 방안 -### docker-compose.yml -```yaml -environment: - - JWT_SECRET_KEY=9cc562b6296b87b02dd89045a2e7e11c249713a59a5ac0160d852121f1289664 -``` +### 2025-11-17 수정 +- robeing-gateway/docker-compose.yml: JWT_SECRET_KEY 하드코딩 제거 +- admin-dashboard-backend: JWT_SECRET_KEY 기본값 제거 -## 결과 -- 프론트엔드 메시지 전송 정상화 -- 관리자 페이지 API 정상 작동 +### 2025-12-06 수정 +- `rb8001/app/auth.py:10`: JWT_SECRET_KEY 기본값 제거, 환경변수 필수 검증 추가 +- `skill-slack/app/core/config.py:27-28`: SERVICE_API_KEY, JWT_SECRET_KEY를 Optional로 변경 +- `rb8001/app/commands/skill_commands.py:23`: SERVICE_API_KEY 기본값 제거 +- `rb8001/docker-compose.yml:33,62`: NEO4J_PASSWORD, TAVILY_API_KEY 하드코딩 제거, 환경변수 참조로 변경 +- `rb8001/tests/e2e_intent_improvement_experiment.py:59`: JWT_SECRET_KEY 기본값 제거 +- `skill-rag-file/app/core/config.py:16`: DATABASE_URL 기본값 제거 +- `skill-slack/docker-compose.yml:20-21`: SERVICE_API_KEY, JWT_SECRET_KEY 기본값 제거 + +## 원칙 문서 반영 + +- `DOCS/book/300_architecture/311_FastAPI_구조_원칙.md:207`: "코드에 API 키, 토큰, 비밀번호 등 민감 정보를 기본값/백업 값으로 직접 하드코딩" 금지 규칙 추가 +- `AGENTS.md:135`: "민감 정보 하드코딩 금지" 규칙 추가 + +## 교훈 + +### 민감 정보는 환경변수 필수 +- 코드나 docker-compose.yml에 기본값으로 하드코딩하면 Git에 노출될 수 있음 +- 환경변수 미설정 시 명확한 에러 메시지로 조기 발견 가능 +- 원칙: `311_FastAPI_구조_원칙.md` 섹션 12, `AGENTS.md` 설정 관리 섹션 참고 + +### 체크리스트 +- [ ] 코드에서 `os.getenv("KEY", "default-secret")` 패턴 확인 +- [ ] docker-compose.yml에서 `${KEY:-default-value}` 패턴 확인 +- [ ] config.py에서 민감 정보 기본값 확인 +- [ ] 환경변수 필수 검증 로직 추가