모바일 및 웹 앱에서 직접 Gemini API를 호출할 때 백엔드 인프라, 할당량, 독점 프롬프트를 보호하려면 다층 심층 방어 접근 방식이 필요합니다. 이 체크리스트를 검토하여 Firebase AI Logic에 권장되는 보안 권장사항을 구현하세요.
앱, 기기, 사용자 인증
수신 요청이 인증된 기기에서 실행되는 앱의 변조되지 않은 합법적인 인스턴스와 인증된 사용자로부터 발생했는지 확인합니다.
Firebase App Check 시행
Firebase App Check를 적용하여 앱에서 직접 호출할 때 Gemini API가 악용되지 않도록 보호합니다. App Check가 적용되면 수신 요청이 인증된 앱 또는 변조되지 않은 기기에서 시작되었는지 확인합니다.
App Check는 Apple 플랫폼(DeviceCheck, App Attest 또는 reCAPTCHA Enterprise), Android(Play Integrity 또는 reCAPTCHA Enterprise), 웹(reCAPTCHA Enterprise)의 증명 제공업체를 지원합니다. Flutter 및 Unity 앱의 경우에도 이러한 모든 제공업체를 지원합니다.
2026년 7월 초부터 Firebase는 Firebase Console의 가이드 설정 중에 Firebase AI Logic에 App Check를 자동으로 적용합니다. 이전에 Firebase AI Logic를 설정한 경우 App Check를 명시적으로 적용해야 합니다. 로컬 개발의 경우 App Check 디버그 제공자를 설정한 다음 최종 사용자에게 출시하기 전에 프로덕션 증명 제공자에 앱을 등록할 수 있습니다.
일회용 토큰으로 재생 보호 사용 설정
App Check를 설정할 때 App Check 토큰이 일회용이 되도록 재생 보호를 적용하는 것이 좋습니다. 이 옵션은 기본 보호를 넘어 향상된 보호 기능을 제공하며 앱과 사용 사례에 적합한 보호 수준을 설정할 수 있습니다.
Firebase API 키에 대한 제한사항 설정
Firebase API 키는 요청 시 Firebase 프로젝트와 앱을 식별합니다. API 키의 무단 사용을 방지하려면 다음 단계를 따르세요.
Google Cloud Console에서 '애플리케이션 제한사항'을 설정하여 키 사용을 앱의 특정 번들 ID(Apple), 패키지 이름 및 SHA-1 디지털 지문(Android) 또는 HTTP 리퍼러(웹)의 요청으로만 제한합니다.
각 키의 'API 제한사항' 허용 목록을 검토합니다.
- Firebase AI Logic API(
firebasevertexai.googleapis.com)가 허용 목록에 있는지 확인합니다. - 허용 목록에 있는 다른 API가 앱에 필요한 특정 Firebase 서비스뿐인지 확인합니다. 제한된 Firebase 키에 필요한 API 목록을 참조하세요.
- Firebase AI Logic API(
Firebase 관련 API는 API 키를 Firebase 프로젝트나 앱을 식별하는 데만 사용하며 API 호출 승인에는 사용하지 않습니다.
인증된 사용자로만 요청 제한
Firebase AI Logic를 통한 모든 요청에 Firebase Authentication의 유효한 사용자 인증 정보가 포함되도록 인증된 사용자 모드를 적용하는 것이 좋습니다. 인증되지 않은 최종 사용자로부터 요청이 오면 요청이 401: unauthenticated 오류와 함께 거부됩니다.
프롬프트 보호 및 요청 강화
클라이언트 디컴파일로 인해 프롬프트 설계가 노출되지 않도록 방지하고 악의적인 사용자가 임의의 프롬프트를 실행할 수 없도록 백엔드를 잠급니다.
서버 프롬프트 템플릿 사용
서버 프롬프트 템플릿을 사용하여 프롬프트, 시스템 안내, 모델 구성을 클라우드에 안전하게 보관하세요. 바이너리 디컴파일을 사용하여 추출할 수 있는 클라이언트 앱 코드에 하드 코딩하지 마세요.
앱은 템플릿 ID만 참조하고 동적 입력 변수를 전달합니다. 또한 서버 프롬프트 템플릿을 사용하면 앱의 새 버전을 출시하지 않고도 필요에 따라 프롬프트를 업데이트하거나 모델을 전환할 수 있습니다.
클라이언트가 제공한 템플릿 변수 검증 및 정제
서버 프롬프트 템플릿은 프롬프트 설계를 보호하지만 동적 변수를 허용하는 템플릿은 여전히 프롬프트 인젝션에 취약할 수 있습니다. 템플릿은 사용자 입력 변수를 최종 프롬프트에 연결하므로 다음을 수행해야 합니다.
- 변수를 템플릿에 전달하기 전에 클라이언트의 모든 사용자 입력을 검증하고 정제합니다(예: 글자 수 제한 및 예상 형식 적용).
- 사용자 입력이 처리되는 방식에 대한 가드레일을 정의하는 명확한 시스템 안내를 템플릿에 포함합니다.
템플릿 전용 모드 적용
모든 앱 기능에서 서버 프롬프트 템플릿을 사용하는 경우 템플릿 전용 모드를 적용하는 것이 좋습니다. 적용되면 Firebase AI Logic는 Gemini API(403: unauthorized)에 대한 모든 직접적이고 템플릿이 없는 요청을 차단하여 악의적인 행위자가 임의의 프롬프트를 전송하거나 할당량을 악용하지 못하도록 합니다.
모니터링, 한도, 결제
수신 트래픽과 보안 이상치를 파악하고 예상치 못한 사용량 급증이나 비용 급증으로부터 프로젝트를 보호하세요.
Firebase Console에서 AI 모니터링 설정
Firebase Console에서 AI 모니터링을 설정하여 요청 수, 지연 시간, 토큰 사용량, 오류율(401 인증 실패 및 403 템플릿 전용 차단 포함)과 같은 주요 측정항목을 파악할 수 있습니다.
Google Cloud 콘솔에서 개별 trace를 검사할 수도 있습니다.
비율 제한 설정 및 할당량 관리
예상치 못한 사용량 급증 및 지갑 거부 공격으로부터 프로젝트를 보호하세요.
- 사용자별 비율 제한을 설정(기본값은 100RPM)하여 개별 클라이언트 인스턴스가 과도한 할당량을 소비하지 않도록 합니다.
- 각 기본 API의 Google Cloud 콘솔에서 프로젝트 할당량을 검토하고 관리합니다.
알림 및 지출 한도로 예상치 못한 청구 방지
Firebase 프로젝트에서 사용한 만큼만 지불하는 Blaze 요금제를 사용하는 경우:
다음 단계
- 일반 Firebase 보안 체크리스트를 검토합니다.
- 일반적인 Firebase AI Logic 프로덕션 체크리스트를 검토합니다.
- Firebase AI Logic 가격 책정 및 비용 관리에 대해 자세히 알아보세요.