# InsuWiki 배포 후속 — 보안 CRITICAL + 기술 부채 5건

## 한정승인

## 작업 목표
task-1683.1 Firebase 배포 후 발견된 미해결 6건 처리

## 우선순위 순서

### 1. 🚨 [CRITICAL] 서비스 계정 Private Key git 추적
- `temp.j2h/` 디렉토리에 GCP 서비스 계정 키 2개가 git에 추적 중
- **즉시 조치**:
  1. `.gitignore`에 `temp.j2h/` 추가
  2. `git rm --cached temp.j2h/` (파일은 유지, git 추적만 해제)
  3. GCP Console에서 해당 서비스 계정 키 비활성화/삭제
  4. 새 키 재발급 (필요 시)
- **git history 정리**: BFG Repo-Cleaner 또는 git filter-repo로 히스토리에서 키 파일 제거
  - 주의: 파괴적 작업 — 모든 worktree 정리 후 실행
  - 실행 전 전체 백업 필수

### 2. [MEDIUM] backfillClaims CF vs Script 불일치
- Cloud Function의 invalid role 처리 + Auth-only 유저 처리 로직을 Script 수준으로 통일
- Script 구현이 더 안전하므로 CF를 Script 기준으로 수정

### 3. [MEDIUM] Node.js 20 → 22 업그레이드
- 2026-04-30 지원 종료 예정
- `/home/jay/projects/insuwiki/functions/package.json`의 engines.node 수정
- Cloud Functions 런타임 업그레이드
- breaking changes 확인 + 테스트

### 4. [MEDIUM] npm audit 취약점 19건
- nextapp 의존성: 8 low / 3 moderate / 8 high
- `cd nextapp && npm audit fix` 실행
- fix 불가능한 것은 `npm audit` 결과 기록

### 5. [LOW] firestore.rules hasClaimRole 미사용 함수
- dead code 제거 또는 실제 Rules에 활용

### 6. [INFO] Vercel 프론트엔드 배포 설정
- 현재 빌드 성공, 배포 대상 미구성
- Vercel 연동 또는 자체 호스팅 결정 필요 (제이회장님 판단)

## 참조 파일
- InsuWiki: `/home/jay/projects/insuwiki/`
- task-1683.1 보고서: `/home/jay/workspace/memory/reports/task-1683.1.md`
- .gitignore: `/home/jay/projects/insuwiki/.gitignore`
- firestore.rules: `/home/jay/projects/insuwiki/firestore.rules`
- functions/package.json: `/home/jay/projects/insuwiki/functions/package.json`

## 테스트
1. `git status` → temp.j2h/ 추적 해제 확인
2. GCP Console → 키 비활성화 확인
3. `npm audit` → 취약점 감소 확인
4. Cloud Functions 배포 → Node.js 22 정상 동작
5. 기존 테스트 회귀 없음

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
