배포 직전에 멈췄다 —
주민번호가 '맨몸'으로 있었다
시스템을 다 만들고, 이제 실제 서버에 올리기(배포) 직전이었어요. 저는 올리기 전에 항상 한 번 점검을 돌리는데 — 그때 발을 멈추게 한 게 하나 걸렸습니다. 차주(車主)의 주민번호가, '맨몸'으로 누워 있었어요.
중고차를 수출하려면 차주의 주민번호가 들어가는 서류(말소·등록·양도 관련)가 필요해요. 문제는 그 주민번호가 시스템에 담긴 방식이었습니다.
- '맨몸'으로 저장돼 있었어요 — 누구나 보면 바로 읽히는 평범한 글자 그대로요(이걸 '평문'이라고 해요). 잠겨 있지 않았죠.
- 그 서류를 받는 화면에 잠금이 없었어요 — 정해진 주소(URL)만 알면, 결재 없이도 주민번호가 박힌 서류를 받을 수 있는 상태였습니다.
저는 배포 전에 AI 팀에게 여러 역할로 나눠 점검을 시키는데(이 방법은 다음 편들에서 자세히), 그 점검에서 이게 걸렸어요. 다행히 — 아직 실제 서버에 올리기 전이었습니다.
비밀번호는 새어 나가도 바꾸면 돼요. 그런데 주민번호는 평생 못 바꿉니다. 한 번 새면, 되돌릴 방법이 없어요.
그래서 이런 정보(주민번호·계좌처럼 평생 따라다니는 식별 정보)는 그냥 두면 안 되고, 잠가서(암호화) 안전하게 보관하도록 정해져 있어요. "맨몸 저장 + 아무나 접근"은, 사고가 나면 돌이킬 수 없는 조합이었던 거예요. 그래서 배포 전에 반드시 바로잡아야 했습니다.
한 군데만 막아선 부족했어요. 세 겹으로 둘렀습니다.
- ① 암호화 — 금고에 넣기. 저장 자체를 잠가서, 설령 데이터베이스가 통째로 새어 나가도 그 안의 주민번호는 못 읽게 했어요.
- ② 권한 + 감사 로그 — 누가 받아갔는지 기록. 서류를 받을 때마다 "누가, 언제, 무엇을" 전부 기록으로 남겼어요. (여기서 사람의 결정이 하나 있었는데, 뒤에서 다룰게요.)
- ③ 채널 격리 — 쓸 곳에서만. 수출용 영문 서류는 수출 건에서만 나오도록 막아, 엉뚱한 데서 새지 않게 했어요.
그런데 암호화엔 무서운 함정이 있어요. 암호화는 금고예요. 그리고 그 금고를 여는 열쇠가 딱 하나 있습니다(시스템의 마스터 키).
그래서 안전장치를 따로 뒀어요.
- 열쇠를 별도의 안전한 곳에 백업 — 배포·이전 과정에서 절대 안 바뀌게.
- 잠그기 전 원본을 통째로 백업해 격리 — 최악의 경우를 위한 마지막 보루.
"암호화했으니 안전하다"가 끝이 아니라, "그 열쇠를 잃지 않을 장치까지" 있어야 진짜 안전이었어요.
민감한 개인정보를 시스템에 담을 때, 배포 전에 제가 짚는 기준이에요.
이번 편엔 진짜 충돌이 있었어요. 그리고 그게 사고를 막았습니다.
🤝 보안 vs 현장 — 그리고 사람의 새 길
핵심 한 줄 요약 — 개인정보 보안 편
Tags
'비개발자의 개발 일지_Episode' 카테고리의 다른 글
| 시즌2 5편 — AI를 여섯으로 쪼개, 회의를 시켰다 (0) | 2026.06.23 |
|---|---|
| 시즌2 4편 — 승인하는 사람과, 돈을 실제로 만지는 사람을 갈랐다 (0) | 2026.06.22 |
| 시즌2 2편 — 회사는 카톡과 엑셀, '한 사람의 손'으로 굴러가고 있었다 (0) | 2026.06.19 |
| 시즌2 1편 — 머릿속으로만 그리던 CRM이, 수출 현장에서 진짜가 됐다 (0) | 2026.06.16 |
| 7편(시즌1 피날레) — 도입 한 번 못 해본 CRM이, 내 인생을 바꿨다 (0) | 2026.06.16 |
왕진 블로그

댓글