마지막 레슨, 큰 그림. 이 퀘스트의 모든 조각이 진짜 솔로 개발자 stack 어디에 있는지.
Layered stack (외부 → 내부)
| Layer | 하는 일 | 퀘스트 참조 |
|---|---|---|
| 1. 네트워크 perimeter | Listening 포트 도달 가능한 사람 제한 | Track 3 (bind 주소), Track 4 (Tailscale) |
| 2. Edge 방어 | WAF, fail2ban, rate limit, geo-block | Track 6 (rate limit, blacklist) |
| 3. Per-request auth 게이트 | PIN middleware (또는 passkey, 또는 OAuth) | Track 5 (PIN), Track 10 (passkey/OAuth) |
| 4. Session 관리 | 쿠키, 만료, revocation | Track 5 + Track 7 (killswitch) |
| 5. Authorization 체크 | "이 인증된 사용자가 이거 할 수 있음" | Track 2 (AuthN vs AuthZ) |
| 6. Data-at-rest 암호화 | 1–5 다 실패하면 방어 | Track 10 (이 레슨) |
| 7. 가시성 & 응답 | 대시보드, audit, killswitch | Track 8, Track 7 |
| 8. 시크릿 위생 | LLM 과 repo 에서 자격증명 멀리 | Track 9 |
너한테 맞는 subset
모든 layer 필요 없어. Threat model 에 맞는 layer 필요해:
- 솔로-내부 앱, Tailscale, 낮은 stake: Layer 1, 3 (PIN), 4, 7. 나머지 skip.
- 파트너와 공유하는 솔로: Layer 5 (per-user authZ), layer 8 (다 placeholder 사용) 추가.
- Public 인터넷 노출: Layer 2 (WAF, rate limit) 추가, layer 3 업그레이드 (passkey), layer 6 (민감 field 암호화).
- 유료 사용자: Layer 3 → hosted IdP, layer 7 → 진짜 audit 보존, 공식 incident response runbook.
이제 네가 아는 것
- "내가 뭐라고" 가 위험한 마인드셋인 이유.
- 인증과 authorization 의 정확한 차이.
0.0.0.0이 config 에서 가장 결과 큰 줄인 이유.- Tailscale 의 강점과 분실 폰 윈도우.
- 실제로 방어 가능한 100줄 PIN layer 빌드 법.
- bcrypt + lockout 이 4자리 PIN 을 인터넷 접촉 후에도 살아남게 하는 이유.
- 중요할 때 15초에 모든 거 revoke 하는 법.
- 실제로 볼 대시보드로 보안을 보이게 하는 법.
- AI 에디터가 dev loop 의 가장 큰 시크릿 누출 surface 인 이유.
- PIN 으로 부족해지는 순간과 다음에 추가할 거.