Lorsque vous appelez une API directement depuis une application mobile ou Web (par exemple, les API qui permettent d'accéder à des modèles d'IA générative), l'API est vulnérable aux utilisations abusives par des clients non autorisés. Pour protéger ces API contre les utilisations abusives, vous pouvez utiliser Firebase App Check afin de vérifier que tous les appels d'API entrants proviennent de votre application et d'un appareil non altéré.
Firebase AI Logic fournit une passerelle proxy qui vous permet de vous intégrer à Firebase App Check et de protéger les API de modèles d'IA générative appelées par vos applications mobiles et Web. L'utilisation de App Check avec les SDK Firebase AI Logic est compatible avec toutes nos configurations :
Protège les deux fournisseurs de l'"API Gemini" : Gemini Developer API et Vertex AI Gemini API.
Protège tous les modèles compatibles, à la fois les modèles Gemini et les modèles Imagen.
App Check est également compatible avec la protection contre les attaques par rejeu, ce qui signifie qu'un jeton App Check ne peut être utilisé qu'une seule fois.
Résumé général du fonctionnement de App Check
Avec App Check, les appareils exécutant votre application utilisent un fournisseur d'attestation d'application ou d'appareil qui vérifie l'un des éléments suivants, ou les deux :
- Les requêtes proviennent de votre application authentique
- Les requêtes proviennent d'un appareil authentique qui n'a pas été altéré.
Cette attestation est jointe à chaque requête effectuée par votre application à l'aide d'un SDK Firebase AI Logic. Lorsque vous activez l'application App Check, les requêtes provenant de clients sans attestation valide sont refusées, tout comme celles provenant d'une application ou d'une plate-forme que vous n'avez pas autorisée.
Lorsque vous configurez App Check, pensez à ajouter une protection contre les attaques de répétition, qui rend les jetons App Check à usage unique. Cette option offre une protection renforcée au-delà de la protection de base. Elle vous permet de définir un niveau de protection adapté à votre application et à vos cas d'utilisation.
Vous trouverez des informations détaillées sur App Check dans sa documentation, y compris ses quotas et limites.
Configurer App Check
La documentation App Check fournit des descriptions détaillées des fournisseurs d'attestation, ainsi que des instructions d'implémentation détaillées.
Choisissez un fournisseur d'attestation par défaut et suivez les instructions d'implémentation disponibles aux liens suivants :
- Plates-formes Apple : DeviceCheck ou App Attest
- Android : Play Integrity
- Web : reCAPTCHA Enterprise
- Flutter : compatible avec tous les fournisseurs par défaut ci-dessus
Si vous utilisez d'anciennes versions du plug-in, consultez la remarque sur l'instanciation spéciale ci-dessous. pour Flutter et App Check. - Unity : compatible avec tous les fournisseurs par défaut ci-dessus
Notez que si aucun des fournisseurs d'attestation par défaut ne répond à vos besoins, vous pouvez implémenter un fournisseur personnalisé qui utilise un fournisseur d'attestation tiers ou vos propres techniques d'attestation.
(Obligatoire) Activez l'application de App Checkmesure d'application avant d'engager votre application dans un système de contrôle du code source accessible au public, de la partager ou de la rendre accessible au public.
(Recommandé) Renforcez la protection en ajoutant la protection contre les attaques de répétition, ce qui signifie qu'un jeton App Check ne peut être utilisé qu'une seule fois.
Renforcer la protection en ajoutant une protection contre la relecture
|
Nous vous recommandons d'utiliser les dernières versions du SDK, mais assurez-vous d'utiliser au moins l'une de ces versions pour utiliser la protection contre la relecture : Plates-formes 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+ |
Par défaut, App Check utilise des jetons de session dont la valeur TTL (Time To Live) est configurable et comprise entre
Toutefois, vous pouvez renforcer la protection au-delà de cette protection de base en appliquant la protection contre les attaques de répétition, qui utilise des jetons à usage limité. Lorsque la protection contre les attaques de répétition est appliquée, voici ce qui se produit :
App Check bloquera les requêtes envoyées à Firebase AI Logic qui utilisent des jetons de session. Au lieu de cela, App Check n'autorisera une requête Firebase AI Logic que si elle utilise un jeton à usage limité nouvellement créé.
Une fois le jeton à usage limité validé, il est consommé pour ne pouvoir être utilisé qu'une seule fois, ce qui empêche les attaques par relecture.
Le SDK App Check génère un nouveau jeton à usage limité pour chaque requête. Notez que ce processus peut avoir un impact sur vos demandes en ajoutant une certaine latence et parfois un coût (selon votre fournisseur d'attestation).
Configurer et appliquer la protection contre la réutilisation
|
Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques à ce fournisseur sur cette page. |
Voici comment configurer et appliquer la protection contre la réutilisation :
Si ce n'est pas déjà fait, implémentez App Check et activez l'application de App Check pour votre application.
Activez l'utilisation des jetons à usage limité.
Dans votre application, lors de l'instanciation, définissez le paramètre
useLimitedUseAppCheckTokenssurtrue: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 ); // ...Appliquez la protection contre les attaques de répétition.
Dans la base de code de votre application, assurez-vous d'avoir activé l'utilisation de jetons à usage limité (voir l'étape précédente).
Dans la consoleFirebase, accédez à Sécurité > App Check.
Développez la vue des métriques pour Firebase AI Logic.
Assurez-vous que l'option Protection de base est activée, puis cliquez sur Continuer.
Pour la protection contre la relecture, choisissez Non appliqué (surveillance uniquement) ou Appliqué.
Pour décider quand appliquer la protection contre la réutilisation, tenez compte des points suivants :
Nous vous recommandons de surveiller vos requêtes si un nombre important de vos utilisateurs est susceptible d'utiliser des versions antérieures de votre application sans que l'utilisation de jetons à usage limité soit activée. Si vous appliquez immédiatement la protection contre la relecture, les demandes de ces utilisateurs seront bloquées.
Vous pouvez surveiller spécifiquement la métrique Non validé : jeton réutilisé, qui correspond au nombre de requêtes comportant un jeton déjà utilisé dans une requête précédente. Surveillez cette métrique dans la consoleFirebase (accédez à l'onglet Sécurité > App Check > API).
Si une partie importante des requêtes récentes appartient à cette catégorie, vous pouvez éviter de perturber les utilisateurs et envisager d'attendre pour appliquer la protection contre la réutilisation jusqu'à ce qu'un plus grand nombre d'utilisateurs aient mis à jour leur application vers une version qui utilise des jetons à usage limité.
Comprendre comment Firebase AI Logic s'intègre à App Check
Pour utiliser les SDK Firebase AI Logic, l'API Firebase AI Logic (firebasevertexai.googleapis.com) doit être activée dans votre projet Firebase. En effet, les requêtes effectuées par les SDK Firebase AI Logic sont d'abord envoyées au serveur Firebase AI Logic, qui sert de passerelle proxy où la validation Firebase App Check a lieu avant que la requête ne soit autorisée à passer au backend de votre fournisseur"Gemini API" choisi et aux API pour accéder aux modèles Gemini et Imagen.