당신 유저들의 데이터는 당신 것이 아니다
대부분의 악은 선악을 고민조차 하지 않은 사람들에 의해 행해진다.
이 글에 등장하는 개발자와 서비스를 특정하려는 의도는 없다. 누군가를 지목하고 싶은 게 아니라, 이런 일이 일어났을 때 아무도 뭐라 하지 않았다는 게 더 신경 쓰였다. (좋은 의도로 직접 알려줬다가 좋지 않았던 경험이 있다. 그래서 시간 차를 두고 글로 쓴다.)
SNS에서 한 개발자의 게시물을 봤다. 뭔가를 자축하려고 올린 DB 스크린샷이었다. 사용자가 입력한 문장과 개인 노트가 평문으로 찍혀 있었다. 당혹스러워 하는 동안 좋아요가 찍혔다. 댓글로 지적하는 사람이 있나 지켜봤는데 몇 시간 뒤에도 없었다. 그 앱의 개인정보처리방침에는 사용자 콘텐츠를 수집한다고 명시되어 있다. 법적 고지는 한 셈이다. 하지만 수집한다고 고지한 것과, 개발자가 개별 사용자의 노트를 열람하는 것과, 그걸 SNS에 공개하는 것은 전부 다른 문제다.
그 앱에는 사용자가 개인적인 메모를 남길 수 있는 기능이 있었다. 개인 노트는 남의 서버에 평문으로 앉혀놓으면 안 되는 데이터다. 네이티브 앱이라면 iCloud나 Google Drive가 있고 (실시간 동기화의 안정성은 별개의 문제지만, 최소한 개발자가 들여다볼 수는 없다), 웹앱이라면 최소한 개발자 본인도 읽을 수 없게 암호화해야 한다. 서버 사이드 검색이 필요한 경우는 다르지만, 그래도 평문으로 앉혀놓을 이유는 없다.
전 직장에서는 프로덕션 DB에 쿼리 하나 치려면 승인이 필요했고 감사 로그가 남았다. 1인 개발자에게 그런 인프라는 현실적이지 않다. 그러니까 깊이 개인적인 데이터는 애초에 수집하지 않는 게 맞다. 필요 없으면 저장하지 말자.
요즘은 누구나 서비스를 만들 수 있다. 그건 좋은 일이다. 근데 코드를 짤 수 있게 됐다고, 데이터를 다루는 책임까지 쉬워지는 건 아니다. 아무도 안 보고 있으니까, 내가 내 서비스의 고객이라면? 그거 하나만 생각하자. 윤리라고 하면 너무 거창하다. 그냥 기본이다.
그 게시물을 처음 봤을 때 당혹스러운 것만은 아니었다. 화가 났다. 노트 한 줄이 문제가 아니라, 그걸 아무렇지 않게 올리는 태도가 더 크게 닿았다. 첫 직장이 블록체인 도메인이었다. 잘못하면 누군가의 자산이 날아가는 곳에서 3년을 보냈더니, 데이터를 가볍게 대하는 게 가볍게 안 보인다.
이 글의 초안을 r/webdev에 올렸을 때 좋은 댓글들이 많았다. 몇 개를 소개한다.
내가 만드는 건 뭐든 크레덴셜 처리에 집착한다. (…) 필요 없는 건 저장하지 말고, 저장해야 하면 본인도 못 읽게 암호화해라. (…) 제일 어려운 건 자기가 뭘 보장할 수 있고 없는지 솔직해지는 거다. 정책이 아니라 아키텍처가 강제해야만 진짜다. 약속보다 구조적 책임.
나는 모든 소프트웨어를 "우리는 당신의 데이터 관리자"라는 관점으로 접근한다. 아키텍처와 시스템은 우리 거지만, 데이터는 우리 것이 아니라 보호하는 것이다. (…) 고객 데이터 접근을 어렵게 만들어서 떠나지 못하게 하는 회사들도 있는데, 그럴 바엔 제품을 잘 만들어서 남을 이유를 줘라.
'노트를 수집합니다'라는 정책이 개별 항목을 열람하거나 게시해도 된다는 뜻은 아니다. 그건 여전히 개인 데이터 노출이고, 뭐가 보였고 누가 봤느냐에 따라 침해가 될 수 있다.