5.4 KB · 수정 2026-07-29 23:56
목차

2026-07-29 세션 — P0 보안 3결정 실행(인증 게이트·시크릿·응답 규약) 운영배포

지시

페페 결정 3건: 1. platform-auth = 추천대로(A+C) + 하위 2건(secret_key, 무솔트 해시)도 추천안으로 보안처리 2. ops-secrets = 비번은 그대로, git에 있는 관리자 비번 삭제·gitignore 관리로 수정, C 진행(8791) 3. platform-response-policy = B(헬퍼만 먼저, 파트별 점진 이관) → "테스트 배포 후 검증 진행 후 운영배포 진행한다."

1. 착수 전 사실 확인 (게이트를 잘못 걸면 클라이언트가 죽는다)

2. 구현

항목 내용
A1 인증 게이트 web/__init__.py before_request: 비로그인 /api/401 JSON. 화면은 종전대로 각 라우트 login_required 위임. 데몬 경로 2개만 X-PFS-Agent-Token 검증(hmac.compare_digest)
A2 secret_key 리터럴 제거 → PFS_SECRET_KEY env. 서버(test/live)인데 미설정이면 Log.error 로 드러냄
A3 비번 해시 hash_password(pbkdf2-sha256, 솔트 16B, 20만회) / verify_password(신·구 형식 모두) / needs_rehash. 로그인 성공 시 구형이면 조용히 승급. change_password 는 해시를 SQL WHERE 로 비교하던 것을 코드 검증으로 교체(pbkdf2 는 SQL 비교 불가)
B1 평문 비번 scripts/_db_config.py 로더 신설 → tracked 21파일(migrations 2 + scripts 19) 리터럴 제거. 값은 env → <repo>/.env(gitignore) → C:\dev\.secrets\pfs_db.env → EC2 env 순. 못 찾으면 예외
B2 8791 기본 바인딩 0.0.0.0127.0.0.1, /sync·/upload 전 경로에 토큰 요구(?t= 또는 헤더). 토큰 미설정이면 열지 않고 401
C 응답 예외 문자열화 방어(비-str __str__ 에서 에러 응답이 붕괴하던 것) + RestResponse.status 매핑 추가만. 호출부 49개는 그대로 200 → 이 커밋으로 동작 안 바뀜

3. 배포·검증

4. 배포 중 발견한 것 (회귀 아님)

5. 사고 — 검증이 운영 큐를 건드림 (원복 완료)

6. 남은 것