Check out what’s new from Firebase at Google I/O 2022. Learn more

Protégez les informations d'identification cloud de votre application Android Firebase ML

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 empêcher tout accès non autorisé à l'API.

Pour vos applications de production, vous vous assurerez 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.)

Ensuite, vous créerez une clé API de débogage uniquement que vous pourrez utiliser pour plus de commodité lors des tests et du développement.

1. Enregistrez vos applications de production avec Firebase

Tout d'abord, enregistrez vos applications de production auprès de Firebase.

  1. Assurez-vous que vous disposez des signatures SHA-1 de votre application. Reportez-vous à Authentification de votre client pour savoir comment procéder.

  2. Accédez à vos du projet dans la console Firebase, puis sélectionnez l'onglet Paramètres .

  3. Faites défiler jusqu'à la carte Vos applications , puis sélectionnez votre application Android.

  4. Ajoutez la signature SHA-1 de votre application aux informations de votre application.

2. Restreindre la portée de vos clés API

Ensuite, configurez vos clés API existantes pour interdire l'accès à l'API Cloud Vision :

  1. Ouvrez la page Identifiants de Google Cloud Console. Lorsque vous y êtes invité, sélectionnez votre projet.

  2. Pour chaque clé d'API existante dans la liste, ouvrez la vue d'édition.

  3. Dans la section Restrictions d'API , sélectionnez Restreindre la clé , puis ajoutez à la liste toutes les API auxquelles vous souhaitez que la clé d'API ait accès. Assurez-vous de ne pas inclure l'API Cloud Vision.

    Lorsque vous configurez les restrictions d'API d'une clé d'API , vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsque la section Restrictions d'API a la clé Ne pas restreindre sélectionnée, une clé d'API peut être utilisée pour accéder à n'importe quelle API activée pour le projet.

Désormais, vos clés API existantes n'accorderont pas l'accès aux services cloud ML, 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 des API supplémentaires à l'avenir, vous devez les ajouter à la liste des restrictions d'API pour la clé d'API applicable.

3. Créer et utiliser une clé API de débogage uniquement

Enfin, créez une nouvelle clé API à utiliser uniquement pour le développement. Firebase ML peut utiliser cette clé API pour accéder aux services Google Cloud dans des environnements où l'authentification des applications n'est pas possible, comme lors de l'exécution sur des émulateurs.

  1. Créez une clé API à utiliser pour le développement :

    1. Ouvrez la page Identifiants de Google Cloud Console. Lorsque vous y êtes invité, sélectionnez votre projet.

    2. Cliquez sur Créer des identifiants > Clé API et notez la nouvelle clé API. Cette clé permet l'accès à l'API à partir d'applications non authentifiées, alors gardez cette clé confidentielle .

  2. 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 :

    1. Si vous n'avez pas encore de manifeste de débogage, créez-en un en cliquant sur Fichier > Nouveau > Autre > Fichier manifeste Android et en sélectionnant debug dans les ensembles de sources cibles.

    2. Dans le 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>
      
  3. Dans votre application, configurez Firebase ML pour utiliser la correspondance d'empreintes digitales de certificat pour authentifier votre client en production et pour utiliser des clés API (la clé de débogage) uniquement dans les versions de débogage :

    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);

    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)

Prochaines étapes

Consultez la liste de contrôle de lancement pour savoir comment préparer le lancement de votre application lors de l'utilisation d'autres fonctionnalités de Firebase.