비밀 유출 없이 AI 사용하기
에러가 발생했습니다. 스택 트레이스를 복사합니다. AI에게 수정을 요청합니다. 그 텍스트 안에 DATABASE_URL과 비밀번호가 들어있다는 사실을 잊어버립니다. AI는 4초 만에 답변을 내놓습니다. 이제 당신의 비밀 정보는 요청 로그나 학습 데이터 세트에 포함되었습니다. 삭제할 수도 없습니다.
AI에 비밀 정보를 붙여넣는 것은 공개 사이트에 붙여넣는 것과 같습니다. 한 번 올리면 되돌릴 수 없습니다.
저는 코드를 배포하기 위해 매일 AI를 사용합니다. AI를 피하지는 않습니다. 다만 위협 모델(threat model)을 가지고 사용합니다.
대부분의 사람들은 프롬프트가 비공개 채팅이라고 생각합니다. 그렇지 않습니다. 그것은 외부로 나가는 요청(outbound request)입니다.
- 무료 티어는 종종 모델 학습에 사용자의 데이터를 사용합니다.
- 유료 티어는 보통 사용자의 데이터로 학습하지 않겠다고 약속합니다.
- 유료 티어라 할지라도 남용 탐지 및 검토를 위해 로그를 저장합니다.
데이터는 세 가지 방식으로 유출됩니다:
- 붙여넣는 내용: 코드 스니펫, 설정 파일 또는 트레이스.
- 도구가 자동으로 첨부하는 내용: 열려 있는 파일, 저장소(repo) 컨텍스트 또는 터미널 출력.
- 모델이 다시 보내는 내용: PR 설명이나 로그에 다시 나타난(echoed) 비밀 정보.
AI 제공업체는 신뢰할 수 있는 제3자입니다. 그들의 내부 파이프라인을 직접 감사할 수는 없습니다. 프롬프트 입력창을 신뢰할 수 없는 네트워크 호출처럼 취급하십시오.
다음 항목들은 보내지 마십시오:
- 실제 API 키 또는 토큰.
- .env 파일의 내용.
- 개인 키 또는 인증서.
- 실제 고객 이름, 이메일 또는 결제 데이터.
- 오픈 소스로 공개하지 않을 독점 로직.
대신 플레이스홀더(placeholder)를 사용하십시오. [API_KEY]나 [DB_PASSWORD]를 사용하세요. AI는 마스킹된 정보로도 충분히 잘 작동합니다.
다음 세 가지 습관을 기르십시오:
- AI용 ignore 파일을 사용하십시오. .env 및 비밀 폴더가 도구의 컨텍스트에 포함되지 않도록 하십시오.
- 보내기 전에 스캔하십시오. 붙여넣기 전에 텍스트에 대해 비밀 정보 탐지기(secret detector)를 실행하십시오.
- 비밀 정보를 암호화된 상태로 유지하십시오. 비밀 정보가 런타임 시 메모리에만 존재한다면, 붙여넣을 수 없을 것입니다.
선택 사항 요약:
- 무료/개인용: 공개 문서나 일회성 스니펫용으로 사용.
- 유료 Pro/Team: 대부분의 엔지니어링 작업용. 계약적 보호 기능이 있음.
- 로컬/자체 호스팅: 기기에 머물러야 하는 규제 대상 데이터용.
'학습 미사용 보장'은 계약일 뿐입니다. 기술적인 방패가 아닙니다. 위험을 낮춰주지만 완전히 없애주지는 않습니다.
AI가 코드를 다루기 전에 다음 단계를 따르십시오:
- AI 도구를 위한 ignore 파일을 추가하십시오.
- 붙여넣는 모든 것을 스캔하십시오.
- 모든 자격 증명을 플레이스홀더로 마스킹하십시오.
- 독점적인 작업에는 유료 티어를 사용하십시오.
- KMS를 사용하여 비밀 정보가 평문으로 노출되지 않게 하십시오.
- AI 출력이 로그나 커밋에 반영되기 전에 검토하십시오.
4초 만의 답변은 여전히 빠릅니다. 다만 보안을 희생하지는 마십시오.
Optional learning community: https://t.me/GyaanSetuAi
