Protégez les identifiants cloud de votre application Firebase ML pour Android
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Si votre application Android utilise l'une des API Cloud de Firebase ML, avant de la lancer en production, vous devez prendre des mesures supplémentaires pour empêcher tout accès non autorisé à l'API.
Pour vos applications de production, vous devez vous assurer que seuls les clients authentifiés peuvent accéder aux services cloud. (Notez que seuls les appareils non rootés peuvent s'authentifier à l'aide de la méthode décrite.)
Vous allez ensuite créer une clé API réservée au débogage, que vous pourrez utiliser facilement lors des tests et du 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 d'avoir les signatures SHA-1 de votre application. Pour en savoir plus, consultez Authentifier votre client.
Accédez aux paramètres de votre projetsettings dans la console Firebase, puis sélectionnez l'onglet Paramètres.
Faites défiler l'écran jusqu'à la fiche Vos applications, puis sélectionnez votre application Android.
Ajoutez la signature SHA-1 de votre application à ses informations.
2. Restreindre le champ d'application de vos clés API
Ensuite, configurez vos clés API existantes pour interdire l'accès à l'API Cloud Vision :
Ouvrez la page Identifiants de la 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 de ne pas inclure l'API Cloud Vision.
Lorsque vous configurez les restrictions d'API d'une clé API, vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsqu'aucune restriction n'est sélectionnée dans la section Restrictions relatives aux API, une clé API peut être utilisée pour accéder à n'importe quelle API activée pour le projet.
Désormais, vos clés API existantes ne donneront pas accès aux services de ML cloud, mais chaque clé continuera de fonctionner pour toutes les API que vous avez ajoutées à sa liste de restrictions d'API.
Notez que si vous activez d'autres API à l'avenir, vous devrez les ajouter à la liste des restrictions d'API pour la clé API concernée.
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 utiliser cette clé API pour accéder aux services Google Cloud dans les environnements où l'authentification des applications 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 de la 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. Gardez-la donc confidentielle.
Pour vous assurer que la nouvelle clé API de débogage n'est pas divulguée avec votre application publiée, spécifiez la clé API de débogage dans un fichier manifeste Android utilisé uniquement pour les versions de débogage :
Si vous n'avez pas encore de fichier manifeste de débogage, créez-en un en cliquant sur File > New > Other > Android Manifest File (Fichier > Nouveau > Autre > Fichier manifeste Android), puis en sélectionnant debug dans les ensembles de sources cibles.
Dans le fichier manifeste de débogage, ajoutez la déclaration suivante :
Dans votre application, configurez Firebase ML pour utiliser la correspondance de l'empreinte du certificat afin d'authentifier votre client en production et pour utiliser les clés API (la clé de débogage) uniquement dans les versions de débogage :
Kotlin
valoptionsBuilder=FirebaseVisionCloudImageLabelerOptions.Builder()if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch()}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f)// ...// And lastly:valoptions=optionsBuilder.build()FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
FirebaseVisionCloudImageLabelerOptions.BuilderoptionsBuilder=newFirebaseVisionCloudImageLabelerOptions.Builder();if(!BuildConfig.DEBUG){// Requires physical, non-rooted device:optionsBuilder.enforceCertFingerprintMatch();}// Set other options. For example:optionsBuilder.setConfidenceThreshold(0.8f);// ...// And lastly:FirebaseVisionCloudImageLabelerOptionsoptions=optionsBuilder.build();FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
Consultez la checklist de lancement pour savoir comment préparer votre application au lancement lorsque vous utilisez d'autres fonctionnalités Firebase.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (UTC)."],[],[],null,["\u003cbr /\u003e\n\nIf your Android app uses one of Firebase ML's cloud APIs, before you launch your\napp in production, you should take some additional steps to prevent\nunauthorized API access.\n\nFor your production apps, you will ensure that only authenticated clients can\naccess cloud services. (Note that only non-rooted devices can authenticate using\nthe method described.)\n\nThen, you will create a debug-only API key that you can use for convenience\nduring testing and development.\n\n1. Register your production apps with Firebase\n\nFirst, register your production apps with Firebase.\n\n1. Make sure that you have your app's SHA-1 signatures. Refer to\n [Authenticating your client](//developers.google.com/android/guides/client-auth)\n to learn how.\n\n2. Go to your settings\n *Project settings* in the Firebase console, then select the *Settings*\n tab.\n\n3. Scroll down to the *Your apps* card, then select your Android app.\n\n4. Add your app's SHA-1 signature to your app's information.\n\n2. Restrict the scope of your API keys\n\nNext, configure your existing API keys to disallow access to the Cloud Vision\nAPI:\n\n1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n2. For each existing API key in the list, open the editing view.\n\n3. In the *API restrictions* section, select **Restrict key** , then add to the\n list all of the APIs to which you want the API key to have access. Make sure\n to ***not*** include the Cloud Vision API.\n\n When you configure an API key's *API restrictions* , you are explicitly\n declaring the APIs to which the key has access. **By default, when the *API\n restrictions* section has *Don't restrict key* selected, an API key can be\n used to access any API that is enabled for the project.**\n\nNow, your existing API keys will not grant access to cloud ML services, but each\nkey will continue to work for any APIs that you added to its *API restrictions*\nlist.\n\nNote that if you enable any additional APIs in the future, you must add them to\nthe *API restrictions* list for the applicable API key.\n\n3. Create and use a debug-only API key\n\nFinally, create a new API key to be used only for development. Firebase ML can\nuse this API key to access Google Cloud services in environments where app\nauthentication isn't possible, such as when running on emulators.\n\n1. Create a new API key to be used for development:\n\n 1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n 2. Click **Create credentials \\\u003e API key** and take note of the new API\n key. This key allows API access from unauthenticated apps, so\n **keep this key confidential**.\n\n2. To ensure the new debug API key is not leaked with your released app,\n specify the debug API key in an Android manifest file used only for debug\n builds:\n\n 1. If you don't already have a debug manifest, create one by clicking\n **File \\\u003e New \\\u003e Other \\\u003e Android Manifest File** and selecting `debug`\n from the target source sets.\n\n 2. In the debug manifest, add the following declaration:\n\n ```text\n \u003capplication\u003e\n \u003cmeta-data\n android:name=\"com.firebase.ml.cloud.ApiKeyForDebug\"\n android:value=\"your-debug-api-key\" /\u003e\n \u003c/application\u003e\n ```\n3. In your app, configure Firebase ML to use certificate fingerprint matching to\n authenticate your client in production and to use API keys---the debug\n key---only in debug builds:\n\n Kotlin \n\n ```kotlin\n val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch()\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f)\n // ...\n\n // And lastly:\n val options = optionsBuilder.build()\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/kotlin/MainActivity.kt#L30-L42\n ```\n\n Java \n\n ```java\n FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =\n new FirebaseVisionCloudImageLabelerOptions.Builder();\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch();\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f);\n // ...\n\n // And lastly:\n FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);https://github.com/firebase/snippets-android/blob/b694d4dbd411d31be39655f47691c3e9f3529b03/mlkit/app/src/main/java/com/google/firebase/example/mlkit/MainActivity.java#L30-L43\n ```\n\nNext steps\n\nSee the [launch checklist](/support/guides/launch-checklist) for information on\npreparing your app to launch when using other Firebase features."]]