Impedire l'utilizzo illecito dell'API Gemini con Firebase App Check

Quando chiami un'API direttamente da un'app web o mobile (ad esempio, le API che consentono l'accesso ai modelli di AI generativa), l'API è vulnerabile all'abuso da parte di client non autorizzati. Per proteggere queste API dagli abusi, puoi utilizzare Firebase App Check per verificare che tutte le chiamate API in entrata provengano dalla tua app effettiva e da un dispositivo non manomesso.

Firebase AI Logic fornisce un gateway proxy che ti consente di integrarti con Firebase App Check e proteggere le API del modello di AI generativa chiamate dalle tue app web e mobile. L'utilizzo di App Check con gli SDK Firebase AI Logic supporta tutte le nostre configurazioni:

  • Protegge entrambi i fornitori dell'API Gemini: Gemini Developer API e Vertex AI Gemini API.

  • Protegge tutti i modelli supportati, sia i modelli Gemini che i modelli Imagen.

App Check supporta anche la protezione di riproduzione, il che significa che un token App Check può essere utilizzato una sola volta.

Riepilogo di alto livello del funzionamento di App Check

Con App Check, i dispositivi che eseguono la tua app utilizzano un fornitore di attestazione di app o dispositivo che verifica uno o entrambi i seguenti elementi:

  • Le richieste provengono dalla tua app autentica
  • Le richieste provengono da un dispositivo autentico e non manomesso

Questa attestazione viene allegata a ogni richiesta effettuata dalla tua app utilizzando un SDK Firebase AI Logic. Quando attivi l'applicazione di App Check, le richieste dei client senza un'attestazione valida verranno rifiutate, così come qualsiasi richiesta proveniente da un'app o una piattaforma che non hai autorizzato.

Quando configuri App Check, valuta la possibilità di aggiungere la protezione di riproduzione, che rende i token App Check utilizzabili una sola volta. Questa opzione offre una protezione avanzata oltre a quella di base e ti consente di impostare un livello di protezione appropriato per la tua app e i tuoi casi d'uso.

Puoi trovare informazioni dettagliate su App Check nella relativa documentazione, inclusi quote e limiti.

Configura App Check

La documentazione di App Check fornisce descrizioni dettagliate dei fornitori di attestazioni e istruzioni di implementazione dettagliate.

  1. Scegli un fornitore di attestazioni predefinito e segui le istruzioni di implementazione ai seguenti link:

    Tieni presente che se nessuno dei provider di attestazione predefiniti è sufficiente per le tue esigenze, puoi implementare un provider personalizzato che utilizzi un provider di attestazione di terze parti o le tue tecniche di attestazione.

  2. (Obbligatorio) Attiva l'applicazione di App Check prima di eseguire il commit dell'app in un sistema di controllo del codice sorgente disponibile pubblicamente, condividere l'app o renderla disponibile pubblicamente.

  3. (Consigliato) Migliora la protezione aggiungendo la protezione di riproduzione, il che significa che un token App Check può essere utilizzato una sola volta.

Migliorare la protezione aggiungendo la protezione dal replay

Ti consigliamo di utilizzare le versioni più recenti dell'SDK, ma assicurati di utilizzare almeno una di queste versioni per utilizzare la protezione contro gli attacchi di replay:
Piattaforme Apple v12.2.0+ | Android BoM v34.14.0+ (App Check v19.1.0+) | Web v12.14.0+ | Flutter v4.15.0+ (App Check v4.10.0+) | Unity v13.12.0+

Per impostazione predefinita, App Check utilizza token di sessione con un valore Time to live (TTL) configurabile compreso tra 30 minuti e 7 giorni. Questi token di sessione vengono memorizzati nella cache dall'SDK App Check, vengono inviati insieme alle richieste della tua app e possono essere riutilizzati fino alla scadenza del TTL. L'utilizzo dei token di sessione è considerato una protezione di base.

Tuttavia, puoi migliorare la protezione oltre questa protezione di base applicando la protezione di riproduzione, che utilizza invece token a uso limitato. Quando viene applicata la protezione di riproduzione, si verifica quanto segue:

  • App Check bloccherà le richieste a Firebase AI Logic che utilizzano token di sessione. App Check consentirà solo una richiesta a Firebase AI Logic se utilizza un token di utilizzo limitato appena creato.

  • Una volta verificato, il token di utilizzo limitato viene utilizzato in modo che possa essere usato una sola volta, il che impedisce attacchi di tipo replay.

  • L'SDK App Check genera un nuovo token a uso limitato per ogni richiesta. Tieni presente che questo processo può influire sulle tue richieste aggiungendo un po' di latenza e a volte costi (a seconda del tuo fornitore di attestazioni).

Configurare e applicare la protezione di riproduzione

Fai clic sul tuo fornitore Gemini API per visualizzare i contenuti e il codice specifici del fornitore in questa pagina.

Ecco come configurare e applicare la protezione dalla riproduzione:

  1. Se non l'hai ancora fatto, implementa App Check e attiva l'applicazione di App Check per la tua app.

  2. Attiva l'utilizzo di token a uso limitato.

    Nella tua app durante l'istanza, imposta il parametro useLimitedUseAppCheckTokens su 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. Applica la protezione di riproduzione.

    1. Nel codebase della tua app, assicurati di aver attivato l'utilizzo di token di uso limitato (vedi il passaggio precedente).

    2. Nella console Firebase, vai a Sicurezza > App Check.

    3. Espandi la visualizzazione delle metriche per Firebase AI Logic.

    4. Assicurati che Protezione di base sia Applicata, poi fai clic su Continua.

    5. Per la protezione dalla riproduzione, scegli Non applicata (solo monitoraggio) o Applicata.

      Per decidere quando applicare la protezione dalla riproduzione, considera quanto segue:

      • Il monitoraggio delle richieste è consigliato se un numero considerevole di utenti utilizza probabilmente versioni precedenti della tua app senza l'utilizzo di token di uso limitato abilitato. Se applichi immediatamente la protezione dalla riproduzione, le richieste di questi utenti verranno bloccate.

      • Puoi monitorare in modo specifico la metrica Non verificato: token riutilizzato, ovvero il numero di richieste che hanno un token già utilizzato in una richiesta precedente. Monitora questa metrica nella console Firebase (vai alla scheda Sicurezza > App Check > API).

        Se una parte significativa delle richieste recenti rientra in questa categoria, puoi evitare di interrompere gli utenti e valutare la possibilità di attendere l'applicazione della protezione dal replay finché un numero maggiore di utenti non avrà eseguito l'aggiornamento a una versione della tua app che utilizza token di uso limitato.

Scopri come Firebase AI Logic si integra con App Check

Per utilizzare gli SDK Firebase AI Logic, l'API Firebase AI Logic (firebasevertexai.googleapis.com) deve essere attivata nel tuo progetto Firebase. Questo perché le richieste effettuate dagli SDK Firebase AI Logic vengono prima inviate al server Firebase AI Logic, che funge da gateway proxy in cui viene eseguita la verifica Firebase App Check prima che la richiesta possa procedere al backend del provider "Gemini API" scelto e alle API per accedere ai modelli Gemini e Imagen.