회사 계정 ChatGPT 정보유출 막는 점검 체크리스트 9가지
월요일 오전, 팀 채널에 고객사 견적서 PDF가 올라왔습니다. 붙은 말은 한 줄. "이거 ChatGPT로 요약 좀." 15초 뒤 그 파일은 브라우저 탭 안에 있었고, 어느 서버에 며칠 남는지 물은 사람은 없었죠.
이 글을 읽고 나면 회사 계정으로 쓰는 업무용 AI 도구에서 대화·첨부파일·API 키가 어디에 남는지 직접 확인하고, 30분 안에 통로 네 개를 잠글 수 있습니다. 자동화 파이프라인을 매일 돌리며 제가 쓰는 설정을 그대로 옮깁니다.
계기는 레딧 OpenAI 게시판 스레드였습니다. 업무용 계정에서 남의 데이터가 보인다는 제목이었는데, 본문은 못 읽었어요. 로그인 차단 403이 떴거든요. 진위를 따지는 대신 우리 팀 설정을 다시 뒤졌습니다.
회사 계정 ChatGPT에 넣은 대화는 어디까지 남나요?
흘러가는 길은 세 갈래입니다. 대화 로그, 첨부파일 저장소, 드라이브·메일 커넥터죠. 저장 위치도 삭제 시점도 따로 놉니다.
자주 오해하는 지점은 스위치가 하나가 아니라는 겁니다. 이름은 제품마다 달라도 보통 학습 사용 여부와 기록 보관 기간이 따로 있어요. 학습을 껐다고 보관까지 꺼지지 않습니다. 우리 팀도 학습은 꺼진 채 보관만 켜진 상태로 몇 달을 썼습니다.
플랜별 정책과 보관 일수는 공식 관리 콘솔에서 직접 확인하세요. 화면 문구가 자주 바뀌어서, 전언으로 판단하면 옛 설정을 사실로 굳히게 됩니다.
점검을 시작하기 전에 준비할 것
관리자 권한 계정 1개가 필요합니다. 일반 멤버 화면에는 데이터 설정 항목의 절반이 뜨지 않아요.
팀이 실제로 쓰는 도구 목록도 만드세요. 저는 도구명·계정 유형·결제 주체 3열로 적었고 12행이 나왔는데, 그중 4개는 존재조차 모르던 도구였어요.
시간은 30분이면 됩니다. 앞 15분은 콘솔, 뒤 15분은 코드 저장소에 씁니다.
1단계: 학습·보관 스위치를 눈으로 확인하기
관리자 콘솔에서 데이터 설정 화면을 열면 스위치 두 개가 한 번에 보입니다. 학습 사용 여부, 기록 보관 기간이죠. 확인하고 끝내지 말고 결과를 텍스트로 남기세요.
형식은 한 줄이면 충분해요. "도구명 / 학습 off / 보관 30일 / 확인 2026-08-26 / 확인자 이름" 이런 식입니다. 스크린샷은 나중에 어느 계정 화면이었는지 알 수 없어 증거로 약합니다.
12행을 이 형식으로 채우는 데 11분 걸렸습니다. 그러다 보관 기간이 무제한으로 열린 도구를 2개 찾아 30일로 내렸어요.
2단계: 첨부파일과 커넥터 권한 줄이기
커넥터를 드라이브 전체에 연결하면 그 계정이 볼 수 있는 폴더가 전부 대상이 됩니다. 저는 전용 폴더 하나만 공유하는 서비스 계정을 따로 팠어요. 연결 범위를 바꾸기 전 접근 가능 문서가 4,100개였고, 바꾼 뒤 37개로 줄었습니다.
첨부파일 삭제는 따로 확인하세요. 대화를 지워도 파일 목록에 원본이 남는 제품이 있습니다. 파일 관리 화면을 열어 개수를 세면 바로 드러나요.
3단계: API 키를 코드에서 떼어내기
우리 파이프라인은 크리덴셜을 저장소 안에 두지 않습니다. 실제 키는 ~/.secrets/ 아래에 두고, 나머지 환경변수는 .env 한 장으로 묶어요.
여기에 한 겹이 더 있습니다. 스크립트가 .env 를 스스로 읽지 않아요. node --env-file=.env 로 실행할 때만 값이 주입되죠. 그래서 엉뚱한 자리에서 돌리면 키가 안 붙고 그냥 실패합니다.
확인은 간단해요. 저장소에서 키 접두어를 훑어 결과가 0줄인지 보면 됩니다. 저는 백업 확장자까지 검색 범위에 넣어 뒀습니다.
4단계: 에이전트 도구를 화이트리스트로 묶기
에이전트에게 셸 전체를 열어주면 권한 경계가 사라집니다. 우리는 외부 시스템을 조사하는 에이전트에게 읽기 전용 게이트웨이 스크립트 하나만 허용해요. 허용 도구 옵션으로 강제하니 직접 접속·파일 쓰기·경로 이탈이 막힙니다.
파일 공개에도 같은 방식을 씁니다. 기본값은 거부이고 허용목록에 적힌 파일만 나갑니다. 나가기 직전 스캐너가 크리덴셜·거래처 식별자·개인 이메일 패턴을 훑어 하나라도 걸리면 중단해요.
지운 파일은 왜 다시 살아나나요?
가장 비싸게 배운 항목입니다. 저장소에서 파일을 지우고 커밋해도 과거 커밋에는 전문이 남아요. 해시와 경로를 아는 사람은 git show 한 줄로 원문을 되살립니다. 추적 해제는 현재 상태만 정리하거든요.
그래서 히스토리를 세탁하는 대신 아예 넘기지 않는 구조를 택했습니다. 공개용 저장소에는 스냅샷만 복사하고, 원본 저장소는 원격으로도 연결하지 않아요. AI 도구의 삭제 버튼도 성질이 같으니, 즉시 파기인지 며칠 후 삭제인지 문구를 읽고 기록해 두세요.
제가 놓쳤던 실수 세 가지
첫째, 개인 계정 혼용. 팀원 두 명이 개인 무료 계정으로 업무 문서를 넣고 있었어요. 관리자 콘솔에는 흔적이 0건이라 결제 내역을 뒤져서야 찾았습니다.
둘째, 조용한 실패를 성공으로 읽었습니다. 점검 스크립트가 명령을 못 찾아 종료코드 127로 끝났는데 로그에는 완료 문구만 남았죠. 사흘간 점검 통과로 알고 지냈어요.
셋째, 백업 파일. 확장자 .bak 하나에 옛 키가 살아 있었습니다. 정규 경로만 훑는 스캐너는 못 잡아요. 지금은 백업 확장자를 검색 대상에 넣고 종료코드를 확인합니다.
오늘 30분으로 시작하세요
콘솔을 열어 스위치 두 개를 확인하고, 결과를 한 줄씩 적는 것부터 하면 됩니다. 규정 문서는 그다음이에요. 무엇이 열려 있었는지 직접 세어 본 팀만 그 규정을 지킵니다.
자주 묻는 질문
Q. 개인 무료 계정과 회사 워크스페이스 계정은 뭐가 다른가요? A. 관리자 로그와 감사 기록이 붙느냐가 갈립니다. 개인 계정은 콘솔 목록에 뜨지 않아 사고가 나도 추적 시작점이 없어요.
Q. 로컬에서 오픈 모델을 돌리면 점검을 건너뛰어도 되나요? A. 대화는 밖으로 안 나가지만 로그와 벡터 인덱스가 평문으로 디스크에 남습니다. 저는 로그 보관을 7일로 자르고 백업 대상에서 뺐어요.
Q. 도구를 새로 도입할 때 점검 순서는 어떻게 잡나요? A. 결제 전에 커넥터 권한 범위부터 봅니다. 도입 후 축소는 이미 동기화된 문서를 되돌리지 못하니까요.