개인정보는 넘기지 않는 것이 답

무엇을 가릴지보다 무엇을 남길지

작은 조직 AI·서버 보안 기본기의 다섯째 갈래입니다. 조합원 명부나 환자 자료를 다루는 업무에 AI를 붙이면 개인정보가 어디까지 흘러가도 되는지 매번 판단해야 합니다. 바깥 AI로 흘린 사례와 조직 안에서 지나치게 막은 사례를 함께 놓았습니다.

1. 가림 정규식은 결국 놓친다

한 의료사협의 업무 자동화를 조사하던 날, 환자 이름이 세 번 바깥 AI의 대화 맥락으로 넘어왔습니다. 현장 기록에 따르면 그 세 번은 이랬습니다.

  1. 저장 대화상자만 잘라 캡처했는데, 창 테두리 여백 때문에 그 아래 표의 데이터 한 줄이 딸려 왔습니다.
  2. 엑셀 파일의 칸 이름을 확인하는 스크립트가 머리 행만이 아니라 그 아래 데이터 행까지 출력했고, 가림 처리는 주민등록번호 꼴만 가리고 있었습니다.
  3. 파일 이름에서 사람 이름을 가리는 정규식이 「이름 뒤에 무엇이 오는가」라는 조건을 달고 있었는데, 그 경계를 놓쳐 이름 여섯 건이 그대로 나왔습니다.

따라 하기

  • 바깥으로 가져오는 것은 건수, 머리 행의 칸 이름, 문장의 틀뿐입니다. 데이터 행과 전체 화면 캡처는 가져오지 않습니다.
  • 가릴 때는 조건을 달지 않고 두 글자에서 네 글자 사이의 한글은 전부, 숫자도 전부 가립니다.
  • 스크립트를 돌리기 전에 출력할 줄을 먼저 정하고, 그 밖의 줄은 길이만 셉니다.

더 나은 길은 가릴 것을 고르는 대신 남길 것을 정하는 것입니다. 같은 현장의 기록에 따르면 진료 소견서를 가명화할 때 이 방식을 썼고, 그쪽이 맞았습니다. 정해 둔 고정 라벨, 특정 표지로 시작하는 줄, 일정 길이 이상이면서 소견 어휘가 들어 있는 줄만 남기고 나머지는 모두 버렸습니다. 바깥으로 내보내는 유형집에는 여러 문서에서 되풀이된 문장 틀만 실었습니다. 한 문서에만 나오는 문장은 그 자체로 특정인을 가리킬 수 있기 때문입니다.

2. 그렇다고 조직 안에서 지나치게 막지 않는다

품앗이는 의사의 업무를 돕는 AI 비서와 의사 사이에는 환자 이름과 검사 수치가 충분히 흘러야 한다고 봅니다. 그것이 의사가 하는 일이기 때문입니다. 진료실 PC나 조합 서버처럼 조합의 기계 안에서는 자유롭게 오가도 됩니다.

막아야 할 경계는 조직 밖으로 나가는 지점입니다. 바깥 AI 서비스의 대화 맥락으로 끌어오는 것이 그 지점입니다. 「개인정보 때문에」를 이유로 조직 안의 업무 흐름에 관문을 세우면, 일은 느려지고 정작 바깥으로 새는 길은 그대로 남습니다.

3. 선언으로 막다가 세 번 흘렸다

「이 정보는 저장소에 넣지 마라」라고 적어 둔 뒤에, 같은 정보를 인수인계 문서와 작업 의도 기록에 두 번 더 적어 올렸다는 사고 기록이 있습니다. 흘린 정보는 생년월일을 거꾸로 짐작할 수 있는 개인정보였습니다. 기록을 보면 검사가 작성자의 기억에만 걸려 있었고, 바쁠 때 가장 먼저 빠졌습니다.

그래서 저장소마다 커밋 전에 도는 검사 훅을 설치하고 차단, 통과, 우회를 시험했습니다. 그런데 실제로 커밋할 때 쓰는 정리 스크립트는 그 훅을 거치지 않는 버그가 있었고, 그 경로로 올린 파일이 그대로 통과했고, 훅을 다시 고친 뒤에야 막혔습니다.

「막힌다」는 실제로 쓰는 경로로 시험해야 합니다. 손으로 한 번 커밋해 보고 막혔다고 끝내면, 평소에 쓰는 자동 경로는 여전히 열려 있을 수 있습니다.

같은 사고가 두 번이 되면 그때부터는 기록을 더하지 않고 구조를 고칩니다.

관련 노드