바이브 코딩 시대의 보안 사고, 이렇게 막는다: API 키 노출 위험과 안전한 관리법
이 글의 핵심 요약
바이브 코딩으로 앱을 만들 때 API 키를 소스 코드에 직접 넣는 것은 심각한 보안 위협입니다. API 키 하나가 노출되면 요금 폭탄부터 사내 데이터 유출까지 연쇄 피해가 생깁니다. Google Workspace 사용자라면 Apps Script의 스크립트 속성으로 추가 비용 없이 안전하게 관리할 수 있습니다.
"코드 한 줄 몰라도 앱을 만든다." 바이브 코딩(Vibe Coding)이 2025년 하반기부터 IT 업계의 핵심 키워드로 자리 잡으면서, 비개발자들도 AI의 도움으로 업무용 앱, 데이터 대시보드, 웹페이지를 뚝딱 만들어내는 시대가 됐습니다.
그런데 이 흐름에는 그림자가 하나 있습니다. 보안 전문기관 GitGuardian의 2026년 보고서에 따르면 AI 코딩 도구를 사용한 커밋의 시크릿 노출률은 일반 코드 대비 2배 이상입니다. 개발 경험이 없는 사람이 AI와 함께 코드를 작성하면, 보안 관행을 지키지 않고 그냥 붙여 넣는 경우가 많기 때문입니다.
이 글에서는 "왜 API 키가 노출되면 위험한지"부터 시작해, 실무에서 당장 적용할 수 있는 안전한 키 관리 방법까지 비개발자 언어로 설명합니다. 특히 Google Workspace(GWS) 사용자라면 별도 비용 없이 활용할 수 있는 Apps Script 보안 기능도 소개합니다.
API 키 노출이 왜 그렇게 위험한가요?
많은 비개발자들은 API 키가 무엇인지, 그것이 노출되면 어떤 일이 생기는지 생각해 본 적조차 없습니다. 개발자에게는 기본 중의 기본이지만, 바이브 코딩으로 처음 코드를 접하는 사람에게는 아예 존재하지 않는 개념입니다. 그래서 더 위험합니다. 모르는 위험은 피할 수도 없으니까요.
API 키는 서비스에 접근하기 위한 열쇠입니다. 그 열쇠를 잃어버리면 내 집에 누군가 마음대로 드나드는 것과 같습니다. 구체적으로 어떤 일이 생길 수 있을까요?
- 요금 폭탄: OpenAI, Google Cloud, AWS 등의 API는 사용량 기반으로 과금합니다. 공격자가 탈취한 키로 대량의 API 요청을 보내면, 청구서는 내 계정으로 날아옵니다. ChatGPT API 키 탈취로 수백만 원 이상의 요금이 청구된 사례가 국내외에서 반복되고 있습니다.
- 데이터 무단 열람·삭제: 사내 시스템이나 데이터베이스에 연결된 API 키라면, 공격자는 내부 데이터를 열람하거나 삭제할 수 있습니다. 고객 정보, 인사 데이터, 재무 정보까지 표적이 됩니다.
- 서비스 이름으로 악성 행위: 내 계정 키로 스팸 메일을 대량 발송하거나 불법 콘텐츠를 생성하는 등 악의적인 행위가 일어날 수 있습니다. 피해는 내가 받고, 행위자 추적은 내 계정으로 이어집니다.
- 연쇄 피해: 하나의 키로 접근 가능한 시스템이 내부 다른 시스템과 연결돼 있다면, 초기 침투 한 번으로 사내 전체 인프라가 위협받습니다.
실제 사례가 있습니다. 2026년 1월, AI로만 개발된 SNS 플랫폼 Moltbook은 출시 3일 만에 API 인증 토큰 150만 건이 유출됐습니다. Wiz 연구팀의 분석에 따르면 원인은 단 하나, 프론트엔드 JavaScript 코드에 API 키가 그대로 노출되어 있었기 때문입니다. OpenAI·Anthropic·Google Cloud·AWS 키가 모두 포함되어 있었습니다.
위험 ①: 소스 코드 안에 API 키를 직접 넣지 마세요
바이브 코딩에서 가장 흔하게 발생하는 실수입니다. AI에게 "이 API를 연결해줘"라고 하면, AI는 편의를 위해 API 키를 코드 안에 직접 넣어버립니다.
const API_KEY = "sk-1234567890abcdef..."
이 코드를 그대로 쓰면 어떻게 될까요? 팀원에게 파일을 보내는 순간, 카카오톡으로 공유하는 순간, 코드 저장소에 올리는 순간 — API 키가 그대로 딸려 나갑니다. 단 한 번의 공유로 충분합니다.
웹페이지를 만든 경우에는 더 심각합니다. 우리가 보는 웹페이지는 실제로 모두가 볼 수 있는 파일로 이루어져 있습니다. 브라우저에서 마우스 오른쪽 버튼을 클릭하고 "페이지 소스 보기"를 누르면 그 안에 든 코드가 전부 보입니다. 페이지를 비밀번호로 잠가도 소스 코드 자체는 막을 수 없습니다. 즉, 웹페이지 안에 API 키를 넣으면 누구든 그 키를 꺼내 쓸 수 있게 됩니다.
GitHub 무료 플랜의 경우 웹페이지 호스팅 기능(Pages)을 사용하려면 저장소 자체가 공개 상태여야 합니다. 코드가 공개되면 당연히 그 안의 API 키도 공개됩니다. 요약하면 이렇습니다. API 키는 코드 밖에서 따로 관리해야 합니다. 코드 안에 직접 쓰는 순간, 그 키는 언제든 유출될 수 있습니다.

