결함 #506
closed[보안][P0] 백오피스 DB 자격증명 하드코딩 제거 (db.py → 환경변수)
100%
Description
문제¶
backoffice/db.py에 DB 사용자/비밀번호/DSN이 소스에 하드코딩되어 있음 (DB_USER, DB_PASSWORD, DB_DSN, WALLET_DIR). 저장소에 평문 노출 위험.
영향¶
- DB 비밀번호가 코드/이력에 남음. 유출 시 ADB 전체 접근 가능.
조치¶
- 환경변수(또는 .env, 이미 .gitignore됨)로 이전:
DB_USER/DB_PASSWORD/DB_DSN/WALLET_DIR. - 코드는
os.environ에서 로드하고 기본값 제거. - 노출된 비밀번호는 ADB에서 로테이션 권장.
참고¶
역설계서: docs/design/503-backoffice/README.md §11 · ADR-0002. [AI 등록]
Updated by joungmin ko about 2 months ago
- Status changed from 신규 to 해결
- % Done changed from 0 to 80
코드 조치 완료 (커밋 33b7cc3): 하드코딩 제거 → backoffice/.env(gitignore) + 공용 env_loader.py 로 이전. DB 비밀번호는 env 필수화, Genius 키 없으면 graceful 우회. 백오피스 재기동·DB연결·import 검증 완료.
⚠️ 잔여: 기존에 노출된 키는 git 이력에 남아 있으므로 로테이션 필요. 로테이션 완료 시 본 이슈 완료(closed) 전환 권장. [AI 조치]
Updated by joungmin ko about 2 months ago
- % Done changed from 80 to 90
git 이력 스크럽 완료: filter-repo로 전체 이력(130커밋)에서 해당 시크릿 제거 → 옛 blob은 REMOVED 치환, 강제 푸시(33b7cc3→db7e5d9). 로컬 dangling/reflog/백업번들 정리.
추가 정리: scripts/ 하위 9개 파일의 DB 비밀번호 하드코딩도 env로 이전(커밋 6adf7ef→스크럽됨).
⚠️ 잔여(필수): ① 키 로테이션(이력 삭제≠무효화), ② Gitea 서버측 GC로 unreferenced 객체 제거(관리자), ③ 이미 clone/fork된 사본엔 잔존. 로테이션 완료 시 본 이슈 완료(closed) 전환 권장. [AI 조치]
Updated by joungmin ko about 2 months ago
- Status changed from 해결 to 완료
- % Done changed from 90 to 100
리스크 수용(Accepted Risk)으로 완료 처리. 비공개 레포 + 접근자 2명(본인 외 개발자 1명)으로 노출 위험 낮다고 판단. 코드/이력에서 시크릿 제거 및 env 이전은 완료된 상태. 키 로테이션·서버GC는 수행하지 않음(의도적). [AI 종료]