Project

General

Profile

Actions

결함 #506

closed

[보안][P0] 백오피스 DB 자격증명 하드코딩 제거 (db.py → 환경변수)

Added by joungmin ko about 2 months ago. Updated about 2 months ago.

Status:
완료
Priority:
긴급
Assignee:
-
Start date:
06/27/2026
Due date:
% Done:

100%

Estimated time:

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 등록]

Actions #1

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 조치]

Actions #2

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 조치]

Actions #3

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 종료]

Actions

Also available in: Atom PDF