위험 ②: 사내 기밀과 시스템 접근 정보도 마찬가지입니다
API 키뿐만 아니라 사내 시스템에 접근하기 위한 자격증명도 같은 방식으로 노출될 수 있습니다. 업무 자동화 스크립트를 만들다 보면 다음과 같은 정보를 코드에 넣게 됩니다.
- 사내 데이터베이스 접속 정보 (아이디·비밀번호)
- Google Workspace, Microsoft 365 서비스 계정 키
- 내부 HR·ERP 시스템 접근 토큰
- 사내 전용 API 엔드포인트 주소
이런 정보를 코드에 넣으면, 코드가 팀 내에서 공유되는 순간 모든 동료가 볼 수 있습니다. 더 큰 위험은 퇴사자입니다. 업무용 코드가 담긴 드라이브 폴더나 메신저 메시지는 퇴사 후에도 남아 있는 경우가 많습니다. 코드를 지웠다고 생각해도 메신저 기록이나 메일 첨부파일 형태로 남아있을 수 있습니다. 사내 시스템 접근 정보가 담긴 코드는 특히 관리에 주의가 필요합니다.
해결책 ①: Google Apps Script의 스크립트 속성을 활용하세요
Google Workspace 사용자라면 추가 비용 없이 쓸 수 있는 강력한 보안 기능이 있습니다. Apps Script의 스크립트 속성(Script Properties)입니다. API 키나 비밀번호처럼 민감한 정보를 코드 밖에 안전하게 저장하는 기능으로, Google 서버에서 암호화되어 관리됩니다.
사용 방법은 간단합니다.
- Apps Script 편집기를 엽니다.
- 좌측 메뉴 > 프로젝트 설정(⚙️) > 스크립트 속성으로 이동합니다.
- 속성 이름(예:
OPENAI_KEY)과 값(실제 API 키)을 입력합니다.
- 코드에서는 이렇게 불러옵니다.
const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_KEY');
이렇게 하면 코드 어디에도 실제 API 키가 등장하지 않습니다. 코드를 동료와 공유하거나 저장소에 올려도 키는 노출되지 않습니다.
Apps Script 웹앱으로 배포하면 추가 장점이 있습니다. 코드가 Google 서버에서 실행되기 때문에 최종 사용자는 소스 코드를 볼 수 없습니다. 브라우저에서 "페이지 소스 보기"를 해도 API 키가 나오지 않습니다. Apps Script 업무 자동화 실전 사례도 함께 살펴보세요 →
한 가지 주의할 점: 스크립트 속성은 스크립트 편집 권한이 있는 사람이라면 조회할 수 있습니다. 따라서 운영용 스크립트는 편집 권한을 최소화하고, 실행 권한만 부여하는 방식으로 관리하는 것이 좋습니다.

