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'uso illecito da parte di client non autorizzati. Per proteggere queste API dall'uso illecito, 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 eseguire l'integrazione con Firebase App Check e proteggere le API dei modelli di AI generativa chiamate dalle tue app web e mobile. L'utilizzo di App Check con gli Firebase AI Logic SDK supporta tutte le nostre configurazioni:
Protegge entrambi i provider "API Gemini": Gemini Developer API e Vertex AI Gemini API.
Protegge tutti i modelli supportati, sia i Gemini modelli sia i Imagen modelli.
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 provider di attestazione dell'app o del dispositivo che verifica una o entrambe delle seguenti condizioni:
- 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 Firebase AI Logic SDK. Quando abiliti l'applicazione forzata di App Check, le richieste provenienti da 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 alla protezione 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, incluse le quote e i limiti.
Configurare App Check
La documentazione di App Check fornisce descrizioni dettagliate dei provider di attestazione , nonché istruzioni di implementazione dettagliate.
Scegli un provider di attestazione predefinito e segui le istruzioni di implementazione ai seguenti link:
- Piattaforme Apple: DeviceCheck o App Attest
- Android: Play Integrity
- Web: reCAPTCHA Enterprise
- Flutter: Supporta
tutti i provider predefiniti sopra indicati
Se utilizzi versioni precedenti dei plug-in, consulta la nota sull'istanza speciale di seguito. per Flutter e App Check. - Unity: supporta tutti i provider predefiniti sopra indicati
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.
(Obbligatorio) Abilita l'App Check applicazione forzata prima di eseguire il commit dell'app in un sistema di controllo del codice sorgente disponibile pubblicamente, condividere l'app o renderla disponibile pubblicamente.
(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 di riproduzione
|
Ti consigliamo di utilizzare le versioni più recenti dell'SDK, ma
assicurati di utilizzare almeno una di queste versioni per utilizzare la
protezione di riproduzione: 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 una
durata (TTL) configurabile compresa tra
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, accade quanto segue:
App Check bloccherà le richieste a Firebase AI Logic che utilizzano token di sessione. Invece, App Check consentirà una richiesta a Firebase AI Logic solo se utilizza un token a uso limitato appena generato.
Una volta verificato, il token a uso limitato viene utilizzato in modo che possa essere utilizzato una sola volta, il che impedisce attacchi di tipo replay.
L'App Check SDK genera un nuovo token a uso limitato per ogni richiesta. Tieni presente che questa procedura può influire sulle tue richieste aggiungendo una certa latenza e talvolta un costo (a seconda del provider di attestazione).
Configurare e applicare la protezione di riproduzione
|
Fai clic sul provider Gemini API per visualizzare i contenuti specifici del provider e il codice in questa pagina. |
Ecco come configurare e applicare la protezione di riproduzione:
Se non l'hai già fatto, implementa App Check e abilita l'applicazione forzata per la tua app.App Check
Abilita l'utilizzo dei token a uso limitato.
Nell'app, durante l'istanza, imposta il parametro
useLimitedUseAppCheckTokenssutrue: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 ); // ...Applica la protezione di riproduzione.
Nel codice base dell'app, assicurati di aver abilitato l'utilizzo dei token a uso limitato (vedi il passaggio precedente).
Nella console Firebase, vai a Sicurezza > App Check.
Espandi la visualizzazione delle metriche per Firebase AI Logic.
Assicurati che la protezione di base sia applicata, quindi fai clic su Continua.
Per la protezione di riproduzione, scegli Non applicata (solo monitoraggio) o Applicata.
Tieni presente quanto segue per decidere quando applicare la protezione di riproduzione:
Il monitoraggio delle richieste è consigliato se è probabile che un numero sostanziale di utenti utilizzi versioni precedenti dell'app senza l'utilizzo dei token a uso limitato abilitato. Se applichi immediatamente la protezione di 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 Firebase console (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 forzata della protezione di riproduzione finché un numero maggiore di utenti non avrà eseguito l'aggiornamento a una versione dell'app che utilizza token a uso limitato.
Comprendere 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 abilitata nel tuo progetto Firebase. Questo perché le richieste effettuate dagli SDK
Firebase AI Logic vengono inviate prima 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.