Si votre application Android utilise l'une des API cloud de Firebase ML, avant de lancer votre application en production, vous devez prendre des mesures supplémentaires pour éviter tout accès non autorisé à l'API.
Pour vos applications de production, vous vous assurerez que seuls les clients authentifiés peuvent pour accéder aux services cloud. Notez que seuls les appareils qui ne sont pas en mode root peuvent s'authentifier à l'aide de la méthode décrite).
Ensuite, vous créerez une clé API réservée au débogage. Vous l'utiliserez pour plus de commodité. pendant les tests et le développement.
1. Enregistrer vos applications de production auprès de Firebase
Commencez par enregistrer vos applications de production auprès de Firebase.
Assurez-vous que vous disposez des signatures SHA-1 de votre application. Pour savoir comment procéder, consultez Authentifier votre client.
Accédez à votre Firebase, puis sélectionnez Paramètres .
Paramètres du projet dans la consoleFaites défiler l'écran vers le bas jusqu'à la fiche Vos applications, puis sélectionnez votre application Android.
Ajoutez la signature SHA-1 de votre application aux informations de votre application.
2. Limiter le champ d'application de vos clés API
Configurez ensuite vos clés API existantes pour interdire l'accès à Cloud Vision. API:
Ouvrez la page Identifiants du Console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.
Pour chaque clé API existante dans la liste, ouvrez la vue d'édition.
Dans la section Restrictions relatives aux API, sélectionnez Restreindre la clé, puis ajoutez à la liste toutes les API auxquelles vous souhaitez que la clé API ait accès. Assurez-vous que de ne pas inclure l'API Cloud Vision.
Lorsque vous configurez les restrictions d'API d'une clé API, vous êtes explicitement en déclarant les API auxquelles la clé a accès. Par défaut, lorsque l'API restrictions dispose de l'option Ne pas restreindre la clé, une clé API peut être utilisé pour accéder à toute API activée pour le projet.
Vos clés API existantes n'accorderont pas l'accès aux services de ML cloud, mais chaque clé continue de fonctionner pour toutes les API que vous avez ajoutées à ses restrictions d'API. liste.
Notez que si vous activez d'autres API à l'avenir, vous devrez les ajouter la liste des restrictions d'API pour la clé API applicable.
3. Créer et utiliser une clé API réservée au débogage
Enfin, créez une clé API à utiliser uniquement pour le développement. Firebase ML peut utilisez cette clé API pour accéder aux services Google Cloud dans les environnements où l'application l'authentification n'est pas possible, par exemple lors de l'exécution sur des émulateurs.
Créez une clé API à utiliser pour le développement:
Ouvrez la page Identifiants du Console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.
Cliquez sur Créer des identifiants > Clé API et notez la nouvelle clé API. Cette clé permet d'accéder à l'API à partir d'applications non authentifiées. garder cette clé confidentielle.
Pour vous assurer que la nouvelle clé API de débogage n'est pas divulguée avec votre application publiée, procédez comme suit : spécifier la clé API de débogage dans un fichier manifeste Android utilisé uniquement pour le débogage ; compilations:
Si vous ne disposez pas encore d'un fichier manifeste de débogage, créez-en un en cliquant sur Fichier > Nouveau > Autre > Fichier manifeste Android et sélectionnez
debug
à partir des ensembles de sources cibles.Dans le fichier manifeste de débogage, ajoutez la déclaration suivante:
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="your-debug-api-key" /> </application>
Dans votre application, configurez Firebase ML pour utiliser la mise en correspondance de l'empreinte de certificat afin d'authentifier votre client en production et d'utiliser des clés API (la clé de débogage) uniquement dans les builds de débogage :
Kotlin+KTX
val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder() if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch() } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f) // ... // And lastly: val options = optionsBuilder.build() FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
Java
FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder = new FirebaseVisionCloudImageLabelerOptions.Builder(); if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch(); } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f); // ... // And lastly: FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build(); FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
Étapes suivantes
Consultez la checklist avant lancement pour en savoir plus sur à préparer le lancement de votre application lorsque vous utilisez d'autres fonctionnalités Firebase.