해결책 ②: 다른 플랫폼에서는 Secrets·환경변수 기능을 사용하세요
Apps Script 외에도 바이브 코딩에 자주 사용하는 플랫폼들은 대부분 안전한 키 관리 기능을 제공합니다. 플랫폼마다 이름은 다르지만 원리는 같습니다. 코드와 키를 분리해서 저장하는 것입니다.
- Replit Secrets: 좌측 패널 > Secrets 메뉴에서 키-값 쌍으로 저장합니다. Python이라면
os.environ.get('API_KEY')로 불러옵니다.
- GitHub Secrets: 저장소 설정의 Secrets에 등록하면 Actions 워크플로우에서
$ 형태로 사용할 수 있습니다. 실제 값은 로그에도 표시되지 않습니다.
- Vercel / Netlify 환경변수: 프로젝트 설정 > Environment Variables에서 추가합니다. 단, 브라우저에서 실행되는 코드에서 이 환경변수를 사용하면 여전히 노출될 수 있으므로, 반드시 서버 함수(Serverless Function)에서만 사용해야 합니다.
공통 원칙은 하나입니다. API 키는 서버에서만 다뤄야 합니다. 웹브라우저에서 실행되는 코드에는 절대 포함시키지 마세요. 이 원칙 하나만 지켜도 대부분의 바이브 코딩 보안 사고를 예방할 수 있습니다.
바이브 코딩, 멈추지 않아도 됩니다. 습관 하나만 바꾸면 됩니다.
바이브 코딩은 업무 자동화와 생산성 향상에 분명한 가치가 있습니다. AI가 든든한 동반자가 된다는 것, 개발자가 아니어도 아이디어를 실현할 수 있다는 것은 분명한 강점입니다.
다만 AI는 보안 관행을 알아서 챙겨주지 않습니다. "API 키를 코드에 직접 넣지 않는다", "민감한 정보는 반드시 Secrets나 스크립트 속성으로 분리한다" — 이 두 가지 습관만 지켜도 대부분의 사고를 막을 수 있습니다.
Google Workspace를 사용하고 있다면 Apps Script의 스크립트 속성을 적극 활용하세요. 마드라스체크는 GWS 공식 파트너로서 기업의 안전한 AI 전환(AX)을 지원합니다. 기업 AI 전환 보안 가이드도 함께 확인해 보세요 →
.png?width=1340&height=270&name=%EB%B8%94%EB%A1%9C%EA%B7%B8%20%EA%B2%8C%EC%8B%9C%EC%9A%A9%20%EC%A0%9C%ED%92%88%20%EB%B0%B0%EB%84%88%20%EC%A0%9C%EC%9E%91-%EA%B5%AC%EA%B8%80%EC%9B%8C%ED%81%AC%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4%20(1).png)
✍️ 마드라스체크 AX&플랫폼팀 | Microsoft 365·Google Workspace·Zoom·Adobe 공식 파트너사. 기업 AI 전환(AX) 실무와 SaaS 도입 컨설팅을 담당합니다.
자주 묻는 질문
Q. AI가 코드를 짜줄 때 API 키도 알아서 안전하게 처리해주지 않나요?
아쉽게도 그렇지 않습니다. ChatGPT, Claude, Gemini 등 AI 도구는 "동작하는 코드"를 만들어주는 데 최적화되어 있습니다. 보안보다 편의가 우선이다 보니, API 키를 코드 안에 직접 넣은 형태로 결과를 줍니다. AI가 만들어준 코드를 그대로 쓰면 안 되는 이유가 여기에 있습니다. "이 API 키는 스크립트 속성에서 불러오는 방식으로 짜줘"처럼 직접 요청해야 안전한 코드를 받을 수 있습니다.
Q. API 키가 이미 노출됐다면 가장 먼저 해야 할 일은 무엇인가요?
가장 먼저 해당 서비스 대시보드에서 기존 키를 즉시 폐기(Revoke)하고 새 키를 발급받으세요. 키를 폐기하면 탈취된 키는 더 이상 작동하지 않습니다. 그다음 사용 내역을 확인해 의심스러운 요청이 있었는지 살펴보세요. 비용이 발생했다면 서비스사 고객지원에 상황을 알리는 것이 좋지만, 환불은 대부분 보장되지 않습니다. 키 폐기가 늦을수록 피해가 커지므로 발견 즉시 처리하는 것이 전부입니다.
Q. 무료로 발급받은 API 키도 유출되면 위험한가요?
네, 무료 키라도 유출되면 문제가 됩니다. 무료 API 키는 대개 사용 한도(할당량)가 있는데, 공격자가 이 한도를 소진해버리면 내 서비스가 갑자기 작동을 멈춥니다. 또한 무료 계정이라도 서비스 약관 위반으로 계정 자체가 정지될 수 있습니다. 유료·무료 구분 없이 API 키는 항상 안전하게 관리해야 합니다.
Q. 팀원과 코드를 공유해야 할 때 가장 안전한 방법은 무엇인가요?
코드를 공유하기 전에 API 키가 들어간 부분을 YOUR_API_KEY_HERE 같은 안내 문구로 교체하고 공유하세요. 받는 사람이 본인 키를 직접 스크립트 속성에 등록하도록 안내하면 됩니다. 코드 자체는 드라이브나 메신저로 공유하고, 키는 각자 개별 등록하는 방식이 팀 단위 협업에서 가장 안전합니다.
Q. 내가 지금까지 만든 코드에 API 키가 이미 노출되어 있는지 어떻게 확인하나요?
가장 간단한 방법은 코드 파일을 열고 Ctrl+F로 "key", "secret", "token", "password" 같은 단어를 검색하는 것입니다. 이런 단어 바로 옆에 실제 값이 들어있다면 즉시 분리해야 합니다. GitHub를 사용한다면 저장소 설정에서 Secret scanning 기능을 활성화하면 노출된 키를 자동으로 감지해 알려줍니다. 공개 저장소에 올린 적이 있다면 이미 노출된 것으로 보고 해당 키를 폐기한 뒤 새로 발급받는 것이 안전합니다.