생성형 AI를 업무에 쓸 때 보안 문제는 넣은 데이터가 어디에 남는지, 받은 답을 검증 없이 쓰는지, AI에게 준 권한이 외부 입력과 섞이는지 세 곳에서 생깁니다. 개인 플랜은 학습 설정을 확인하되 학습을 꺼도 대화가 일정 기간 저장된다는 점을 알고 써야 하며, 회사 데이터는 학습에서 제외되는 업무용 플랜에서만 다룹니다. 받은 코드와 명령은 검토한 뒤 실행하고, 에이전트에는 필요한 최소 권한만 줍니다.
1. 입력한 데이터가 가는 곳
채팅 창에 붙여 넣은 내용은 답을 만드는 데만 쓰이고 사라지지 않습니다. 서비스는 대화를 기록으로 저장하고, 플랜과 설정에 따라 모델 학습이나 사람의 품질 검토에 쓰기도 하며, 학습에서 제외해도 악용 방지를 위해 일정 기간 보관합니다.

프롬프트는 답변 생성 외에 저장, 안전 목적 보관, 사람 검토, 학습으로 이어질 수 있습니다
세 서비스의 개인 플랜과 업무용 플랜에서 대화가 학습에 쓰이는지 비교하면 다음과 같습니다. 개인 플랜은 설정에 따라 대화가 학습에 쓰일 수 있고, 업무용 플랜은 기본적으로 학습에 쓰지 않습니다.
| 서비스 | 학습 사용 여부 |
| ChatGPT | 개인: 설정 > 데이터 제어의 Improve the model for everyone을 끄면 제외 업무용: Business, Enterprise, API는 기본 제외 |
| Gemini | 개인: Keep Activity가 켜져 있으면 학습과 사람 검토에 쓰일 수 있음 업무용: Workspace는 허락 없이 조직 밖 학습이나 사람 검토에 쓰지 않음 |
| Claude | 개인: 설정 > 개인정보 보호에서 모델 개선을 허용하면 사용 업무용: Claude for Work, API는 기본 제외 |
학습을 꺼도 남는 것
학습 제외 설정은 앞으로의 대화를 학습에 쓰지 않는다는 뜻이지 저장하지 않는다는 뜻이 아닙니다. 저는 다음 세 가지를 특히 주의합니다.
| 항목 | 내용 |
| 임시 채팅 | ChatGPT 임시 채팅은 안전 목적으로 최대 30일, Gemini는 Keep Activity를 끄거나 임시 채팅을 써도 72시간 보관 |
| 피드백 버튼 | 좋아요·싫어요를 누르면 관련 대화 전체가 전달됨. ChatGPT는 학습을 꺼도 학습에 쓰일 수 있고, Claude는 최대 5년 보관 |
| 사람 검토 | Gemini는 Keep Activity가 켜져 있으면 일부 대화를 사람이 검토하고, 검토된 대화는 계정과 분리해 최대 3년 보관 |
그래서 저는 학습 설정을 껐더라도 회사 기밀이나 고객 정보는 개인 계정에 넣지 않고, 민감한 내용이 담긴 대화에서는 피드백 버튼을 누르지 않습니다. 설정 이름과 위치는 서비스 개편에 따라 바뀌므로 각 서비스의 개인정보 도움말에서 다시 확인하는 것이 안전합니다.
2. 넣으면 안 되는 정보
업무용 플랜이라도 입력 전에 한 번 거르는 습관이 필요합니다. 대화 기록은 계정이 탈취되면 그대로 노출되고, 커넥터나 에이전트가 붙은 환경에서는 대화 내용이 다른 도구로 넘어갈 수 있기 때문입니다.
| 분류 | 예 | 대신 넣을 것 |
| 인증 정보 | 비밀번호, API 키, 토큰, kubeconfig | 값을 지운 변수 이름 |
| 개인정보 | 고객 이름, 연락처, 주민등록번호 | 가명, 샘플 데이터 |
| 내부 식별 정보 | 공인 IP, 호스트명, 계정 ID | x.x.x.x, app-01 |
| 기밀 문서 | 계약서, 미공개 실적 | 승인된 업무용 플랜에서만 |
설정 파일이나 스크립트를 통째로 붙여 넣기 전에는 비밀 값이 섞여 있는지 먼저 검색합니다. 아래 명령은 흔한 키 이름과 AWS 액세스 키, 개인 키 헤더를 찾습니다. 패턴에 없는 형식의 비밀 값은 걸리지 않으므로 결과가 없어도 눈으로 한 번 더 확인합니다.
# 붙여 넣기 전에 비밀 값이 있는지 확인 (GNU grep 기준)
grep -nEi \
-e '(password|passwd|secret|token|api_?key)[[:space:]]*[:=]' \
-e 'AKIA[0-9A-Z]{16}' \
-e '-----BEGIN [A-Z ]*PRIVATE KEY-----' \
app.env deploy.sh
로그에서 IP와 이메일, 토큰 값을 가리는 방법은 생성형 AI로 에러 로그 분석하는 프롬프트 정리에 정리해 두었습니다.
3. 받은 답을 그대로 쓰면 생기는 문제
생성형 AI는 그럴듯하지만 틀린 답을 만들 수 있고, OWASP는 이를 LLM09 Misinformation으로 분류해 안전하지 않은 코드 제안도 그 예로 듭니다. 동작 여부만 확인하고 넘어가면 오류를 없애려고 보안 설정을 끄는 답이 그대로 운영 환경에 들어가기 때문에, 저는 아래 항목이 보이면 적용 전에 대안을 먼저 찾습니다.
| 검토할 답 | 대신 쓸 방법 |
| curl -k, verify=False (인증서 검증 끄기) |
인증서 체인이나 CA 번들을 바로잡기 |
| chmod 777 | 필요한 사용자와 그룹에만 최소 권한 부여 |
| 22, 3389 포트를 0.0.0.0/0에 허용 |
관리 IP로 제한하거나 Bastion, VPN 경유 |
| privileged: true 컨테이너 |
필요한 capability만 추가 |
| 코드에 적힌 키와 비밀번호 |
환경 변수나 Key Vault 같은 비밀 저장소 |
존재하지 않는 패키지
코드 답변에는 실제로 없는 패키지 이름이 섞일 수 있습니다. OWASP는 공격자가 AI가 자주 지어내는 패키지 이름을 찾아 같은 이름으로 악성 패키지를 올려 두는 시나리오를 소개합니다. 그래서 저는 AI가 제안한 패키지를 설치하기 전에 저장소에 실제로 있는지, 언제 만들어졌는지, 소스 저장소가 어디인지 확인합니다.
# 없는 패키지면 E404, 최근에 만들어졌거나 저장소 정보가 없으면 한 번 더 확인
npm view <package> name version repository.url time.created
Python 패키지는 PyPI 프로젝트 페이지에서 릴리스 이력과 소스 저장소 링크를 같은 기준으로 확인합니다.
4. 에이전트와 커넥터의 간접 프롬프트 인젝션
요즘 생성형 AI는 웹 페이지를 읽고, 메일과 드라이브에 연결되고, 터미널 명령까지 실행합니다. 이때 AI가 읽는 외부 콘텐츠 안에 지시문이 숨어 있으면 모델이 그것을 사용자의 요청처럼 따를 수 있는데, OWASP는 이를 간접 프롬프트 인젝션(LLM01)으로 분류합니다. 흰 글씨나 HTML 주석처럼 사람 눈에는 보이지 않아도 모델은 읽는다는 점이 문제입니다.

