Firebase 앱 체크로 Gemini API 악용 방지

모바일 또는 웹 앱에서 직접 API를 호출하는 경우 (예: 생성형 AI 모델에 대한 액세스를 허용하는 API) 승인되지 않은 클라이언트가 API를 악용할 수 있습니다. 이러한 API가 악용되지 않도록 Firebase App Check를 사용하여 수신되는 모든 API 호출이 실제 앱과 변조되지 않은 기기에서 비롯되는지 확인할 수 있습니다.

Firebase AI LogicFirebase App Check와 통합하고 모바일 및 웹 앱에서 호출하는 생성형 AI 모델 API를 보호할 수 있는 프록시 게이트웨이를 제공합니다. Firebase AI Logic SDK와 함께 App Check를 사용하면 모든 구성이 지원됩니다.

  • Gemini Developer APIVertex AI Gemini API의 두 'Gemini API' 제공업체를 모두 보호합니다.

  • Gemini 모델과 Imagen 모델을 비롯한 지원되는 모든 모델을 보호합니다.

App Check재생 보호도 지원하므로 App Check 토큰은 한 번만 사용할 수 있습니다.

App Check 작동 방식에 관한 대략적인 요약

App Check를 사용하면 앱을 실행하는 기기는 다음 중 하나 또는 둘 모두를 확인하는 앱 또는 기기 증명 제공자를 사용합니다.

  • 요청이 인증된 앱에서 발생함
  • 요청이 변조되지 않은 인증된 기기에서 발생함

이 증명은 앱이 Firebase AI Logic SDK를 사용하여 수행하는 모든 요청에 연결됩니다. App Check 적용을 사용 설정하면 유효한 증명이 없는 클라이언트의 요청이 거부되며 승인하지 않은 앱이나 플랫폼에서 발생한 요청도 거부됩니다.

App Check을 설정할 때 재생 보호를 추가하는 것이 좋습니다. 이렇게 하면 App Check 토큰이 일회용이 됩니다. 이 옵션은 기준 보호를 넘어선 강화된 보호를 제공하며, 앱과 사용 사례에 적합한 보호 수준을 설정할 수 있습니다.

App Check에 관한 자세한 정보할당량 및 한도를 비롯한 설명서에서 확인할 수 있습니다.

App Check 설정

App Check 문서에서는 증명 제공자에 대한 자세한 설명과 자세한 구현 안내를 제공합니다.

  1. 기본 증명 프로바이더를 선택하고 다음 링크의 구현 안내를 따릅니다.

    기본 증명 제공자 중 어느 것도 요구사항을 충족하지 않는 경우 서드 파티 증명 제공자 또는 자체 증명 기법을 사용하는 맞춤 제공자를 구현할 수 있습니다.

  2. (필수) 앱을 공개적으로 사용 가능한 소스 코드 관리 시스템에 커밋하거나, 앱을 공유하거나, 앱을 공개적으로 제공하기 전에 App Check 적용을 사용 설정하세요.

  3. (권장) 재생 보호를 추가하여 보호를 강화합니다. 즉, App Check 토큰을 한 번만 사용할 수 있습니다.

재생 보호를 추가하여 보호 강화

최신 SDK 버전을 사용하는 것이 좋지만 리플레이 보호를 사용하려면 최소한 다음 버전 중 하나를 사용해야 합니다.
Apple 플랫폼 v12.2.0 이상 | Android BoM v34.14.0 이상 (App Check v19.1.0 이상) | 웹 v12.14.0 이상 | Flutter v4.15.0 이상 (App Check v4.10.0 이상) | Unity v13.12.0 이상

기본적으로 App Check30분에서 7일 사이로 구성 가능한 TTL (수명)이 있는 세션 토큰을 사용합니다. 이러한 세션 토큰은 App Check SDK에 의해 캐시되고, 앱의 요청과 함께 전송되며, TTL이 만료될 때까지 재사용할 수 있습니다. 세션 토큰을 사용하는 것은 기준 보호로 간주됩니다.

하지만 대신 제한된 사용 토큰을 사용하는 재생 보호를 적용하여 이 기준 보호를 넘어 보호를 강화할 수 있습니다. 재생 보호가 적용되면 다음과 같은 결과가 발생합니다.

  • App Check세션 토큰을 사용하는 Firebase AI Logic에 대한 요청을 차단합니다. 대신 App Check새로 생성된 제한된 사용 토큰을 사용하는 경우에만 Firebase AI Logic에 대한 요청을 허용합니다.

  • 제한된 사용 토큰이 확인되면 토큰이 소비되어 한 번만 사용할 수 있으므로 재생 공격이 방지됩니다.

  • App Check SDK는 요청에 대해 새로운 제한된 사용 토큰을 생성합니다. 이 프로세스는 지연 시간을 추가하고 증명 제공업체에 따라 비용을 발생시켜 요청에 영향을 줄 수 있습니다.

리플레이 보호 설정 및 시행

Gemini API 제공업체를 클릭하여 이 페이지에서 제공업체별 콘텐츠와 코드를 확인합니다.

재생 보호를 설정하고 적용하는 방법은 다음과 같습니다.

  1. 아직 App Check를 구현하지 않았고 앱에 App Check 시정 조치를 사용 설정하지 않은 경우 구현하고 사용 설정합니다.

  2. 일회용 토큰 사용 설정

    인스턴스화하는 동안 앱에서 useLimitedUseAppCheckTokens 매개변수를 true로 설정합니다.

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. 재생 보호를 적용합니다.

    1. 앱의 코드베이스에서 제한된 사용 토큰의 사용을 사용 설정했는지 확인합니다 (이전 단계 참고).

    2. Firebase 콘솔에서 보안 > App Check으로 이동합니다.

    3. Firebase AI Logic의 측정항목 뷰를 펼칩니다.

    4. 기준 보호강제로 설정되어 있는지 확인한 다음 계속을 클릭합니다.

    5. 리플레이 보호의 경우 강제 적용 안 함 (모니터링만 해당) 또는 강제 적용을 선택합니다.

      재생 보호를 적용할 시기를 결정하려면 다음을 고려하세요.

      • 상당수의 사용자가 사용 제한 토큰을 사용 설정하지 않고 이전 버전의 앱을 사용하고 있는 경우 요청을 모니터링하는 것이 좋습니다. 즉시 리플레이 보호를 시행하면 해당 사용자의 요청이 차단됩니다.

      • Unverified: Reused token 측정항목을 구체적으로 모니터링할 수 있습니다. 이 측정항목은 이전 요청에서 이미 사용된 토큰이 있는 요청의 수입니다. Firebase 콘솔에서 이 측정항목을 모니터링합니다 (보안 > App Check > API으로 이동).

        최근 요청의 상당 부분이 이 카테고리에 속하는 경우 사용자를 방해하지 않으려면 더 많은 사용자가 제한된 사용 토큰을 사용하는 앱 버전으로 업데이트할 때까지 기다린 후에 리플레이 보호를 적용하는 것이 좋습니다.

Firebase AI LogicApp Check과 통합되는 방식 이해하기

Firebase AI Logic SDK를 사용하려면 Firebase 프로젝트에서 Firebase AI Logic API (firebasevertexai.googleapis.com)를 사용 설정해야 합니다. 이는 Firebase AI Logic SDK에서 전송된 요청이 먼저 Firebase AI Logic 서버로 전송되기 때문입니다. 이 서버는 요청이 선택한 'Gemini API' 제공업체의 백엔드와 GeminiImagen 모델에 액세스하는 API로 진행되기 Firebase App Check 확인이 이루어지는 프록시 게이트웨이 역할을 합니다.