삼태연구소
SAMTAELABS삼태연구소
인사이트2026년 4월 17일·5분 읽기

클라이언트 프로젝트에서 AI API 요금이 하룻밤 새 수천만 원 폭탄이 된 이유 (discuss.ai.google.dev)

AI API 보안Firebase 요금 폭탄Gemini API 비용 관리API 키 노출 위험외주 개발 보안클라우드 지출 한도서버사이드 API 호출IT 에이전시 개발 체크리스트
클라이언트 프로젝트에서 AI API 요금이 하룻밤 새 수천만 원 폭탄이 된 이유
목차(8)

한줄 요약

AI API 키를 클라이언트 코드에 노출하면 13시간 만에 수천만 원 청구가 현실이 된다.

AI 기능을 외주 프로젝트에 붙이는 일이 늘면서, API 요금 폭탄은 이제 에이전시가 실제로 마주치는 리스크가 됐다. 문제는 기술적 실수가 아니라 '빠르게 붙이자'는 압박 속에서 보안 설정을 건너뛰는 것이다. 클라이언트는 청구서를 보고 나서야 에이전시에 책임을 묻는다.

어떻게 요금이 폭발하는가

AI API 키가 브라우저에서 직접 실행되는 클라이언트 사이드 코드에 포함되면, 그 키는 사실상 공개된 것이다. 누구든 개발자 도구를 열면 키를 꺼낼 수 있다. 자동화 봇은 이를 수집해 대량 요청을 보낸다. 실제 사용자 트래픽과 무관하게 API 호출이 발생하기 때문에, 이상 징후를 알아챌 때는 이미 수십만 원에서 수천만 원이 쌓인 뒤다.

특히 위험한 구조는 다음과 같다.

  • 프론트엔드 JavaScript 코드에 API 키를 하드코딩하거나 환경변수로 주입
  • 제한(Restriction) 없는 범용 API 키를 그대로 사용
  • 예산 알림을 설정했지만 실시간이 아닌 수 시간 지연된 알림에 의존

알림이 오는 시점에는 이미 피해가 누적된 상태다. 알림은 예방이 아니라 사후 통보에 가깝다.

에이전시가 놓치기 쉬운 설정 세 가지

1. API 키 제한(Restriction) 설정

키를 발급받는 것만큼, 그 키의 사용 범위를 제한하는 것이 필수다. 특정 API 서비스만 허용하고, HTTP 리퍼러나 IP 주소 기반으로 호출 출처를 제한해야 한다. 범용 키는 다른 Google Cloud 서비스까지 접근 가능한 경우가 많아 피해 범위가 커진다.

2. 서버 사이드로 AI 호출 이관

클라이언트에서 직접 AI API를 호출하는 구조를 피해야 한다. Cloud Functions, Cloud Run, 또는 자체 백엔드 서버를 경유하게 만들면 API 키가 외부에 노출되지 않는다. 요청 횟수 제한, 사용자 인증 연동, 이상 트래픽 탐지도 서버 사이드에서 훨씬 효과적으로 구현할 수 있다.

3. 지출 한도(Spend Cap) 설정

예산 알림과 지출 한도는 다르다. 알림은 초과 후 통보이고, 지출 한도는 초과 시 서비스를 차단한다. 프로젝트 단위로 월 지출 한도를 설정해두면, 이상 사용이 발생해도 피해 규모가 통제 가능한 범위 안에 머문다. 클라이언트 프로젝트라면 반드시 이 설정을 납품 체크리스트에 포함해야 한다.


에이전시와 클라이언트 사이 책임 소재는 어디에 있나

요금 폭탄이 발생했을 때 클라우드 제공사는 '본인 프로젝트에서 발생한 유효한 사용'으로 판단한다. 이의 제기가 받아들여지지 않는 경우가 많다. 즉, 누가 호출했든 프로젝트 소유자가 비용을 부담한다.

에이전시 입장에서 이건 계약 리스크다. 납품 전 보안 설정이 완료됐음을 문서화하지 않으면, 이후 분쟁에서 불리한 위치에 선다. 반대로 보안 체크리스트를 납품 프로세스에 포함하고 클라이언트에게 서명을 받아두면, 운영 이후 발생하는 문제에 대한 책임 소재가 명확해진다.

클라이언트에게 설명해야 하는 운영 리스크

AI 기능은 붙이기 쉽지만 운영은 다르다. 클라이언트는 API 요금이 사용량에 비례한다는 것은 알아도, 외부 봇이 자신의 API 키를 악용할 수 있다는 사실은 모르는 경우가 많다.

에이전시는 기능 개발만큼이나 '이 기능이 잘못되면 어떤 일이 생기는지'를 클라이언트에게 설명하는 것이 역할이다. 선불 충전 방식(Prepaid Billing) 옵션이 있다면 이를 적극 권장하는 것도 방법이다. 후불 구조는 피해를 키운다.

자주 묻는 질문

Q.API 키를 환경변수로 관리하면 안전한가?

프론트엔드 빌드에 포함되는 환경변수는 안전하지 않다. Next.js나 React 같은 프레임워크에서 NEXT_PUBLIC_ 또는 REACT_APP_ 접두어가 붙은 변수는 빌드 결과물에 그대로 노출된다. 서버 사이드 환경변수와 클라이언트 사이드 환경변수를 명확히 구분해야 한다. AI API 키는 반드시 서버에서만 접근 가능한 변수로 관리해야 한다.

Q.Firebase App Check를 적용하면 충분한가?

App Check는 호출 출처를 검증하는 도구지만, 단독으로는 완벽한 방어가 되지 않는다. 공격자가 정상 앱 환경을 흉내 낼 경우 우회될 수 있다. App Check는 서버 사이드 호출 구조, API 키 제한, 지출 한도 설정과 함께 다층 방어 구조로 운용할 때 의미가 있다. 하나의 설정에 의존하는 것은 위험하다.

Q.이미 키가 노출된 것 같다면 가장 먼저 해야 할 일은 무엇인가?

즉시 해당 API 키를 비활성화하고 새 키를 발급해야 한다. 키를 단순히 교체하는 것만으로는 부족하고, 새 키에는 반드시 서비스 및 출처 제한을 설정해야 한다. 이후 로그를 분석해 비정상 호출 구간을 확인하고, 클라우드 제공사에 이상 사용 신고를 접수한다. 대부분의 제공사는 명백한 봇 트래픽의 경우 요금 조정 검토를 해주지만, 승인이 보장되지는 않는다.

외주 개발 파트너를 찾고 계신가요?

대표 개발자가 직접 소통하고, 설계하고, 구축합니다. 중간 과정 없이 의도 그대로.

관련 아티클