외부 콘텐츠에 숨은 지시가 에이전트를 거쳐 도구 실행으로 이어지는 경로와 이를 줄이는 지점
OWASP도 RAG나 파인튜닝만으로는 프롬프트 인젝션을 완전히 막지 못한다고 설명하므로, 저는 숨은 지시를 걸러 내는 것보다 피해 범위를 줄이는 쪽에 집중합니다. LLM06 Excessive Agency가 다루는 것처럼 에이전트가 가진 권한이 곧 공격자가 얻을 수 있는 권한이기 때문입니다.
| 대응 | 방법 |
| 최소 권한 | 읽기만 필요하면 읽기 전용 토큰, 운영 대신 테스트 계정 연결 |
| 사람 승인 | 명령 실행, 메일 발송, 파일 삭제는 실행 전에 확인하도록 설정 |
| 연결 범위 | 커넥터가 접근하는 드라이브와 저장소를 필요한 곳으로 제한 |
| 출처 구분 | 모르는 웹 페이지나 저장소를 읽힌 뒤 나온 제안은 한 번 더 검토 |
5. 회사에서 쓰기 전에 정할 것
개인이 조심하는 것만으로는 한계가 있습니다. 쓸 수 있는 도구가 정해져 있지 않으면 직원들이 개인 계정으로 업무 데이터를 넣게 되므로, 저는 무조건 막기보다 승인된 도구와 사용 범위를 먼저 정하는 쪽이 효과적이라고 봅니다.
| 항목 | 정할 내용 |
| 승인된 서비스 | 업무에 써도 되는 서비스와 플랜, 개인 계정 사용 허용 여부 |
| 데이터 등급 | 등급별로 넣어도 되는 정보와 넣으면 안 되는 정보 |
| 관리 설정 | 대화 보관 기간, 피드백 버튼 허용, 커넥터와 에이전트 기능 범위 |
| 기록과 감사 | 관리자 콘솔의 감사 로그와 사용 현황을 확인하는 주기 |
6. 정리
- 개인 플랜은 학습 설정을 확인하고, 학습을 꺼도 대화가 일정 기간 저장되며 피드백 버튼은 대화 전체를 보낸다는 점을 기억합니다.
- 인증 정보, 개인정보, 내부 식별 정보는 지우거나 가린 뒤 넣고, 기밀 문서는 회사가 승인한 업무용 플랜에서만 다룹니다.
- 받은 코드와 설정은 보안 설정을 끄는 부분과 패키지 이름을 확인한 뒤 적용합니다.
- 에이전트와 커넥터에는 최소 권한을 주고, 실행 전에 사람이 확인하는 단계를 둡니다.
참고
'AI > 활용' 카테고리의 다른 글
| [AI] 생성형 AI로 에러 로그 분석하는 프롬프트 정리 (0) | 2026.09.26 |
|---|---|
| [AI] ChatGPT, Gemini, Claude 비교 (0) | 2026.09.25 |