Track 5 의 PIN layer 가 놀랍게 많은 솔로 앱한테 정답이야 — 걸린 게 적은 데이터, 사용자 한 명, 네트워크 perimeter 는 이미 있음. 근데 threat model 은 시간이 지나면 움직이고, auth 도 따라 움직여야 해.
Trigger 조건
| Trigger | 변한 것 | 추가 |
|---|---|---|
| 두 번째 사용자 추가 (파트너, 친구, 가족) | 이제 누가 했는지가 중요해지는데, PIN 을 공유하면 그게 무너짐 | Per-user identity (passkey 또는 magic link) |
| Tailscale 외부에 앱 노출 | perimeter 가 사라지고 PIN 이 유일한 게이트가 됨 | 2FA + reverse-proxy WAF + 더 긴 PIN 의무화 |
| 데이터가 민감해짐 | 건강, 재무, 업무 시크릿, NDA 자료 | 하드웨어 키, at-rest 암호화 데이터, audit 로그 보존 |
| 유료 사용자 추가 | 컴플라이언스 들어옴 | 진짜 IdP (Auth0, Clerk, Supabase Auth) |
| 반복되는 brute-force baseline 도달 | 공격자가 네 발견했고 신경 씀 | Edge 에서 rate-limit, reCAPTCHA / Turnstile, geo-block |
| 모바일 앱 추가 | 쿠키 기반 session 모델은 브라우저용이지 native 앱용이 아님 | OAuth2 device flow, refresh 토큰, native biometric |
안 변하는 것
업그레이드를 하더라도 솔로 개발자용 session 을 위해 PIN layer 는 남겨둬. defense in depth 는 네트워크 perimeter 와 per-user identity 와 애플리케이션 레벨 게이트가 함께 사는 거야. "더 좋은 게 생겼으니까" 하면서 layer 를 걷어내는 것 — 현장에서 제일 흔한 downgrade 패턴이 이거야.