고전 보안 트라이어드. 솔로 개발자 대부분이 기본적으로 C ("새지 마") 신경 쓰고, 가끔 A ("크래시 나지 마") 생각하고, I ("아무도 데이터 조용히 안 바꿈") 는 거의 명시적으로 생각 안 해. 셋 다 이름을 불러주는 게 판단을 정직하게 만들어.
| 글자 | 속성 | 솔로 개발자 실패 | 방어 |
|---|---|---|---|
| Confidentiality | 승인된 눈만 데이터 봐 | 열린 admin, /static 에 굴러다니는 로그, repo 에 남은 .env | auth, HTTPS, 파일 권한, secret manager |
| Integrity | 데이터 변조 안 됨 | HTTP (S 없이) + 카페 = 끼어드는 JS, 그리고 SQL injection | HTTPS, parameterized query, signed 쿠키, hash |
| Availability | 필요할 때 서비스 쓸 수 있음 | 열린 Ollama 포트 = 누구나 VRAM DOS | rate limit, queue cap, backup, monitoring |
trade-off 는 진짜야
셋 다 공짜로 최대치를 낼 순 없어. 하나를 올리면 나머지 둘이 값을 치러.
- C 더 = A 비용 — 더 엄격한 auth = 더 많은 마찰, 가끔의 lockout (네가 자기 lockout 시키는 게 availability 실패).
- A 더 = C 비용 — "어디서나 항상 로그인" 은 체감 uptime 을 최대로 올리지만, 디바이스를 잃어버리는 순간 confidentiality 재앙이 돼.
- I 더 = A 비용 — 빡센 audit logging 은 write 를 느리게 하고, integrity check 는 read 를 느리게 해.
숨겨진 글자: Auditability
일부 실무자는 CIA 를 CIAA 로 늘려 써. 두 번째 A 가 auditability, *무슨 일이 있었는지* 알 수 있는 능력이야. 솔로 작업한테는 "내 폰 없어진 거 알아챔" 과 "어떤 session 과 IP 가 언제 active 였는지 증명 가능" 의 차이. Track 8 의 admin dashboard 가 auditability layer.