Firebase AI Logic 사용을 위한 보안 체크리스트

모바일 및 웹 앱에서 직접 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 콘솔의 안내 설정 중에 Firebase AI Logic에 App Check를 자동으로 적용합니다. 이전에 Firebase AI Logic를 설정한 경우 App Check를 명시적으로 적용해야 합니다. 로컬 개발의 경우 App Check 디버그 제공자를 설정한 다음 최종 사용자에게 출시하기 전에 프로덕션 증명 제공자에 앱을 등록하면 됩니다.

사용 제한 토큰으로 재생 보호 사용 설정

App Check 설정의 일환으로 App Check 토큰이 일회용이 되도록 재생 보호를 적용하는 것이 좋습니다. 이 옵션은 기준 보호 이상의 향상된 보호 기능을 제공하며 앱 및 사용 사례에 적합한 보호 수준을 설정할 수 있습니다.

Firebase API 키에 대한 제한사항 설정

Firebase API 키는 요청을 할 때 Firebase 프로젝트와 앱을 식별합니다. API 키의 무단 사용을 방지하려면 다음 단계를 따르세요.

  • Google Cloud 콘솔에서 '애플리케이션 제한사항'을 설정하여 키 사용을 앱의 특정 번들 ID (Apple), 패키지 이름 및 SHA-1 디지털 지문 (Android) 또는 HTTP 리퍼러 (웹)의 요청으로만 제한합니다.

  • 각 키의 'API 제한사항' 허용 목록을 검토합니다.

    • Firebase AI Logic API (firebasevertexai.googleapis.com)가 허용 목록에 있는지 확인합니다.
    • 허용 목록에 있는 다른 API는 앱에 필요한 특정 Firebase 서비스뿐인지 확인합니다. 제한된 Firebase 키에 필요한 API 목록을 참고하세요.

Firebase 관련 API는 API 키를 Firebase 프로젝트나 앱을 식별하는 데만 사용하며 API 호출 승인에는 사용하지 않습니다.

인증된 사용자에게만 요청 제한

Firebase AI Logic을 통한 모든 요청에 Firebase Authentication의 유효한 사용자 인증 정보가 포함되도록 인증된 사용자 모드를 적용하는 것이 좋습니다. 인증되지 않은 최종 사용자가 요청을 보내면 401: unauthenticated 오류와 함께 요청이 거부됩니다.

프롬프트 보호 및 요청 강화

클라이언트 디컴파일로 인해 프롬프트 디자인이 노출되지 않도록 하고 악의적인 사용자가 임의의 프롬프트를 실행할 수 없도록 백엔드를 잠급니다.

서버 프롬프트 템플릿 사용

서버 프롬프트 템플릿을 사용하여 프롬프트, 시스템 안내, 모델 구성을 바이너리 디컴파일을 사용하여 추출할 수 있는 클라이언트 앱 코드에 하드 코딩하는 대신 클라우드에 안전하게 보관하세요.

앱이 템플릿 ID만 참조하고 동적 입력 변수를 전달합니다. 또한 서버 프롬프트 템플릿을 사용하면 앱의 새 버전을 출시하지 않고도 필요에 따라 프롬프트를 업데이트하거나 모델을 전환할 수 있습니다.

클라이언트에서 제공한 템플릿 변수 검증 및 정리

서버 프롬프트 템플릿은 프롬프트 디자인을 보호하지만 동적 변수를 허용하는 템플릿은 프롬프트 인젝션에 취약할 수 있습니다. 템플릿은 사용자 입력 변수를 최종 프롬프트에 연결하므로 다음을 확인하세요.

  • 템플릿에 변수를 전달하기 전에 클라이언트에서 모든 사용자 입력을 검증하고 정리합니다 (예: 글자 수 제한 및 예상 형식 적용).
  • 사용자 입력이 처리되는 방식을 위한 가이드라인을 정의하는 명확한 시스템 안내를 템플릿에 포함하세요.

템플릿 전용 모드 적용

모든 앱 기능이 서버 프롬프트 템플릿을 사용하면 템플릿 전용 모드를 강제 적용하는 것이 좋습니다. 시행되면 Firebase AI Logic는 Gemini API (403: unauthorized)에 대한 모든 직접적인 템플릿이 없는 요청을 차단하여 악의적인 행위자가 임의의 프롬프트를 보내거나 할당량을 악용하는 것을 방지합니다.

모니터링, 한도, 결제

수신 트래픽과 보안 이상치를 파악하고 예기치 않은 사용량 급증이나 과도한 비용으로부터 프로젝트를 보호하세요.

Firebase 콘솔에서 AI 모니터링 설정하기

Firebase 콘솔에서 AI 모니터링을 설정하여 요청 수, 지연 시간, 토큰 사용량, 오류율 (401 인증 실패 및 403 템플릿 전용 차단 포함)과 같은 주요 측정항목을 파악하세요. Google Cloud 콘솔에서 개별 트레이스를 검사할 수도 있습니다.

비율 제한 설정 및 할당량 관리

예상치 못한 사용량 급증 및 지갑 거부 공격으로부터 프로젝트를 보호하세요.

알림 및 지출 한도로 예상치 못한 청구 방지

Firebase 프로젝트에 사용한 만큼만 지불하는 Blaze 요금제를 사용 중인 경우:

다음 단계