"코드 한 줄 몰라도 앱을 만든다." 바이브 코딩(Vibe Coding)이 2025년 하반기부터 IT 업계의 핵심 키워드로 자리 잡으면서, 비개발자들도 AI의 도움으로 업무용 앱, 데이터 대시보드, 웹페이지를 뚝딱 만들어내는 시대가 됐습니다.
그런데 이 흐름에는 그림자가 하나 있습니다. 보안 전문기관 GitGuardian의 2026년 보고서에 따르면 AI 코딩 도구를 사용한 커밋의 시크릿 노출률은 일반 코드 대비 2배 이상입니다. 개발 경험이 없는 사람이 AI와 함께 코드를 작성하면, 보안 관행을 지키지 않고 그냥 붙여 넣는 경우가 많기 때문입니다.
이 글에서는 "왜 API 키가 노출되면 위험한지"부터 시작해, 실무에서 당장 적용할 수 있는 안전한 키 관리 방법까지 비개발자 언어로 설명합니다. 특히 Google Workspace(GWS) 사용자라면 별도 비용 없이 활용할 수 있는 Apps Script 보안 기능도 소개합니다.
많은 비개발자들은 API 키가 무엇인지, 그것이 노출되면 어떤 일이 생기는지 생각해 본 적조차 없습니다. 개발자에게는 기본 중의 기본이지만, 바이브 코딩으로 처음 코드를 접하는 사람에게는 아예 존재하지 않는 개념입니다. 그래서 더 위험합니다. 모르는 위험은 피할 수도 없으니까요.
API 키는 서비스에 접근하기 위한 열쇠입니다. 그 열쇠를 잃어버리면 내 집에 누군가 마음대로 드나드는 것과 같습니다. 구체적으로 어떤 일이 생길 수 있을까요?
실제 사례가 있습니다. 2026년 1월, AI로만 개발된 SNS 플랫폼 Moltbook은 출시 3일 만에 API 인증 토큰 150만 건이 유출됐습니다. Wiz 연구팀의 분석에 따르면 원인은 단 하나, 프론트엔드 JavaScript 코드에 API 키가 그대로 노출되어 있었기 때문입니다. OpenAI·Anthropic·Google Cloud·AWS 키가 모두 포함되어 있었습니다.
바이브 코딩에서 가장 흔하게 발생하는 실수입니다. AI에게 "이 API를 연결해줘"라고 하면, AI는 편의를 위해 API 키를 코드 안에 직접 넣어버립니다.
const API_KEY = "sk-1234567890abcdef..."
이 코드를 그대로 쓰면 어떻게 될까요? 팀원에게 파일을 보내는 순간, 카카오톡으로 공유하는 순간, 코드 저장소에 올리는 순간 — API 키가 그대로 딸려 나갑니다. 단 한 번의 공유로 충분합니다.
웹페이지를 만든 경우에는 더 심각합니다. 우리가 보는 웹페이지는 실제로 모두가 볼 수 있는 파일로 이루어져 있습니다. 브라우저에서 마우스 오른쪽 버튼을 클릭하고 "페이지 소스 보기"를 누르면 그 안에 든 코드가 전부 보입니다. 페이지를 비밀번호로 잠가도 소스 코드 자체는 막을 수 없습니다. 즉, 웹페이지 안에 API 키를 넣으면 누구든 그 키를 꺼내 쓸 수 있게 됩니다.
GitHub 무료 플랜의 경우 웹페이지 호스팅 기능(Pages)을 사용하려면 저장소 자체가 공개 상태여야 합니다. 코드가 공개되면 당연히 그 안의 API 키도 공개됩니다. 요약하면 이렇습니다. API 키는 코드 밖에서 따로 관리해야 합니다. 코드 안에 직접 쓰는 순간, 그 키는 언제든 유출될 수 있습니다.
API 키뿐만 아니라 사내 시스템에 접근하기 위한 자격증명도 같은 방식으로 노출될 수 있습니다. 업무 자동화 스크립트를 만들다 보면 다음과 같은 정보를 코드에 넣게 됩니다.
이런 정보를 코드에 넣으면, 코드가 팀 내에서 공유되는 순간 모든 동료가 볼 수 있습니다. 더 큰 위험은 퇴사자입니다. 업무용 코드가 담긴 드라이브 폴더나 메신저 메시지는 퇴사 후에도 남아 있는 경우가 많습니다. 코드를 지웠다고 생각해도 메신저 기록이나 메일 첨부파일 형태로 남아있을 수 있습니다. 사내 시스템 접근 정보가 담긴 코드는 특히 관리에 주의가 필요합니다.
Google Workspace 사용자라면 추가 비용 없이 쓸 수 있는 강력한 보안 기능이 있습니다. Apps Script의 스크립트 속성(Script Properties)입니다. API 키나 비밀번호처럼 민감한 정보를 코드 밖에 안전하게 저장하는 기능으로, Google 서버에서 암호화되어 관리됩니다.
사용 방법은 간단합니다.
OPENAI_KEY)과 값(실제 API 키)을 입력합니다.const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_KEY');
이렇게 하면 코드 어디에도 실제 API 키가 등장하지 않습니다. 코드를 동료와 공유하거나 저장소에 올려도 키는 노출되지 않습니다.
Apps Script 웹앱으로 배포하면 추가 장점이 있습니다. 코드가 Google 서버에서 실행되기 때문에 최종 사용자는 소스 코드를 볼 수 없습니다. 브라우저에서 "페이지 소스 보기"를 해도 API 키가 나오지 않습니다. Apps Script 업무 자동화 실전 사례도 함께 살펴보세요 →
한 가지 주의할 점: 스크립트 속성은 스크립트 편집 권한이 있는 사람이라면 조회할 수 있습니다. 따라서 운영용 스크립트는 편집 권한을 최소화하고, 실행 권한만 부여하는 방식으로 관리하는 것이 좋습니다.
Apps Script 외에도 바이브 코딩에 자주 사용하는 플랫폼들은 대부분 안전한 키 관리 기능을 제공합니다. 플랫폼마다 이름은 다르지만 원리는 같습니다. 코드와 키를 분리해서 저장하는 것입니다.
os.environ.get('API_KEY')로 불러옵니다.$ 형태로 사용할 수 있습니다. 실제 값은 로그에도 표시되지 않습니다.공통 원칙은 하나입니다. API 키는 서버에서만 다뤄야 합니다. 웹브라우저에서 실행되는 코드에는 절대 포함시키지 마세요. 이 원칙 하나만 지켜도 대부분의 바이브 코딩 보안 사고를 예방할 수 있습니다.
바이브 코딩은 업무 자동화와 생산성 향상에 분명한 가치가 있습니다. AI가 든든한 동반자가 된다는 것, 개발자가 아니어도 아이디어를 실현할 수 있다는 것은 분명한 강점입니다.
다만 AI는 보안 관행을 알아서 챙겨주지 않습니다. "API 키를 코드에 직접 넣지 않는다", "민감한 정보는 반드시 Secrets나 스크립트 속성으로 분리한다" — 이 두 가지 습관만 지켜도 대부분의 사고를 막을 수 있습니다.
Google Workspace를 사용하고 있다면 Apps Script의 스크립트 속성을 적극 활용하세요. 마드라스체크는 GWS 공식 파트너로서 기업의 안전한 AI 전환(AX)을 지원합니다. 기업 AI 전환 보안 가이드도 함께 확인해 보세요 →
아쉽게도 그렇지 않습니다. ChatGPT, Claude, Gemini 등 AI 도구는 "동작하는 코드"를 만들어주는 데 최적화되어 있습니다. 보안보다 편의가 우선이다 보니, API 키를 코드 안에 직접 넣은 형태로 결과를 줍니다. AI가 만들어준 코드를 그대로 쓰면 안 되는 이유가 여기에 있습니다. "이 API 키는 스크립트 속성에서 불러오는 방식으로 짜줘"처럼 직접 요청해야 안전한 코드를 받을 수 있습니다.
가장 먼저 해당 서비스 대시보드에서 기존 키를 즉시 폐기(Revoke)하고 새 키를 발급받으세요. 키를 폐기하면 탈취된 키는 더 이상 작동하지 않습니다. 그다음 사용 내역을 확인해 의심스러운 요청이 있었는지 살펴보세요. 비용이 발생했다면 서비스사 고객지원에 상황을 알리는 것이 좋지만, 환불은 대부분 보장되지 않습니다. 키 폐기가 늦을수록 피해가 커지므로 발견 즉시 처리하는 것이 전부입니다.
네, 무료 키라도 유출되면 문제가 됩니다. 무료 API 키는 대개 사용 한도(할당량)가 있는데, 공격자가 이 한도를 소진해버리면 내 서비스가 갑자기 작동을 멈춥니다. 또한 무료 계정이라도 서비스 약관 위반으로 계정 자체가 정지될 수 있습니다. 유료·무료 구분 없이 API 키는 항상 안전하게 관리해야 합니다.
코드를 공유하기 전에 API 키가 들어간 부분을 YOUR_API_KEY_HERE 같은 안내 문구로 교체하고 공유하세요. 받는 사람이 본인 키를 직접 스크립트 속성에 등록하도록 안내하면 됩니다. 코드 자체는 드라이브나 메신저로 공유하고, 키는 각자 개별 등록하는 방식이 팀 단위 협업에서 가장 안전합니다.
가장 간단한 방법은 코드 파일을 열고 Ctrl+F로 "key", "secret", "token", "password" 같은 단어를 검색하는 것입니다. 이런 단어 바로 옆에 실제 값이 들어있다면 즉시 분리해야 합니다. GitHub를 사용한다면 저장소 설정에서 Secret scanning 기능을 활성화하면 노출된 키를 자동으로 감지해 알려줍니다. 공개 저장소에 올린 적이 있다면 이미 노출된 것으로 보고 해당 키를 폐기한 뒤 새로 발급받는 것이 안전합니다.